[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