AlexVinS пре 10 година
родитељ
комит
67f917edbb
2 измењених фајлова са 20 додато и 0 уклоњено
  1. 19 0
      lib/spells/BattleSpellMechanics.cpp
  2. 1 0
      lib/spells/BattleSpellMechanics.h

+ 19 - 0
lib/spells/BattleSpellMechanics.cpp

@@ -152,6 +152,25 @@ void DispellMechanics::applyBattle(BattleInfo * battle, const BattleSpellCast *
 	}
 }
 
+ESpellCastProblem::ESpellCastProblem DispellMechanics::canBeCasted(const CBattleInfoCallback * cb, PlayerColor player) const
+{
+	//todo: check for lower level
+
+	std::stringstream cachingStr;
+	cachingStr << "source_" << Bonus::SPELL_EFFECT;
+
+	for(const CStack * s : cb->battleAliveStacks())
+	{
+		if(s->hasBonus(Selector::sourceType(Bonus::SPELL_EFFECT), cachingStr.str()))
+		{
+			return ESpellCastProblem::OK;
+		}		
+	}
+	
+	return ESpellCastProblem::NO_APPROPRIATE_TARGET;
+}
+
+
 ///EarthquakeMechanics
 void EarthquakeMechanics::applyBattleEffects(const SpellCastEnvironment * env, BattleSpellCastParameters & parameters, SpellCastContext & ctx) const
 {

+ 1 - 0
lib/spells/BattleSpellMechanics.h

@@ -42,6 +42,7 @@ public:
 	DispellMechanics(CSpell * s): DefaultSpellMechanics(s){};
 
 	void applyBattle(BattleInfo * battle, const BattleSpellCast * packet) const override final;
+	ESpellCastProblem::ESpellCastProblem canBeCasted(const CBattleInfoCallback * cb, PlayerColor player) const override;	
 };
 
 class DLL_LINKAGE EarthquakeMechanics : public DefaultSpellMechanics