XEEN: Add special case spell handling during combat

This commit is contained in:
Paul Gilbert 2015-02-18 21:17:55 -05:00
parent 0f78fb9373
commit da368f5e00
2 changed files with 14 additions and 4 deletions

View File

@ -527,8 +527,10 @@ void Interface::perform() {
}
int result = 0;
Character *c = &party._activeParty[(spells._lastCaster < 0 ||
spells._lastCaster >= (int)party._activeParty.size()) ?
(int)party._activeParty.size() - 1 : spells._lastCaster];
do {
Character *c = nullptr;
int spellId = CastSpell::show(_vm, c, _vm->_mode);
if (spellId == -1 || c == nullptr)
break;

View File

@ -126,13 +126,21 @@ int Spells::castSpell(Character *c, int spellId) {
} else {
// Some spells have special handling
switch (spellId) {
case 19:
// Enchant item
case 19: // Enchant item
case 21: // Etherialize
case 40: // Jump
case 44: // Lloyd's Beacon
case 66: // Super Shelter
case 69: // Teleport
case 71: // Town Portal
case 75: // Wizard Eye
if (_vm->_mode != MODE_COMBAT) {
enchantItem();
executeSpell(spellId);
} else {
// Return the spell costs and flag that another spell can be selected
addSpellCost(*c, spellId);
ErrorDialog::show(_vm, Common::String::format(CANT_CAST_WHILE_ENGAGED,
_spellNames[spellId]));
result = -1;
}
break;