Browse Source

Fixed parsing for Mind Immunity.

DjWarmonger 14 years ago
parent
commit
872c893789
1 changed files with 13 additions and 9 deletions
  1. 13 9
      lib/CCreatureHandler.cpp

+ 13 - 9
lib/CCreatureHandler.cpp

@@ -1019,18 +1019,22 @@ void CCreatureHandler::loadMindImmunity(Bonus & b, BonusList & bl, std::string &
 
 	b.type = Bonus::SPELL_IMMUNITY;
 	b.val = Bonus::BASE_NUMBER;
-	std::vector<si32> values;
-	values.resize(10);
-	si32 val;
+	si32 lastVal, curVal, lastLev = 0;
 
-	loadToIt (val, src, it, 4); //basic value
-	for (int i = 0; i < 10; ++i)
+	b.val = 0; //on-off ability, no value specified
+	loadToIt (curVal, src, it, 4); // 0 level is never active
+	for (int i = 1; i < 11; ++i)
 	{
-		loadToIt (values[i], src, it, 4);
-		if (values[i] = 2)
-			values[i] = 0;
+		loadToIt (curVal, src, it, 4);
+		if (curVal == 1)
+		{
+			b.val = curVal;
+			b.limiter.reset (new RankRangeLimiter(i));
+			break; //only one limiter here
+		}
 	}
-	std::vector<int> mindSpells = getMindSpells();
+
+	std::vector<int> mindSpells = getMindSpells(); //multiplicate spells
 	for (int g=0; g < mindSpells.size(); ++g)
 	{
 		b.subtype = mindSpells[g];