aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/items_eob.cpp
diff options
context:
space:
mode:
authorathrxx2011-09-29 22:51:36 +0200
committerJohannes Schickel2011-12-26 16:18:15 +0100
commit1cbd56693086afa8ce93092c3638e1052e31a5d9 (patch)
tree688d790cc5372ca9d2718ebc46c7a852bd6ac673 /engines/kyra/items_eob.cpp
parentac1aa43ca8b2ad9f2743006a5e40a7967a40fec5 (diff)
downloadscummvm-rg350-1cbd56693086afa8ce93092c3638e1052e31a5d9.tar.gz
scummvm-rg350-1cbd56693086afa8ce93092c3638e1052e31a5d9.tar.bz2
scummvm-rg350-1cbd56693086afa8ce93092c3638e1052e31a5d9.zip
KYRA: (EOB) - fix invalid string access
(also fix several cpp-check warnings)
Diffstat (limited to 'engines/kyra/items_eob.cpp')
-rw-r--r--engines/kyra/items_eob.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/engines/kyra/items_eob.cpp b/engines/kyra/items_eob.cpp
index 96b19a9f93..44f3a7ef3d 100644
--- a/engines/kyra/items_eob.cpp
+++ b/engines/kyra/items_eob.cpp
@@ -461,12 +461,18 @@ void EobCoreEngine::drawItemIconShape(int pageNum, Item itemId, int x, int y) {
int icn = _items[itemId].icon;
bool applyBluePal = ((_partyEffectFlags & 2) && (_items[itemId].flags & 0x80)) ? true : false;
+ memcpy(_tempIconShape, _itemIconShapes[icn], _itemIconShapes[icn][1] * _itemIconShapes[icn][2] * 4 + 20);
+
if (applyBluePal) {
- _screen->setFadeTableIndex(3);
- _screen->setShapeFadeMode(1, true);
+ if (_flags.gameID == GI_EOB1) {
+ _screen->replaceShapePalette(_tempIconShape, &_itemsOverlay[icn << 4]);
+ } else {
+ _screen->setFadeTableIndex(3);
+ _screen->setShapeFadeMode(1, true);
+ }
}
- _screen->drawShape(pageNum, _itemIconShapes[icn], x, y, 0);
+ _screen->drawShape(pageNum, _tempIconShape, x, y, 0);
if (applyBluePal) {
_screen->setFadeTableIndex(4);
@@ -491,8 +497,8 @@ void EobCoreEngine::eatItemInHand(int charIndex) {
EobCharacter *c = &_characters[charIndex];
if (!testCharacter(charIndex, 5)) {
_txt->printMessage(_warningStrings[1], -1, c->name);
- } else if (_itemInHand && _items[_itemInHand].type != 31) {
- _txt->printMessage(_warningStrings[3]);
+ } else if (_itemInHand && _items[_itemInHand].type != 31 && !(_flags.gameID == GI_EOB1 && _items[_itemInHand].type == 49)) {
+ _txt->printMessage(_warningStrings[_flags.gameID == GI_EOB1 ? 2 : 3]);
} else if (_items[_itemInHand].value == -1) {
printWarning(_warningStrings[2]);
} else {