diff options
author | Paul Gilbert | 2015-02-18 20:35:32 -0500 |
---|---|---|
committer | Paul Gilbert | 2015-02-18 20:35:32 -0500 |
commit | 0f78fb9373b8c4befd727e9e56faf5d30ac59cff (patch) | |
tree | 0f4a9a85f3497ff2e75501deca7f2cb324f9d1cc /engines/xeen/interface.cpp | |
parent | 6a7fd1952d62ce0bf44a426aba061ecc85183168 (diff) | |
download | scummvm-rg350-0f78fb9373b8c4befd727e9e56faf5d30ac59cff.tar.gz scummvm-rg350-0f78fb9373b8c4befd727e9e56faf5d30ac59cff.tar.bz2 scummvm-rg350-0f78fb9373b8c4befd727e9e56faf5d30ac59cff.zip |
XEEN: Implement extra code for passing active character to castSpell
Diffstat (limited to 'engines/xeen/interface.cpp')
-rw-r--r-- | engines/xeen/interface.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp index 3bd3ef12b6..7efc7a7068 100644 --- a/engines/xeen/interface.cpp +++ b/engines/xeen/interface.cpp @@ -521,9 +521,25 @@ void Interface::perform() { case Common::KEYCODE_c: { // Cast spell - int spellId = CastSpell::show(_vm, _vm->_mode); - if (spellId != -1) - spells.castSpell(spellId); + if (_tillMove) { + combat.moveMonsters(); + draw3d(true); + } + + int result = 0; + do { + Character *c = nullptr; + int spellId = CastSpell::show(_vm, c, _vm->_mode); + if (spellId == -1 || c == nullptr) + break; + + result = spells.castSpell(c, spellId); + } while (result != -1); + + if (result == 1) { + chargeStep(); + doStepCode(); + } break; } @@ -1952,8 +1968,10 @@ void Interface::doCombat() { case Common::KEYCODE_c: { // Cast spell int spellId = CastSpell::show(_vm, _vm->_mode); - if (spellId != -1) - spells.castSpell(spellId); + if (spellId != -1) { + Character *c = combat._combatParty[combat._whosTurn]; + spells.castSpell(c, spellId); + } break; } |