|
@@ -213,7 +213,21 @@ bool BattleSpellMechanics::canBeCastAt(const Target & target, Problem & problem)
|
|
|
|
|
|
Target spellTarget = transformSpellTarget(target);
|
|
|
|
|
|
- return effects->applicable(problem, this, target, spellTarget);
|
|
|
+ const battle::Unit * mainTarget = nullptr;
|
|
|
+
|
|
|
+ if(spellTarget.front().unitValue)
|
|
|
+ {
|
|
|
+ mainTarget = target.front().unitValue;
|
|
|
+ }
|
|
|
+ else if(spellTarget.front().hexValue.isValid())
|
|
|
+ {
|
|
|
+ mainTarget = battle()->battleGetUnitByPos(target.front().hexValue, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mainTarget && mainTarget == caster)
|
|
|
+ return false; // can't cast on self
|
|
|
+
|
|
|
+ return effects->applicable(problem, this, target, spellTarget);
|
|
|
}
|
|
|
|
|
|
std::vector<const CStack *> BattleSpellMechanics::getAffectedStacks(const Target & target) const
|