AlexVinS 8 years ago
parent
commit
21c0c95049
2 changed files with 13 additions and 13 deletions
  1. 10 12
      lib/spells/CDefaultSpellMechanics.cpp
  2. 3 1
      lib/spells/CDefaultSpellMechanics.h

+ 10 - 12
lib/spells/CDefaultSpellMechanics.cpp

@@ -154,6 +154,14 @@ void SpellCastContext::setDamageToDisplay(const si32 value)
 	damageToDisplay = value;
 }
 
+void SpellCastContext::addCustomEffect(const CStack * target, ui32 effect)
+{
+	BattleSpellCast::CustomEffect customEffect;
+	customEffect.effect = effect;
+	customEffect.stack = target->ID;
+	sc.customEffects.push_back(customEffect);
+}
+
 void SpellCastContext::prepareBattleLog()
 {
 	bool displayDamage = true;
@@ -806,12 +814,7 @@ void DefaultSpellMechanics::handleMagicMirror(const SpellCastEnvironment * env,
 		});
 
 		for(auto s : reflected)
-		{
-			BattleSpellCast::CustomEffect effect;
-			effect.effect = 3;
-			effect.stack = s->ID;
-			ctx.sc.customEffects.push_back(effect);
-		}
+			ctx.addCustomEffect(s, 3);
 	}
 }
 
@@ -839,12 +842,7 @@ void DefaultSpellMechanics::handleResistance(const SpellCastEnvironment * env, S
 		});
 
 		for(auto s : resisted)
-		{
-			BattleSpellCast::CustomEffect effect;
-			effect.effect = 78;
-			effect.stack = s->ID;
-			ctx.sc.customEffects.push_back(effect);
-		}
+			ctx.addCustomEffect(s, 78);
 	}
 }
 

+ 3 - 1
lib/spells/CDefaultSpellMechanics.h

@@ -21,7 +21,6 @@ public:
 	const DefaultSpellMechanics * mechanics;
 	const SpellCastEnvironment * env;
 	std::vector<const CStack *> attackedCres;//must be vector, as in Chain Lightning order matters
-	BattleSpellCast sc;//todo: make private
 	StacksInjured si;
 	const BattleSpellCastParameters & parameters;
 
@@ -31,9 +30,12 @@ public:
 	void addDamageToDisplay(const si32 value);
 	void setDamageToDisplay(const si32 value);
 
+	void addCustomEffect(const CStack * target, ui32 effect);
+
 	void beforeCast();
 	void afterCast();
 private:
+	BattleSpellCast sc;
 	const CGHeroInstance * otherHero;
 	int spellCost;
 	si32 damageToDisplay;