mirror of
https://github.com/vcmi/vcmi.git
synced 2026-06-19 22:57:37 +02:00
Fix MMAI action mask bug
This commit is contained in:
+11
-8
@@ -354,14 +354,23 @@ void Hex::setActionMask(const std::shared_ptr<ActiveStackInfo> & astackinfo, con
|
||||
auto hexaction = static_cast<HexAction>(i);
|
||||
|
||||
if(n_cstack->unitSide() == a_cstack->unitSide())
|
||||
return;
|
||||
continue;
|
||||
|
||||
if(hexaction <= HexAction::AMOVE_TL)
|
||||
{
|
||||
ASSERT(CStack::isMeleeAttackPossible(a_cstack, n_cstack, bhex), "vcmi says melee attack is IMPOSSIBLE [1]");
|
||||
actmask.set(i);
|
||||
}
|
||||
else if(hexaction > HexAction::AMOVE_2BR)
|
||||
else if(hexaction <= HexAction::AMOVE_2BR)
|
||||
{
|
||||
// only wide R stacks can perform 2TR/2R/2BR attacks
|
||||
if(a_cstack->unitSide() == BattleSide::DEFENDER && a_cstack->doubleWide())
|
||||
{
|
||||
ASSERT(CStack::isMeleeAttackPossible(a_cstack, n_cstack, bhex), "vcmi says melee attack is IMPOSSIBLE [2]");
|
||||
actmask.set(i);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// only wide L stacks can perform 2TL/2L/2BL attacks
|
||||
if(a_cstack->unitSide() == BattleSide::ATTACKER && a_cstack->doubleWide())
|
||||
@@ -370,12 +379,6 @@ void Hex::setActionMask(const std::shared_ptr<ActiveStackInfo> & astackinfo, con
|
||||
actmask.set(i);
|
||||
}
|
||||
}
|
||||
// only wide R stacks can perform 2TR/2R/2BR attacks
|
||||
else if(a_cstack->unitSide() == BattleSide::DEFENDER && a_cstack->doubleWide())
|
||||
{
|
||||
ASSERT(CStack::isMeleeAttackPossible(a_cstack, n_cstack, bhex), "vcmi says melee attack is IMPOSSIBLE [2]");
|
||||
actmask.set(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user