diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/kyra/staticres_eob.cpp | 78 |
1 files changed, 61 insertions, 17 deletions
diff --git a/engines/kyra/staticres_eob.cpp b/engines/kyra/staticres_eob.cpp index 88bfbd8f08..557bacb239 100644 --- a/engines/kyra/staticres_eob.cpp +++ b/engines/kyra/staticres_eob.cpp @@ -942,22 +942,66 @@ void EobEngine::initStaticResource() { void EobEngine::initSpells() { EobCoreEngine::initSpells(); - static const uint32 eflags[] = { - 0x0000, 0x0001, 0x0000, 0x0002, 0x0000, 0x0000, 0x0008, 0x0000, 0x0040, 0x0000, - 0x0000, 0x0000 /*stinking cloud*/, 0x0000, 0x0000, 0x0000 /*flame arrow*/, 0x10000,0x0000, 0x0040, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000 /*stone skin*/, 0x0000 /*cloud kill*/, 0x0000, 0x0000, 0x0400, 0x0000, 0x0000, 0x0002, - 0x0800, 0x0000, 0x0000, 0x0000, 0x2000, 0x0000, 0x0000, 0x4000, 0x8000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0800, 0x0000 /*Prot From Lightning*/, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000 + struct FlagTableEntry { + uint16 typeFlag; + uint32 effectFlag; + uint8 damageFlag; }; - static const uint8 dflags[] = { - 0x00, 0x00, 0x21, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x11, 0x00 /*stinking cloud*/, 0x00, 0x21, 0x11 /*flame arrow*/, 0x00, 0x00, 0x00, 0x03, 0x01, - 0x00, 0x41, 0x00 /*stone skin*/, 0x00 /*cloud kill*/, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00 /*Prot From Lightning*/, 0x00, 0x01, 0x21, 0x00, 0x00, - 0x00, 0x00, 0x00 + static const FlagTableEntry flagTable[] = { + { 0x0000, 0x000000, 0x00 }, // dummy + { 0x0033, 0x000001, 0x00 }, // armor + { 0x0100, 0x000000, 0x21 }, // burning hands + { 0x004c, 0x000002, 0x00 }, // detect magic + { 0x0100, 0x000000, 0x01 }, // magic missile + { 0x0000, 0x000000, 0x00 }, // dummy + { 0x008b, 0x000008, 0x00 }, // shield + { 0x0488, 0x000000, 0x03 }, // shocking grasp + { 0x0021, 0x000040, 0x00 }, // invisibility + { 0x0000, 0x000000, 0x00 }, // dummy + { 0x0100, 0x000000, 0x11 }, // melf's acid arrow + { 0x0000, 0x000000, 0x00 }, // STINKING CLOUD + { 0x1000, 0x000000, 0x00 }, // dispel magic + { 0x0100, 0x000000, 0x21 }, // fireball + { 0x0100, 0x000000, 0x11 }, // FLAME ARROW + { 0x0248, 0x010000, 0x00 }, // haste + { 0x0100, 0x000000, 0x00 }, // hold person + { 0x0240, 0x000040, 0x00 }, // inv 10' + { 0x0100, 0x000000, 0x03 }, // lightning bolt + { 0x0488, 0x000000, 0x01 }, // vampiric touch + { 0x0100, 0x000000, 0x00 }, // fear + { 0x0100, 0x000000, 0x41 }, // ice storm + { 0x0000, 0x000000, 0x00 }, // STONE SKIN + { 0x0000, 0x000000, 0x00 }, // CLOUD KILL + { 0x0100, 0x000000, 0x41 }, // cone of cold + { 0x0100, 0x000000, 0x00 }, // hold monster + { 0x005c, 0x000400, 0x00 }, // bless + { 0x0020, 0x000000, 0x00 }, // cure light wounds + { 0x0100, 0x000000, 0x01 }, // cause light wounds + { 0x004c, 0x000002, 0x00 }, // detect magic + { 0x0029, 0x000800, 0x00 }, // prot from evil + { 0x0039, 0x000000, 0x00 }, // aid + { 0x2408, 0x000000, 0x21 }, // flame blade + { 0x0100, 0x000000, 0x00 }, // hold person + { 0x0028, 0x002000, 0x00 }, // slow poison + { 0x0040, 0x000000, 0x00 }, // create food + { 0x1000, 0x000000, 0x00 }, // dispel magic + { 0x0099, 0x004000, 0x00 }, // magical vestment + { 0x004c, 0x008000, 0x00 }, // prayer + { 0x0040, 0x000000, 0x00 }, // remove paralysis + { 0x0020, 0x000000, 0x00 }, // cure serious + { 0x0100, 0x000000, 0x01 }, // cause serious + { 0x0020, 0x000000, 0x00 }, // neutralize poison + { 0x0248, 0x000800, 0x00 }, // prot from evil 10' + { 0x0000, 0x000000, 0x00 }, // PROT FROM LIGHTNING + { 0x0020, 0x000000, 0x00 }, // cure critical + { 0x0100, 0x000000, 0x01 }, // cause critical + { 0x0100, 0x000000, 0x21 }, // flame strike + { 0x0020, 0x000000, 0x00 }, // raise dead + { 0x0020, 0x000000, 0x00 }, // lay on hands + { 0x0000, 0x000000, 0x00 }, // obj hit passive + { 0x0000, 0x000000, 0x00 }, // disintegrate passive + { 0x0000, 0x000000, 0x00 } // death spell passive }; int temp; @@ -967,9 +1011,9 @@ void EobEngine::initSpells() { for (int i = 0; i < _numSpells; i++) { EobSpell *s = &_spells[i]; src += 4; - s->flags = convertSpellFlagToEob2Format(src[0], src[14]); - s->damageFlags = dflags[i]; - s->effectFlags = eflags[i]; + s->flags = flagTable[i].typeFlag;/*convertSpellFlagToEob2Format(src[0], src[14]);*/ + s->damageFlags = flagTable[i].damageFlag; + s->effectFlags = flagTable[i].effectFlag; s->sound = src[13]; src += 15; } |