diff options
author | Paul Gilbert | 2015-02-28 20:43:07 -0500 |
---|---|---|
committer | Paul Gilbert | 2015-02-28 20:43:07 -0500 |
commit | 9789962605a30e8a993370d3de3c1a30582f3964 (patch) | |
tree | 7ff0a1750bfd15b9232e9448344790d747f52304 /engines/xeen/spells.cpp | |
parent | b414ff26f2319e4d88c60f1b0fb58880926da5f0 (diff) | |
download | scummvm-rg350-9789962605a30e8a993370d3de3c1a30582f3964.tar.gz scummvm-rg350-9789962605a30e8a993370d3de3c1a30582f3964.tar.bz2 scummvm-rg350-9789962605a30e8a993370d3de3c1a30582f3964.zip |
XEEN: Implemented protection from elements spell
Diffstat (limited to 'engines/xeen/spells.cpp')
-rw-r--r-- | engines/xeen/spells.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/engines/xeen/spells.cpp b/engines/xeen/spells.cpp index 1e883e7dda..b2b477e54d 100644 --- a/engines/xeen/spells.cpp +++ b/engines/xeen/spells.cpp @@ -388,7 +388,35 @@ void Spells::suppressPoison() { } void Spells::protectionFromElements() { - error("TODO: spell"); + Combat &combat = *_vm->_combat; + Interface &intf = *_vm->_interface; + Party &party = *_vm->_party; + SoundManager &sound = *_vm->_sound; + Character &c = *combat._oldCharacter; + int resist = MIN(c.getCurrentLevel() * 2 + 5, (uint)200); + + int elementType = SelectElement::show(_vm, MS_ProtFromElements); + if (elementType != -1) { + switch (elementType) { + case DT_FIRE: + party._fireResistence = resist; + break; + case DT_ELECTRICAL: + party._fireResistence = resist; + break; + case DT_COLD: + party._coldResistence = resist; + break; + case DT_POISON: + party._poisonResistence = resist; + break; + default: + break; + } + + sound.playFX(20); + intf.drawParty(true); + } } void Spells::pain() { |