aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/spells.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2015-02-28 20:43:07 -0500
committerPaul Gilbert2015-02-28 20:43:07 -0500
commit9789962605a30e8a993370d3de3c1a30582f3964 (patch)
tree7ff0a1750bfd15b9232e9448344790d747f52304 /engines/xeen/spells.cpp
parentb414ff26f2319e4d88c60f1b0fb58880926da5f0 (diff)
downloadscummvm-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.cpp30
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() {