Index: Ext/Infantry/Hooks.Jumpjet.cpp =================================================================== --- Ext/Infantry/Hooks.Jumpjet.cpp (revision 1061) +++ Ext/Infantry/Hooks.Jumpjet.cpp (working copy) @@ -274,9 +274,15 @@ pData->InfJumpjet_BalloonHovering = !pData->InfJumpjet_BalloonHovering; if(!pData->InfJumpjet_BalloonHovering) { pData->InfJumpjet_PendingDeploy = true; + pData->InfJumpjet_PendingHover = false; } else { + pData->InfJumpjet_PendingDeploy = false; pData->InfJumpjet_PendingHover = true; } + + pData->LastJumpjetMapCoords = Inf->Location; + + Inf->Scatter(0xB1CFE8, 1, 0); Debug::Log("Hover state: BH = %d, PD = %d, PH = %d!\n", pData->InfJumpjet_BalloonHovering, pData->InfJumpjet_PendingDeploy, pData->InfJumpjet_PendingHover); Inf->ForceMission(mission_Guard); Inf->SetDestination(Inf->GetCell(), true); @@ -292,6 +298,19 @@ if(InfantryClass * Inf = specific_cast(pThis)) { if(Inf->Type->DeployToLand) { auto pData = TechnoExt::ExtMap.Find(Inf); + + if(pData->InfJumpjet_PendingDeploy) { + + pData->CurrentJumpjetMapCoords = Inf->Location; + if(pData->LastJumpjetMapCoords == pData->CurrentJumpjetMapCoords) { + Debug::Log("Lazy unit. Trying again to Force landing...\n"); + //Inf->Scatter(0xB1CFE8, 1, 0); + Inf->ForceMission(mission_Guard); + Inf->SetDestination(Inf->GetCell()->GetNeighbourCell(0), true); + + } + } + if(!pData->InfJumpjet_BalloonHovering) { return 0x4DAAEE; } Index: Ext/Techno/Body.h =================================================================== --- Ext/Techno/Body.h (revision 1061) +++ Ext/Techno/Body.h (working copy) @@ -43,6 +43,8 @@ bool InfJumpjet_BalloonHovering; bool InfJumpjet_PendingDeploy; bool InfJumpjet_PendingHover; + CoordStruct LastJumpjetMapCoords; + CoordStruct CurrentJumpjetMapCoords; TimerStruct CloakSkipTimer; SHPStruct * Insignia_Image;