aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra
diff options
context:
space:
mode:
authorathrxx2011-05-14 16:41:15 +0200
committerJohannes Schickel2011-12-26 16:18:10 +0100
commitff8a030c379e70d9f90ece071ff9a63495db36cf (patch)
treef2c889adef3613b3f084d2bc383f4e81ed628e90 /engines/kyra
parent540d081a6fd4daa31f746ddf30ccc91fb88ea04b (diff)
downloadscummvm-rg350-ff8a030c379e70d9f90ece071ff9a63495db36cf.tar.gz
scummvm-rg350-ff8a030c379e70d9f90ece071ff9a63495db36cf.tar.bz2
scummvm-rg350-ff8a030c379e70d9f90ece071ff9a63495db36cf.zip
KYRA: (EOB) - fix EOB1 spell definitions
Diffstat (limited to 'engines/kyra')
-rw-r--r--engines/kyra/staticres_eob.cpp78
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;
}