Explorar el Código

Fix crash during auto battle

edeksumo hace 10 años
padre
commit
aab5a05036
Se han modificado 1 ficheros con 3 adiciones y 3 borrados
  1. 3 3
      lib/NetPacksLib.cpp

+ 3 - 3
lib/NetPacksLib.cpp

@@ -1304,9 +1304,6 @@ DLL_LINKAGE void StartAction::applyGs( CGameState *gs )
 {
 	CStack *st = gs->curB->getStack(ba.stackNumber);
 
-	if(vstd::contains(st->state, EBattleStackState::DEFENDING_ANIM))
-		st->state -= EBattleStackState::DEFENDING_ANIM;
-
 	if(ba.actionType == Battle::END_TACTIC_PHASE)
 	{
 		gs->curB->tacticDistance = 0;
@@ -1332,15 +1329,18 @@ DLL_LINKAGE void StartAction::applyGs( CGameState *gs )
 	switch(ba.actionType)
 	{
 	case Battle::DEFEND:
+		st->state -= EBattleStackState::DEFENDING_ANIM;
 		st->state.insert(EBattleStackState::DEFENDING);
 		st->state.insert(EBattleStackState::DEFENDING_ANIM);
 		break;
 	case Battle::WAIT:
+		st->state -= EBattleStackState::DEFENDING_ANIM;
 		st->state.insert(EBattleStackState::WAITING);
 		return;
 	case Battle::HERO_SPELL: //no change in current stack state
 		return;
 	default: //any active stack action - attack, catapult, heal, spell...
+		st->state -= EBattleStackState::DEFENDING_ANIM;
 		st->state.insert(EBattleStackState::MOVED);
 		break;
 	}