diff options
author | athrxx | 2011-08-21 20:26:07 +0200 |
---|---|---|
committer | Johannes Schickel | 2011-12-26 16:18:14 +0100 |
commit | 2448d885e4e331a22e1e468277142155a5ddda87 (patch) | |
tree | 98584a9a40a940da8cfd2b21bbc68e9b24d2a925 /engines/kyra/magic_eob.cpp | |
parent | c35de374dfe545ffc5044a00a247c5814e3b250e (diff) | |
download | scummvm-rg350-2448d885e4e331a22e1e468277142155a5ddda87.tar.gz scummvm-rg350-2448d885e4e331a22e1e468277142155a5ddda87.tar.bz2 scummvm-rg350-2448d885e4e331a22e1e468277142155a5ddda87.zip |
KYRA: (EOB) - complete EOBII playability
- fixed temp data generation, block data loading, some spell issues, etc.
- both EOB I and II should now be completable
- one big issue remaining (AdLib driver gets swamped with monster sounds which causes heavy lags in some levels)
Diffstat (limited to 'engines/kyra/magic_eob.cpp')
-rw-r--r-- | engines/kyra/magic_eob.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/engines/kyra/magic_eob.cpp b/engines/kyra/magic_eob.cpp index 0424558b04..9063d512f0 100644 --- a/engines/kyra/magic_eob.cpp +++ b/engines/kyra/magic_eob.cpp @@ -236,8 +236,14 @@ void EobCoreEngine::removeCharacterEffect(int spell, int charIndex, int showWarn EobCharacter *c = &_characters[charIndex]; EobSpell *s = &_spells[spell]; - if (showWarning) + if (showWarning) { + int od = _screen->curDimIndex(); + Screen::FontId of = _screen->setFont(Screen::FID_6_FNT); + _screen->setScreenDim(7); printWarning(Common::String::format(_magicStrings3[_flags.gameID == GI_EOB1 ? 3 : 2], c->name, s->name).c_str()); + _screen->setScreenDim(od); + _screen->setFont(of); + } if (s->endCallback) (this->*s->endCallback)(c); @@ -1281,12 +1287,12 @@ void EobCoreEngine::spellCallback_start_turnUndead() { _preventMonsterFlash = false; } -bool EobCoreEngine::spellCallback_end_lightningBoltPassive(void *obj) { +bool EobCoreEngine::spellCallback_end_monster_lightningBolt(void *obj) { EobFlyingObject *fo = (EobFlyingObject*)obj; return magicObjectDamageHit(fo, 0, 0, 12, 1); } -bool EobCoreEngine::spellCallback_end_unk1Passive(void *obj) { +bool EobCoreEngine::spellCallback_end_monster_fireball1(void *obj) { EobFlyingObject *fo = (EobFlyingObject*)obj; bool res = false; if (_partyEffectFlags & 0x20000) { @@ -1301,12 +1307,12 @@ bool EobCoreEngine::spellCallback_end_unk1Passive(void *obj) { return res; } -bool EobCoreEngine::spellCallback_end_unk2Passive(void *obj) { +bool EobCoreEngine::spellCallback_end_monster_fireball2(void *obj) { EobFlyingObject *fo = (EobFlyingObject*)obj; return magicObjectDamageHit(fo, 0, 0, 18, 0); } -bool EobCoreEngine::spellCallback_end_deathSpellPassive(void *obj) { +bool EobCoreEngine::spellCallback_end_monster_deathSpell(void *obj) { EobFlyingObject *fo = (EobFlyingObject*)obj; if (fo->curBlock != _currentBlock) return false; @@ -1323,7 +1329,7 @@ bool EobCoreEngine::spellCallback_end_deathSpellPassive(void *obj) { return true; } -bool EobCoreEngine::spellCallback_end_disintegratePassive(void *obj) { +bool EobCoreEngine::spellCallback_end_monster_disintegrate(void *obj) { EobFlyingObject *fo = (EobFlyingObject*)obj; if (fo->curBlock != _currentBlock) return false; @@ -1339,7 +1345,7 @@ bool EobCoreEngine::spellCallback_end_disintegratePassive(void *obj) { return true; } -bool EobCoreEngine::spellCallback_end_causeCriticalWoundsPassive(void *obj) { +bool EobCoreEngine::spellCallback_end_monster_causeCriticalWounds(void *obj) { EobFlyingObject *fo = (EobFlyingObject*)obj; if (fo->curBlock != _currentBlock) return false; @@ -1353,7 +1359,7 @@ bool EobCoreEngine::spellCallback_end_causeCriticalWoundsPassive(void *obj) { return true; } -bool EobCoreEngine::spellCallback_end_fleshToStonePassive(void *obj) { +bool EobCoreEngine::spellCallback_end_monster_fleshToStone(void *obj) { EobFlyingObject *fo = (EobFlyingObject*)obj; if (fo->curBlock != _currentBlock) return false; |