@@ -179,8 +179,15 @@ AIGuardMachine::AIGuardMachine( Object *owner ) :
179179 // Kris: Except that guard return is more like an attack move, and will acquire targets while moving there.
180180 // This breaks deployAI units because they have to completely unpack before realizing that there is a target in range.
181181 // So I'm making AI_GUARD_INNER the first state.
182+ #if RETAIL_COMPATIBLE_CRC
182183 defineState ( AI_GUARD_INNER , newInstance (AIGuardInnerState)( this ), AI_GUARD_OUTER , AI_GUARD_OUTER , attackAggressors );
183184 defineState ( AI_GUARD_RETURN , newInstance (AIGuardReturnState)( this ), AI_GUARD_IDLE , AI_GUARD_INNER , attackAggressors );
185+ #else
186+ // TheSuperHackers @bugfix 09/04/2026 The attack aggressors conditions for AI_GUARD_INNER and AI_GUARD_RETURN
187+ // were removed to fix the conflicting movement and fire behavior in guard mode when the unit is under attack.
188+ defineState ( AI_GUARD_INNER , newInstance (AIGuardInnerState)( this ), AI_GUARD_OUTER , AI_GUARD_OUTER );
189+ defineState ( AI_GUARD_RETURN , newInstance (AIGuardReturnState)( this ), AI_GUARD_IDLE , AI_GUARD_INNER );
190+ #endif
184191 defineState ( AI_GUARD_IDLE , newInstance (AIGuardIdleState)( this ), AI_GUARD_INNER , AI_GUARD_RETURN , attackAggressors );
185192 defineState ( AI_GUARD_OUTER , newInstance (AIGuardOuterState)( this ), AI_GUARD_GET_CRATE , AI_GUARD_GET_CRATE );
186193 defineState ( AI_GUARD_GET_CRATE , newInstance (AIGuardPickUpCrateState)( this ), AI_GUARD_RETURN , AI_GUARD_RETURN );
0 commit comments