3 const int GET_LIFETIME_TRIES_MAX = 3;
10 int m_iTriesToGetLifetime;
12 float m_LifetimeAdjusted =
float.MIN;
13 float m_LastLifetime =
float.MIN;
19 m_iLastUpdateTime = time_of_death;
20 m_iTimeOfDeath = time_of_death;
24 m_iTriesToGetLifetime = 0;
27 void UpdateCorpseState(
bool force_check =
false)
29 if (m_iMaxLifetime <= 0 )
31 if ( m_iCorpseState ==
PlayerConstants.CORPSE_STATE_DECAYED && !force_check )
38 m_iMaxLifetime =
m_Player.GetLifetime();
39 if (m_iMaxLifetime <= 0)
41 m_iTriesToGetLifetime++;
43 if (m_iTriesToGetLifetime >= GET_LIFETIME_TRIES_MAX)
50 m_iMaxLifetime -= 30 * m_iTriesToGetLifetime;
51 m_Player.SetLifetime(m_iMaxLifetime);
55 if (m_LifetimeAdjusted ==
float.
MIN)
56 m_LifetimeAdjusted = m_iMaxLifetime;
58 if (m_LastLifetime ==
float.
MIN)
59 m_LastLifetime = m_iMaxLifetime;
61 float lifetime =
m_Player.GetLifetime();
65 m_LastLifetime = lifetime;
69 int corpseStateOld = m_iCorpseState;
70 float delta = lifetime - m_LastLifetime;
73 if (FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.FOOD_DECAY))
76 timeAccel = FeatureTimeAccel.GetFeatureTimeAccelValue();
81 m_LifetimeAdjusted += delta;
82 float corpseFreshness = m_LifetimeAdjusted/m_iMaxLifetime;
88 else if (corpseFreshness <= PlayerConstants.CORPSE_THRESHOLD_MEDIUM && corpseFreshness >
PlayerConstants.CORPSE_THRESHOLD_DECAYED)
98 if (corpseStateOld != m_iCorpseState)
100 m_Player.m_CorpseState = m_iCorpseState;
104 m_LastLifetime = lifetime;