fix: POS_FIGHTING state

This commit is contained in:
rtw1x1
2025-12-19 15:38:13 +00:00
committed by GitHub
parent da619922cb
commit e6b609c817
5 changed files with 76 additions and 0 deletions

View File

@@ -361,6 +361,10 @@ void CHARACTER::Initialize()
m_bIsLoadedAffect = false;
cannot_dead = false;
#ifdef FIX_BATTLE_INACTIVITY_TIMEOUT
m_dwLastCombatTime = 0;
#endif
#ifdef __PET_SYSTEM__
m_petSystem = 0;
m_bIsPet = false;
@@ -4060,6 +4064,20 @@ void CHARACTER::UpdateStateMachine(DWORD dwPulse)
if (IsDead())
return;
#ifdef FIX_BATTLE_INACTIVITY_TIMEOUT
if (IsPC() && IsPosition(POS_FIGHTING))
{
const DWORD now = get_dword_time();
// If we never set a combat time yet, set it now so timer can start.
if (m_dwLastCombatTime == 0)
m_dwLastCombatTime = now;
if (now - m_dwLastCombatTime >= 10000)
SetVictim(NULL); // triggers battle_end() -> POS_STANDING
}
#endif
Update();
m_dwNextStatePulse = dwPulse + m_dwStateDuration;
}