aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/interface.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2015-02-18 20:35:32 -0500
committerPaul Gilbert2015-02-18 20:35:32 -0500
commit0f78fb9373b8c4befd727e9e56faf5d30ac59cff (patch)
tree0f4a9a85f3497ff2e75501deca7f2cb324f9d1cc /engines/xeen/interface.cpp
parent6a7fd1952d62ce0bf44a426aba061ecc85183168 (diff)
downloadscummvm-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.cpp28
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;
}