1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-21 21:17:49 +02:00

Block self-casting, e.g. Archangels can't resurrect themselves

This commit is contained in:
Ivan Savenko 2024-01-15 23:14:32 +02:00
parent 6e5da6c158
commit c839b397e8

@ -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