diff options
author | athrxx | 2011-09-29 22:51:36 +0200 |
---|---|---|
committer | Johannes Schickel | 2011-12-26 16:18:15 +0100 |
commit | 1cbd56693086afa8ce93092c3638e1052e31a5d9 (patch) | |
tree | 688d790cc5372ca9d2718ebc46c7a852bd6ac673 /engines/kyra/items_eob.cpp | |
parent | ac1aa43ca8b2ad9f2743006a5e40a7967a40fec5 (diff) | |
download | scummvm-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.cpp | 16 |
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 { |