From f25029fe5da82d05f62a1032953c9ab906c163e9 Mon Sep 17 00:00:00 2001 From: Martin Palko Date: Sun, 7 Jun 2020 19:33:18 -0400 Subject: [PATCH] Fixed infantry being stuck in boxing state For a number of reasons, infantry can become stuck in one of the boxing states, while they have been told to stop boxing. This check catches those cases. --- TIBERIANDAWN/INFANTRY.CPP | 63 ++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/TIBERIANDAWN/INFANTRY.CPP b/TIBERIANDAWN/INFANTRY.CPP index c105476..07ee17d 100644 --- a/TIBERIANDAWN/INFANTRY.CPP +++ b/TIBERIANDAWN/INFANTRY.CPP @@ -188,26 +188,26 @@ void InfantryClass::Debug_Dump(MonoClass *mono) const { Validate(); mono->Set_Cursor(0, 0);mono->Print( - "�Name:���������������Mission:����TarCom:�NavCom:�Radio:�Coord:���HeadTo:��St:Ä¿\n" - "� � � � � � � � �\n" - "����������������N�Y�Health:��Body:�Turret:�Speed:�Path:��������Cargo:��������Ĵ\n" - "�Active........� � � � � � � � �\n" - "�Limbo.........� � ����������������������������������������������������������Ĵ\n" - "�Owned.........� � �Last Message: �\n" - "�Discovered....� � �Timer:�Arm:�Track:�Tiberium:�Flash:�Stage:�Team:�����Arch:�\n" - "�Selected......� � � � � � � � � � �\n" - "�Teathered.....� � ������������������������������������������������������������\n" - "�Locked on Map.� � � \n" - "�Is Prone......� � � \n" - "�Is A Loner....� � � \n" - "�Deploying.....� � � \n" - "�Rotating......� � � \n" - "�Firing........� � � \n" - "�Driving.......� � � \n" - "�To Look.......� � � \n" - "�Recoiling.....� � � \n" - "�To Display....� � � \n" - "�������������������� \n"); + "ÚName:ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂMission:ÄÄÄÂTarCom:ÂNavCom:ÂRadio:ÂCoord:ÄÄÂHeadTo:ÄÂSt:Ä¿\n" + "³ ³ ³ ³ ³ ³ ³ ³ ³\n" + "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂNÂYÂHealth:ÄÂBody:ÂTurret:ÂSpeed:ÂPath:ÁÄÄÄÄÄÄÂCargo:ÄÄÄÄÁÄÄÄÄ´\n" + "³Active........³ ³ ³ ³ ³ ³ ³ ³ ³\n" + "³Limbo.........³ ³ ÃÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n" + "³Owned.........³ ³ ³Last Message: ³\n" + "³Discovered....³ ³ ÃTimer:ÂArm:ÂTrack:ÂTiberium:ÂFlash:ÂStage:ÂTeam:ÄÄÄÄÂArch:´\n" + "³Selected......³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³\n" + "³Teathered.....³ ³ ÃÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÙ\n" + "³Locked on Map.³ ³ ³ \n" + "³Is Prone......³ ³ ³ \n" + "³Is A Loner....³ ³ ³ \n" + "³Deploying.....³ ³ ³ \n" + "³Rotating......³ ³ ³ \n" + "³Firing........³ ³ ³ \n" + "³Driving.......³ ³ ³ \n" + "³To Look.......³ ³ ³ \n" + "³Recoiling.....³ ³ ³ \n" + "³To Display....³ ³ ³ \n" + "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÁÄÙ \n"); mono->Set_Cursor(1, 1);mono->Printf("%s:%s", House->Class->IniName, Class->IniName); mono->Text_Print("X", 16 + (IsProne?2:0), 10); mono->Set_Cursor(33, 7);mono->Printf("%2d", Fear); @@ -1047,6 +1047,29 @@ void InfantryClass::AI(void) return; } + /* + ** Catch infantry that may be stuck in Boxing animations and get them out of it + */ + if (!IsBoxing) + { + switch (Doing) + { + case DO_FIGHT_READY: + case DO_ON_GUARD: + case DO_PUNCH: + case DO_KICK: + case DO_PUNCH_HIT1: + case DO_PUNCH_HIT2: + case DO_KICK_HIT1: + case DO_KICK_HIT2: + Do_Action(DO_READY_WEAPON, true); + break; + + default: + break; + } + } + /* ** Act on new orders if the unit is at a good position to do so. */