diff options
Diffstat (limited to 'engines/xeen/spells.cpp')
-rw-r--r-- | engines/xeen/spells.cpp | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/engines/xeen/spells.cpp b/engines/xeen/spells.cpp index 25aae11af2..53c43b5233 100644 --- a/engines/xeen/spells.cpp +++ b/engines/xeen/spells.cpp @@ -198,10 +198,41 @@ void Spells::addSpellCost(Character &c, int spellId) { party._gems += gemCost; } +void Spells::light() { + Interface &intf = *_vm->_interface; + Party &party = *_vm->_party; + SoundManager &sound = *_vm->_sound; + + ++party._lightCount; + if (intf._intrIndex1) + party._stepped = true; + sound.playFX(39); +} + +void Spells::awaken() { + Interface &intf = *_vm->_interface; + Party &party = *_vm->_party; + SoundManager &sound = *_vm->_sound; + + for (uint idx = 0; idx < party._activeParty.size(); ++idx) { + Character &c = party._activeParty[idx]; + c._conditions[ASLEEP] = 0; + if (c._currentHp > 0) + c._conditions[UNCONSCIOUS] = 0; + } + + intf.drawParty(true); + sound.playFX(30); +} + +void Spells::magicArrow() { + Combat &combat = *_vm->_combat; + combat._monsterDamage = 0; + combat._damageType = DT_MAGIC_ARROW; + combat._rangeType = RT_SINGLE; + combat.multiAttack(11); +} -void Spells::light() { error("TODO: spell"); } -void Spells::awaken() { error("TODO: spell"); } -void Spells::magicArrow() { error("TODO: spell"); } void Spells::firstAid() { error("TODO: spell"); } void Spells::flyingFist() { error("TODO: spell"); } void Spells::energyBlast() { error("TODO: spell"); } |