Selaa lähdekoodia

Fix loading of spell identifier

AlexVinS 9 vuotta sitten
vanhempi
sitoutus
7106c5d1af
1 muutettua tiedostoa jossa 22 lisäystä ja 21 poistoa
  1. 22 21
      lib/spells/CSpellHandler.cpp

+ 22 - 21
lib/spells/CSpellHandler.cpp

@@ -115,7 +115,7 @@ bool CSpell::adventureCast(const SpellCastEnvironment * env, AdventureSpellCastP
 }
 
 void CSpell::battleCast(const SpellCastEnvironment * env, BattleSpellCastParameters & parameters) const
-{	
+{
 	assert(env);
 	if(parameters.destinations.size()<1)
 	{
@@ -141,7 +141,7 @@ ui32 CSpell::calculateDamage(const ISpellCaster * caster, const CStack * affecte
 	//check if spell really does damage - if not, return 0
 	if(!isDamageSpell())
 		return 0;
-	return adjustRawDamage(caster, affectedCreature, calculateRawEffectValue(spellSchoolLevel, usedSpellPower));	
+	return adjustRawDamage(caster, affectedCreature, calculateRawEffectValue(spellSchoolLevel, usedSpellPower));
 }
 
 ESpellCastProblem::ESpellCastProblem CSpell::canBeCast(const CBattleInfoCallback * cb, PlayerColor player) const
@@ -395,7 +395,7 @@ int CSpell::adjustRawDamage(const ISpellCaster * caster, const CStack * affected
 
 int CSpell::calculateRawEffectValue(int effectLevel, int effectPower) const
 {
-	return effectPower * power + getPower(effectLevel);	
+	return effectPower * power + getPower(effectLevel);
 }
 
 ESpellCastProblem::ESpellCastProblem CSpell::internalIsImmune(const ISpellCaster * caster, const CStack *obj) const
@@ -420,7 +420,7 @@ ESpellCastProblem::ESpellCastProblem CSpell::internalIsImmune(const ISpellCaster
 		std::stringstream cachingStr;
 		cachingStr << "type_" << Bonus::LEVEL_SPELL_IMMUNITY << "source_" << Bonus::SPELL_EFFECT;
 
-		TBonusListPtr levelImmunitiesFromSpell = obj->getBonuses(Selector::type(Bonus::LEVEL_SPELL_IMMUNITY).And(Selector::sourceType(Bonus::SPELL_EFFECT)), cachingStr.str());	
+		TBonusListPtr levelImmunitiesFromSpell = obj->getBonuses(Selector::type(Bonus::LEVEL_SPELL_IMMUNITY).And(Selector::sourceType(Bonus::SPELL_EFFECT)), cachingStr.str());
 
 		if(levelImmunitiesFromSpell->size() > 0  &&  levelImmunitiesFromSpell->totalValue() >= level  &&  level)
 		{
@@ -433,19 +433,19 @@ ESpellCastProblem::ESpellCastProblem CSpell::internalIsImmune(const ISpellCaster
 		cachingStr << "type_" << Bonus::SPELL_IMMUNITY << "subtype_" << id.toEnum() << "addInfo_1";
 		if(obj->hasBonus(Selector::typeSubtypeInfo(Bonus::SPELL_IMMUNITY, id.toEnum(), 1), cachingStr.str()))
 			return ESpellCastProblem::STACK_IMMUNE_TO_SPELL;
-	}	
+	}
 
 	//check receptivity
 	if (isPositive() && obj->hasBonusOfType(Bonus::RECEPTIVE)) //accept all positive spells
 		return ESpellCastProblem::OK;
-		
+
 	//3. Check negation
 	//Orb of vulnerability
 	//FIXME: Orb of vulnerability mechanics is not such trivial (issue 1791)
 	const bool battleWideNegation = obj->hasBonusOfType(Bonus::NEGATE_ALL_NATURAL_IMMUNITIES, 0);
 	const bool heroNegation = obj->hasBonusOfType(Bonus::NEGATE_ALL_NATURAL_IMMUNITIES, 1);
 	//anyone can cast on artifact holder`s stacks
-	if(heroNegation) 
+	if(heroNegation)
 		return ESpellCastProblem::NOT_DECIDED;
 	//this stack is from other player
 	//todo: check that caster is always present (not trivial is this case)
@@ -520,9 +520,9 @@ ESpellCastProblem::ESpellCastProblem CSpell::isImmuneByStack(const ISpellCaster
 void CSpell::prepareBattleLog(const CBattleInfoCallback * cb,  const BattleSpellCast * packet, std::vector<std::string> & logLines) const
 {
 	bool displayDamage = true;
-	
+
 	std::string casterName("Something"); //todo: localize
-	
+
 	if(packet->castByHero)
 		casterName = cb->battleGetHeroInfo(packet->side).name;
 
@@ -536,13 +536,13 @@ void CSpell::prepareBattleLog(const CBattleInfoCallback * cb,  const BattleSpell
 				casterName = casterStack->type->namePl;
 		}
 	}
-	
+
 	if(packet->affectedCres.size() == 1)
 	{
 		const CStack * attackedStack = cb->battleGetStackByID(*packet->affectedCres.begin(), false);
-		
+
 		const std::string attackedNamePl = attackedStack->getCreature()->namePl;
-		
+
 		if(packet->castByHero)
 		{
 			const std::string fmt = VLC->generaltexth->allTexts[195];
@@ -550,17 +550,17 @@ void CSpell::prepareBattleLog(const CBattleInfoCallback * cb,  const BattleSpell
 		}
 		else
 		{
-			mechanics->battleLogSingleTarget(logLines, packet, casterName, attackedStack, displayDamage);		
+			mechanics->battleLogSingleTarget(logLines, packet, casterName, attackedStack, displayDamage);
 		}
 	}
 	else
 	{
 		boost::format text(VLC->generaltexth->allTexts[196]);
 		text % casterName % this->name;
-		logLines.push_back(text.str());		
+		logLines.push_back(text.str());
 	}
-	
-	
+
+
 	if(packet->dmgToDisplay > 0 && displayDamage)
 	{
 		boost::format dmgInfo(VLC->generaltexth->allTexts[376]);
@@ -611,7 +611,7 @@ void CSpell::setupMechanics()
 CSpell::AnimationItem::AnimationItem()
 	:resourceName(""),verticalPosition(VerticalPosition::TOP),pause(0)
 {
-	
+
 }
 
 
@@ -804,6 +804,7 @@ CSpell * CSpellHandler::loadFromJson(const JsonNode & json, const std::string &
 	using namespace SpellConfig;
 
 	CSpell * spell = new CSpell();
+	spell->identifier = identifier;
 
 	const auto type = json["type"].String();
 
@@ -966,7 +967,7 @@ CSpell * CSpellHandler::loadFromJson(const JsonNode & json, const std::string &
 			{
 				newItem.pause = item.Float();
 			}
-			
+
 			q.push_back(newItem);
 		}
 	};
@@ -1043,11 +1044,11 @@ void CSpellHandler::afterLoadFinalization()
 				delete bonus;
 			}
 			level.effectsTmp.clear();
-			
+
 			for(auto & bonus: level.effects)
-				bonus.sid = spell->id;	
+				bonus.sid = spell->id;
 		}
-		spell->setup();		
+		spell->setup();
 	}
 }