[Scummvm-git-logs] scummvm master -> 9a9f2e3fafed2e76273093d0b0a35819f79867b0
dreammaster
noreply at scummvm.org
Wed Aug 16 03:11:27 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
9a9f2e3faf MM: MM1: Fixes for casting energy blast (and other iterative spells)
Commit: 9a9f2e3fafed2e76273093d0b0a35819f79867b0
https://github.com/scummvm/scummvm/commit/9a9f2e3fafed2e76273093d0b0a35819f79867b0
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-08-15T20:11:13-07:00
Commit Message:
MM: MM1: Fixes for casting energy blast (and other iterative spells)
Changed paths:
engines/mm/mm1/data/spells_state.h
engines/mm/mm1/game/combat.cpp
engines/mm/mm1/game/spells_monsters.cpp
engines/mm/mm1/game/spells_party.cpp
diff --git a/engines/mm/mm1/data/spells_state.h b/engines/mm/mm1/data/spells_state.h
index df567b28d94..579d107ecf8 100644
--- a/engines/mm/mm1/data/spells_state.h
+++ b/engines/mm/mm1/data/spells_state.h
@@ -29,10 +29,13 @@ namespace MM {
namespace MM1 {
struct SpellsState {
- byte _mmVal1 = 0, _mmVal2 = 0;
+ byte _mmVal1 = 0;
+ byte _resistenceIndex = 0;
byte _mmVal5 = 0;
byte _mmVal7 = 0;
- byte _resistanceType = RESISTANCE_MAGIC;
+
+ // This can hold both a resistence type, or count of monsters to affect
+ byte _resistanceTypeOrTargetCount = RESISTANCE_MAGIC;
// TODO: Is this variable different in different contexts?
// In some places it's used to hold a new condition,
@@ -44,10 +47,10 @@ struct SpellsState {
*/
void synchronize(Common::Serializer &s) {
s.syncAsByte(_mmVal1);
- s.syncAsByte(_mmVal2);
+ s.syncAsByte(_resistenceIndex);
s.syncAsByte(_mmVal5);
s.syncAsByte(_mmVal7);
- s.syncAsByte(_resistanceType);
+ s.syncAsByte(_resistanceTypeOrTargetCount);
s.syncAsByte(_damage);
}
};
diff --git a/engines/mm/mm1/game/combat.cpp b/engines/mm/mm1/game/combat.cpp
index 44fb096b8d2..46c05fe8ded 100644
--- a/engines/mm/mm1/game/combat.cpp
+++ b/engines/mm/mm1/game/combat.cpp
@@ -899,15 +899,14 @@ void Combat::addAttackDamage() {
}
void Combat::updateMonsterStatus() {
- Encounter &enc = g_globals->_encounters;
- int val = enc._monsterList[_monsterIndex]._hp - _damage;
+ int val = _monsterP->_hp - _damage;
if (val <= 0) {
- enc._monsterList[_monsterIndex]._hp = 0;
- enc._monsterList[_monsterIndex]._status = MONFLAG_DEAD;
+ _monsterP->_hp = 0;
+ _monsterP->_status = MONFLAG_DEAD;
} else {
- enc._monsterList[_monsterIndex]._hp = val;
- enc._monsterList[_monsterIndex]._status &= ~(MONFLAG_ASLEEP | MONFLAG_HELD);
+ _monsterP->_hp = val;
+ _monsterP->_status &= ~(MONFLAG_ASLEEP | MONFLAG_HELD);
}
}
@@ -928,16 +927,17 @@ bool Combat::monsterTouch(Common::String &line) {
}
void Combat::iterateMonsters1() {
+ _destMonsterNum = 0;
_spellMonsterCount = _remainingMonsters.size();
iterateMonsters1Inner();
}
void Combat::iterateMonsters1Inner() {
- Encounter &enc = g_globals->_encounters;
Common::String line1 = Common::String::format("%s %s",
g_globals->_currCharacter->_name,
STRING["spells.casts_spell"].c_str());
+ _monsterP = _remainingMonsters[_destMonsterNum];
const Common::String monsterName = _monsterP->_name;
bool affects = !monsterLevelThreshold();
if (affects) {
@@ -947,7 +947,7 @@ void Combat::iterateMonsters1Inner() {
}
}
- byte idx = g_globals->_spellsState._mmVal2;
+ byte idx = g_globals->_spellsState._resistenceIndex;
if (affects && idx) {
if (--idx >= 8)
idx = 0;
@@ -963,8 +963,7 @@ void Combat::iterateMonsters1Inner() {
effect = STRING["monster_spells.not_affected"];
} else {
- enc._monsterList[getMonsterIndex()]._status |=
- g_globals->_spellsState._damage;
+ _monsterP->_status |= g_globals->_spellsState._damage;
byte bits = g_globals->_spellsState._damage;
int effectNum;
@@ -983,16 +982,18 @@ void Combat::iterateMonsters1Inner() {
monsterName.c_str(), effect.c_str()
));
+ updateMonsterStatus();
+
msg._delaySeconds = 3;
- bool isEnd = !--g_globals->_spellsState._resistanceType;
+ bool isEnd = !--g_globals->_spellsState._resistanceTypeOrTargetCount;
if (!isEnd) {
++_destMonsterNum;
- if ((int)_spellMonsterCount <= _destMonsterNum)
- isEnd = true;
+ isEnd = _destMonsterNum >= (int)_remainingMonsters.size();
}
- if (!isEnd)
- isEnd = (int)((int)_remainingMonsters.size() + _destMonsterNum - _spellMonsterCount) < 0;
+// TODO: This may not be needed in ScummVM implementation
+// if (!isEnd)
+// isEnd = (int)((int)_remainingMonsters.size() + _destMonsterNum - _spellMonsterCount) < 0;
if (!isEnd) {
// Move to next iteration after display timeout
@@ -1005,15 +1006,17 @@ void Combat::iterateMonsters1Inner() {
}
void Combat::iterateMonsters2() {
+ _destMonsterNum = 0;
_spellMonsterCount = _remainingMonsters.size();
iterateMonsters2Inner();
}
void Combat::iterateMonsters2Inner() {
- Encounter &enc = g_globals->_encounters;
Common::String line1 = Common::String::format("%s %s",
g_globals->_currCharacter->_name,
STRING["spells.casts_spell"].c_str());
+
+ _monsterP = _remainingMonsters[_destMonsterNum];
const Common::String monsterName = _monsterP->_name;
_damage = g_globals->_spellsState._damage;
@@ -1026,7 +1029,7 @@ void Combat::iterateMonsters2Inner() {
_damage >>= 1;
}
- byte idx = g_globals->_spellsState._mmVal2;
+ byte idx = g_globals->_spellsState._resistenceIndex;
if (idx) {
if (--idx >= 8)
idx = 0;
@@ -1062,21 +1065,24 @@ void Combat::iterateMonsters2Inner() {
msg._lines.push_back(Line(0, 1, line2));
- if (_damage >= enc._monsterList[getMonsterIndex()]._hp) {
+ if (_damage >= _monsterP->_hp) {
msg._lines.push_back(Line(0, 2, STRING["dialogs.combat.and_goes_down"]));
}
}
+ updateMonsterStatus();
+
msg._delaySeconds = 3;
- bool isEnd = !--g_globals->_spellsState._resistanceType;
+ bool isEnd = !--g_globals->_spellsState._resistanceTypeOrTargetCount;
if (!isEnd) {
++_destMonsterNum;
- if ((int)_spellMonsterCount <= _destMonsterNum)
+ if (_destMonsterNum >= (int)_remainingMonsters.size())
isEnd = true;
}
- if (!isEnd)
- isEnd = (int)((int)_remainingMonsters.size() + _destMonsterNum - _spellMonsterCount) < 0;
+ // TODO: Is this needed with ScummVM's cleaner _remainingMonsters array?
+ // if (!isEnd)
+ // isEnd = (int)((int)_remainingMonsters.size() + _destMonsterNum - _spellMonsterCount) < 0;
if (!isEnd) {
// Move to next iteration after display timeout
@@ -1101,7 +1107,7 @@ void Combat::resetDestMonster() {
_destMonsterNum = 0;
_monsterP = _remainingMonsters[0];
monsterIndexOf();
- g_globals->_spellsState._resistanceType = RESISTANCE_15;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_15;
}
void Combat::spellFailed() {
@@ -1164,8 +1170,8 @@ void Combat::summonLightning() {
ss._damage = g_globals->_currCharacter->_level * 2 + 4;
ss._mmVal1++;
- ss._mmVal2++;
- ss._resistanceType = RESISTANCE_ELECTRICITY;
+ ss._resistenceIndex++;
+ ss._resistanceTypeOrTargetCount = RESISTANCE_ELECTRICITY;
handlePartyDamage();
InfoMessage msg(0, 0, line1);
@@ -1182,8 +1188,8 @@ void Combat::summonLightning() {
void Combat::summonLightning2() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1 = 1;
- ss._mmVal2 = 2;
- ss._resistanceType = RESISTANCE_ELECTRICITY;
+ ss._resistenceIndex = 2;
+ ss._resistanceTypeOrTargetCount = RESISTANCE_ELECTRICITY;
ss._damage = getRandomNumber(29) + 3;
iterateMonsters2();
@@ -1192,8 +1198,8 @@ void Combat::summonLightning2() {
void Combat::fireball2() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1 = 1;
- ss._mmVal2 = 1;
- ss._resistanceType = 5;
+ ss._resistenceIndex = 1;
+ ss._resistanceTypeOrTargetCount = 5;
ss._damage = 0;
levelAdjust();
@@ -1212,8 +1218,8 @@ void Combat::paralyze() {
g_globals->_combat->resetDestMonster();
ss._mmVal1++;
- ss._mmVal2 = 6;
- ss._resistanceType = _attackersCount;
+ ss._resistenceIndex = 6;
+ ss._resistanceTypeOrTargetCount = _attackersCount;
ss._damage = BAD_CONDITION;
iterateMonsters1();
@@ -1322,8 +1328,8 @@ void Combat::fireball() {
ss._damage = g_globals->_currCharacter->_level * 2 + 4;
ss._mmVal1++;
- ss._mmVal2++;
- ss._resistanceType++;
+ ss._resistenceIndex++;
+ ss._resistanceTypeOrTargetCount++;
handlePartyDamage();
InfoMessage msg(0, 0, line1);
@@ -1340,8 +1346,8 @@ void Combat::fireball() {
void Combat::lightningBolt() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._resistanceType = 3;
- ss._mmVal2 = 2;
+ ss._resistanceTypeOrTargetCount = 3;
+ ss._resistenceIndex = 2;
levelAdjust();
}
@@ -1378,8 +1384,8 @@ bool Combat::web() {
return false;
ss._mmVal1++;
- ss._mmVal2 = 0;
- ss._resistanceType = 5;
+ ss._resistenceIndex = 0;
+ ss._resistanceTypeOrTargetCount = 5;
ss._damage = UNCONSCIOUS;
iterateMonsters1();
@@ -1396,8 +1402,8 @@ bool Combat::acidRain() {
monsterIndexOf();
ss._mmVal1 = 1;
- ss._mmVal2 = 3;
- ss._resistanceType = 15;
+ ss._resistenceIndex = 3;
+ ss._resistanceTypeOrTargetCount = 15;
ss._damage = 0;
for (int i = 0; i < 5; ++i)
diff --git a/engines/mm/mm1/game/spells_monsters.cpp b/engines/mm/mm1/game/spells_monsters.cpp
index 9063f6f26fe..27b47ef1499 100644
--- a/engines/mm/mm1/game/spells_monsters.cpp
+++ b/engines/mm/mm1/game/spells_monsters.cpp
@@ -68,8 +68,8 @@ SpellsMonsters::SpellsMonsters() {
void SpellsMonsters::castMonsterSpell(const Common::String &monsterName, int spellNum) {
g_globals->_spellsState._mmVal1 = 0;
- g_globals->_spellsState._mmVal2 = 0;
- g_globals->_spellsState._resistanceType = RESISTANCE_MAGIC;
+ g_globals->_spellsState._resistenceIndex = 0;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_MAGIC;
g_globals->_spellsState._damage = 0;
// All spell messages start with the monster who casts it
@@ -100,8 +100,8 @@ void SpellsMonsters::spell03_fire() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.fire"].c_str()));
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_FIRE;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_FIRE;
int count = _remainingMonsters[getMonsterIndex()]->_level;
g_globals->_spellsState._damage += count * 6;
@@ -113,7 +113,7 @@ void SpellsMonsters::spell04_blindness() {
if (casts()) {
add(STRING["monster_spells.blindness"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
g_globals->_spellsState._damage = 2;
handlePartyEffects();
@@ -122,16 +122,16 @@ void SpellsMonsters::spell04_blindness() {
void SpellsMonsters::spell05_sprayPoison() {
add(STRING["monster_spells.sprays_poison"]);
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_POISON;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_POISON;
g_globals->_spellsState._damage = POISONED;
handlePartyEffects();
}
void SpellsMonsters::spell06_sprayAcid() {
add(STRING["monster_spells.sprays_acid"]);
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_ACID;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_ACID;
g_globals->_spellsState._damage = getRandomNumber((int)POISONED);
add(':');
@@ -142,8 +142,8 @@ void SpellsMonsters::spell07_sleep() {
if (casts()) {
add(STRING["monster_spells.sleep"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_PSYCHIC;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_PSYCHIC;
g_globals->_spellsState._damage = ASLEEP;
handlePartyEffects();
}
@@ -153,8 +153,8 @@ void SpellsMonsters::spell08_paralyze() {
if (casts()) {
add(STRING["monster_spells.paralyze"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_FEAR;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_FEAR;
g_globals->_spellsState._damage = PARALYZED;
if (_remainingMonsters[getMonsterIndex()]->_level >= 5) {
@@ -177,8 +177,8 @@ void SpellsMonsters::spell10_lightningBolt() {
if (casts()) {
add(STRING["monster_spells.lightning_bolt"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_ELECTRICITY;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_ELECTRICITY;
g_globals->_spellsState._damage = getRandomNumber(37) + 5;
damageRandomChar();
}
@@ -188,8 +188,8 @@ void SpellsMonsters::spell11_strangeGas() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.strange_gas"].c_str()));
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_POISON;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_POISON;
g_globals->_spellsState._damage = BAD_CONDITION | STONE;
handlePartyEffects();
@@ -197,8 +197,8 @@ void SpellsMonsters::spell11_strangeGas() {
void SpellsMonsters::spell12_explode() {
add(STRING["monster_spells.explode"]);
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_POISON;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_POISON;
g_globals->_spellsState._damage = getRandomNumber(
_remainingMonsters[getMonsterIndex()]->_level);
_remainingMonsters[getMonsterIndex()]->_level = 0;
@@ -213,8 +213,8 @@ void SpellsMonsters::spell13_fireball() {
if (casts()) {
add(STRING["monster_spells.fireball"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_FIRE;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_FIRE;
// This whole condition choice makes no sense
g_globals->_spellsState._damage += 6 *
@@ -230,8 +230,8 @@ void SpellsMonsters::spell14_fireBreath() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.fire"].c_str()));
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_FIRE;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_FIRE;
// This whole condition choice makes no sense
g_globals->_spellsState._damage += 8 *
@@ -244,7 +244,7 @@ void SpellsMonsters::spell14_fireBreath() {
void SpellsMonsters::spell15_gazes() {
add(STRING["monster_spells.gazes"]);
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
g_globals->_spellsState._damage = BAD_CONDITION | STONE;
chooseCharacter();
@@ -254,8 +254,8 @@ void SpellsMonsters::spell15_gazes() {
void SpellsMonsters::spell16_acidArrow() {
add(STRING["monster_spells.acid_arrow"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_ACID;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_ACID;
g_globals->_spellsState._damage = getRandomNumber(31) + 9;
damageRandomChar();
@@ -263,7 +263,7 @@ void SpellsMonsters::spell16_acidArrow() {
void SpellsMonsters::spell17_elements() {
add(STRING["monster_spells.call_elements"]);
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
g_globals->_spellsState._damage = getRandomNumber(21) + 39;
damageRandomChar();
@@ -273,8 +273,8 @@ void SpellsMonsters::spell18_coldBeam() {
if (casts()) {
add(STRING["monster_spells.cold_beam"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
- g_globals->_spellsState._resistanceType = RESISTANCE_COLD;
+ ++g_globals->_spellsState._resistenceIndex;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_COLD;
g_globals->_spellsState._damage = getRandomNumber(41) + 9;
damageRandomChar();
@@ -308,7 +308,7 @@ void SpellsMonsters::spell21_fingerOfDeath() {
if (casts()) {
add(STRING["monster_spells.finger_of_death"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
g_globals->_spellsState._damage = BAD_CONDITION | DEAD;
chooseCharacter();
@@ -320,7 +320,7 @@ void SpellsMonsters::spell22_sunRay() {
if (casts()) {
add(STRING["monster_spells.sun_ray"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
g_globals->_spellsState._damage = getRandomNumber(51) + 49;
damageRandomChar();
@@ -331,7 +331,7 @@ void SpellsMonsters::spell23_disintegration() {
if (casts()) {
add(STRING["monster_spells.disintegration"]);
++g_globals->_spellsState._mmVal1;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
g_globals->_spellsState._damage = ERADICATED;
chooseCharacter();
@@ -349,9 +349,9 @@ void SpellsMonsters::spell25_poison() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.poison"].c_str()));
- g_globals->_spellsState._resistanceType = RESISTANCE_POISON;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_POISON;
g_globals->_spellsState._damage = _remainingMonsters[getMonsterIndex()]->_hp;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
add(':');
handlePartyDamage();
@@ -361,9 +361,9 @@ void SpellsMonsters::spell26_lightning() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.lightning"].c_str()));
- g_globals->_spellsState._resistanceType = RESISTANCE_ELECTRICITY;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_ELECTRICITY;
g_globals->_spellsState._damage = _remainingMonsters[getMonsterIndex()]->_hp;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
add(':');
handlePartyDamage();
@@ -373,9 +373,9 @@ void SpellsMonsters::spell27_frost() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.frost"].c_str()));
- g_globals->_spellsState._resistanceType = RESISTANCE_COLD;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_COLD;
g_globals->_spellsState._damage = _remainingMonsters[getMonsterIndex()]->_hp;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
add(':');
handlePartyDamage();
@@ -385,9 +385,9 @@ void SpellsMonsters::spell28_spikes() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.spikes"].c_str()));
- g_globals->_spellsState._resistanceType = RESISTANCE_ELECTRICITY;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_ELECTRICITY;
g_globals->_spellsState._damage = _remainingMonsters[getMonsterIndex()]->_hp;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
add(':');
handlePartyDamage();
@@ -397,9 +397,9 @@ void SpellsMonsters::spell29_acid() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.acid"].c_str()));
- g_globals->_spellsState._resistanceType = RESISTANCE_ACID;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_ACID;
g_globals->_spellsState._damage = _remainingMonsters[getMonsterIndex()]->_hp;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
add(':');
handlePartyDamage();
@@ -409,9 +409,9 @@ void SpellsMonsters::spell30_fire() {
add(Common::String::format("%s %s",
STRING["monster_spells.breathes"].c_str(),
STRING["monster_spells.fire"].c_str()));
- g_globals->_spellsState._resistanceType = RESISTANCE_FIRE;
+ g_globals->_spellsState._resistanceTypeOrTargetCount = RESISTANCE_FIRE;
g_globals->_spellsState._damage = _remainingMonsters[getMonsterIndex()]->_hp;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
add(':');
handlePartyDamage();
@@ -420,7 +420,7 @@ void SpellsMonsters::spell30_fire() {
void SpellsMonsters::spell31_energy() {
add(STRING["monster_spells.energy"]);
g_globals->_spellsState._damage = _remainingMonsters[getMonsterIndex()]->_hp;
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
add(':');
handlePartyDamage();
@@ -428,7 +428,7 @@ void SpellsMonsters::spell31_energy() {
void SpellsMonsters::spell32_swarm() {
add(STRING["monster_spells.swarm"]);
- ++g_globals->_spellsState._mmVal2;
+ ++g_globals->_spellsState._resistenceIndex;
g_globals->_spellsState._damage = getRandomNumber(12);
add(':');
@@ -512,7 +512,7 @@ bool SpellsMonsters::charAffected() {
}
bool SpellsMonsters::isEffective() {
- if (g_globals->_spellsState._mmVal2) {
+ if (g_globals->_spellsState._resistenceIndex) {
proc9();
if (g_globals->_spellsState._mmVal7) {
@@ -531,7 +531,7 @@ bool SpellsMonsters::isEffective() {
bool SpellsMonsters::testElementalResistance() {
bool result = false;
- switch (g_globals->_spellsState._resistanceType) {
+ switch (g_globals->_spellsState._resistanceTypeOrTargetCount) {
case RESISTANCE_FIRE:
result = damageType1(); break;
case RESISTANCE_COLD:
diff --git a/engines/mm/mm1/game/spells_party.cpp b/engines/mm/mm1/game/spells_party.cpp
index b1720a6d831..842444d526c 100644
--- a/engines/mm/mm1/game/spells_party.cpp
+++ b/engines/mm/mm1/game/spells_party.cpp
@@ -164,9 +164,9 @@ SpellResult SpellsParty::cleric12_bless() {
SpellResult SpellsParty::cleric13_blind() {
SpellsState &s = g_globals->_spellsState;
s._mmVal1++;
- s._mmVal2 = 7;
+ s._resistenceIndex = 7;
s._damage = BLINDED;
- s._resistanceType = static_cast<Resistance>((int)s._resistanceType + 1);
+ s._resistanceTypeOrTargetCount = static_cast<Resistance>((int)s._resistanceTypeOrTargetCount + 1);
g_globals->_combat->iterateMonsters1();
return SR_SUCCESS_SILENT;
@@ -227,8 +227,8 @@ SpellResult SpellsParty::cleric23_pain() {
SpellsState &ss = g_globals->_spellsState;
ss._damage = getRandomNumber(6) + getRandomNumber(6);
ss._mmVal1++;
- ss._resistanceType++;
- ss._mmVal2 = 6;
+ ss._resistanceTypeOrTargetCount++;
+ ss._resistenceIndex = 6;
g_globals->_combat->iterateMonsters2();
return SR_SUCCESS_SILENT;
@@ -255,9 +255,9 @@ SpellResult SpellsParty::cleric26_protectionFromPoison() {
SpellResult SpellsParty::cleric27_silence() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._mmVal2 = 7;
+ ss._resistenceIndex = 7;
ss._damage = SILENCED;
- ss._resistanceType++;
+ ss._resistanceTypeOrTargetCount++;
g_globals->_combat->iterateMonsters1();
return SR_SUCCESS_SILENT;
@@ -266,9 +266,9 @@ SpellResult SpellsParty::cleric27_silence() {
SpellResult SpellsParty::cleric28_suggestion() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._mmVal2 = 6;
+ ss._resistenceIndex = 6;
ss._damage = PARALYZED;
- ss._resistanceType++;
+ ss._resistanceTypeOrTargetCount++;
g_globals->_combat->iterateMonsters1();
return SR_SUCCESS_SILENT;
@@ -309,8 +309,8 @@ SpellResult SpellsParty::cleric34_lastingLight() {
SpellResult SpellsParty::cleric35_produceFlame() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._resistanceType++;
- ss._mmVal2 = 4;
+ ss._resistanceTypeOrTargetCount++;
+ ss._resistenceIndex = 4;
ss._damage = getRandomNumber(6) +
getRandomNumber(6) + getRandomNumber(6);
g_globals->_combat->iterateMonsters2();
@@ -320,7 +320,7 @@ SpellResult SpellsParty::cleric35_produceFlame() {
SpellResult SpellsParty::cleric36_produceFrost() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._mmVal2++;
+ ss._resistenceIndex++;
ss._damage = getRandomNumber(6) +
getRandomNumber(6) + getRandomNumber(6);
g_globals->_combat->iterateMonsters2();
@@ -407,7 +407,7 @@ SpellResult SpellsParty::cleric51_deadlySwarm() {
SpellsState &ss = g_globals->_spellsState;
g_globals->_combat->resetDestMonster();
ss._mmVal1++;
- ss._mmVal2 = 0;
+ ss._resistenceIndex = 0;
ss._damage = getRandomNumber(10) + getRandomNumber(10);
g_globals->_combat->iterateMonsters2();
@@ -481,7 +481,7 @@ SpellResult SpellsParty::cleric61_moonRay() {
g_globals->_combat->resetDestMonster();
ss._damage = hp;
ss._mmVal1++;
- ss._mmVal2 = 5;
+ ss._resistenceIndex = 5;
g_globals->_combat->iterateMonsters2();
return SR_SUCCESS_SILENT;
@@ -619,8 +619,8 @@ SpellResult SpellsParty::cleric75_sunRay() {
SpellsState &ss = g_globals->_spellsState;
ss._damage = getRandomNumber(51) + 49;
ss._mmVal1++;
- ss._mmVal2++;
- ss._resistanceType = RESISTANCE_FIRE;
+ ss._resistenceIndex++;
+ ss._resistanceTypeOrTargetCount = RESISTANCE_FIRE;
g_globals->_combat->iterateMonsters2();
return SR_SUCCESS_SILENT;
@@ -638,8 +638,8 @@ SpellResult SpellsParty::wizard13_energyBlast() {
damage += getRandomNumber(4);
ss._damage = MIN(damage, 255);
- ss._mmVal2 = 5;
- ss._resistanceType++;
+ ss._resistenceIndex = 5;
+ ss._resistanceTypeOrTargetCount++;
g_globals->_combat->iterateMonsters2();
return SR_SUCCESS_SILENT;
@@ -649,8 +649,8 @@ SpellResult SpellsParty::wizard14_flameArrow() {
SpellsState &ss = g_globals->_spellsState;
ss._damage = getRandomNumber(6);
ss._mmVal1++;
- ss._mmVal2 = 1;
- ss._resistanceType++;
+ ss._resistenceIndex = 1;
+ ss._resistanceTypeOrTargetCount++;
g_globals->_combat->iterateMonsters2();
return SR_SUCCESS_SILENT;
@@ -669,8 +669,8 @@ SpellResult SpellsParty::wizard17_location() {
SpellResult SpellsParty::wizard18_sleep() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._mmVal2 = 8;
- ss._resistanceType = RESISTANCE_FEAR;
+ ss._resistenceIndex = 8;
+ ss._resistanceTypeOrTargetCount = RESISTANCE_FEAR;
ss._damage = 16;
g_globals->_combat->iterateMonsters1();
@@ -681,8 +681,8 @@ SpellResult SpellsParty::wizard21_electricArrow() {
SpellsState &ss = g_globals->_spellsState;
ss._damage = getRandomNumber(6) + getRandomNumber(6);
ss._mmVal1++;
- ss._resistanceType++;
- ss._mmVal2 = 2;
+ ss._resistanceTypeOrTargetCount++;
+ ss._resistenceIndex = 2;
g_globals->_combat->iterateMonsters2();
return SR_SUCCESS_SILENT;
@@ -745,8 +745,8 @@ SpellResult SpellsParty::wizard27_quickness() {
SpellResult SpellsParty::wizard28_scare() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._mmVal2 = 7;
- ss._resistanceType++;
+ ss._resistenceIndex = 7;
+ ss._resistanceTypeOrTargetCount++;
ss._damage = 1;
g_globals->_combat->iterateMonsters1();
@@ -795,8 +795,8 @@ SpellResult SpellsParty::wizard38_web() {
SpellResult SpellsParty::wizard41_acidArrow() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._resistanceType++;
- ss._mmVal2 = 3;
+ ss._resistanceTypeOrTargetCount++;
+ ss._resistenceIndex = 3;
ss._damage += getRandomNumber(10) +
getRandomNumber(10) + getRandomNumber(10);
@@ -807,8 +807,8 @@ SpellResult SpellsParty::wizard41_acidArrow() {
SpellResult SpellsParty::wizard42_coldBeam() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._resistanceType++;
- ss._mmVal2 = 4;
+ ss._resistanceTypeOrTargetCount++;
+ ss._resistenceIndex = 4;
ss._damage = getRandomNumber(10) + getRandomNumber(10) +
getRandomNumber(10) + getRandomNumber(10);
@@ -820,8 +820,8 @@ SpellResult SpellsParty::wizard42_coldBeam() {
SpellResult SpellsParty::wizard43_feebleMind() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1++;
- ss._mmVal2 = 0;
- ss._resistanceType++;
+ ss._resistenceIndex = 0;
+ ss._resistanceTypeOrTargetCount++;
ss._damage = 8;
g_globals->_combat->iterateMonsters1();
@@ -831,8 +831,8 @@ SpellResult SpellsParty::wizard43_feebleMind() {
SpellResult SpellsParty::wizard44_freeze() {
SpellsState &ss = g_globals->_spellsState;
ss._mmVal1 = 0;
- ss._mmVal2 = 6;
- ss._resistanceType++;
+ ss._resistenceIndex = 6;
+ ss._resistanceTypeOrTargetCount++;
ss._damage = 128;
g_globals->_combat->iterateMonsters1();
@@ -894,7 +894,7 @@ SpellResult SpellsParty::wizard61_dancingSword() {
g_globals->_combat->resetDestMonster();
ss._mmVal1 = 0;
- ss._mmVal2 = 0;
+ ss._resistenceIndex = 0;
ss._damage = getRandomNumber(30);
g_globals->_combat->iterateMonsters2();
@@ -944,7 +944,7 @@ SpellResult SpellsParty::wizard73_meteorShower() {
g_globals->_combat->resetDestMonster();
ss._mmVal1++;
- ss._mmVal2 = 5;
+ ss._resistenceIndex = 5;
ss._damage = MIN((int)getRandomNumber(120) +
(int)g_globals->_currCharacter->_level._current, 120);
More information about the Scummvm-git-logs
mailing list