DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ UpdateCorpseState()

void CorpseData::UpdateCorpseState ( bool force_check = false)
inlineprivate

См. определение в файле CorpseData.c строка 27

28 {
29 if (m_iMaxLifetime <= 0 )
30 {
31 if ( m_iCorpseState == PlayerConstants.CORPSE_STATE_DECAYED && !force_check )
32 {
33 m_bUpdate = false;
34 return;
35 }
36 else
37 {
38 m_iMaxLifetime = m_Player.GetLifetime();
39 if (m_iMaxLifetime <= 0) //cleanup time not initialized yet!
40 {
42 m_iMaxLifetime = -1;
44 {
45 m_bUpdate = false;
46 }
47
48 return;
49 }
50 m_iMaxLifetime -= 30 * m_iTriesToGetLifetime; //adjusts for failed init attempts
51 m_Player.SetLifetime(m_iMaxLifetime);
52 }
53 }
54
55 if (m_LifetimeAdjusted == float.MIN)
57
58 if (m_LastLifetime == float.MIN)
60
61 float lifetime = m_Player.GetLifetime();
62
63 if (!CanProgressDecay())
64 {
65 m_LastLifetime = lifetime;
66 return;
67 }
68
69 int corpseStateOld = m_iCorpseState;
70 float delta = lifetime - m_LastLifetime;
71
72 #ifdef DIAG_DEVELOPER
73 if (FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.FOOD_DECAY))
74 {
75 float timeAccel = 1;
76 timeAccel = FeatureTimeAccel.GetFeatureTimeAccelValue();
77 delta *= timeAccel;
78 }
79 #endif
80
81 m_LifetimeAdjusted += delta;
82 float corpseFreshness = m_LifetimeAdjusted/m_iMaxLifetime;
83
84 if (corpseFreshness > PlayerConstants.CORPSE_THRESHOLD_MEDIUM)
85 {
86 m_iCorpseState = PlayerConstants.CORPSE_STATE_FRESH;
87 }
88 else if (corpseFreshness <= PlayerConstants.CORPSE_THRESHOLD_MEDIUM && corpseFreshness > PlayerConstants.CORPSE_THRESHOLD_DECAYED)
89 {
90 m_iCorpseState = PlayerConstants.CORPSE_STATE_MEDIUM;
91 }
92 else
93 {
94 m_iCorpseState = PlayerConstants.CORPSE_STATE_DECAYED;
95 m_bUpdate = false;
96 }
97
98 if (corpseStateOld != m_iCorpseState)
99 {
100 m_Player.m_CorpseState = m_iCorpseState;
101 m_Player.SetSynchDirty();
102 }
103
104 m_LastLifetime = lifetime;
105 }
const int MIN
Определения EnConvert.c:28
int m_iTriesToGetLifetime
Определения CorpseData.c:10
int m_iMaxLifetime
Определения CorpseData.c:8
PlayerBase m_Player
Определения CorpseData.c:14
const int GET_LIFETIME_TRIES_MAX
Определения CorpseData.c:3
float m_LifetimeAdjusted
Определения CorpseData.c:12
bool m_bUpdate
Определения CorpseData.c:5
bool CanProgressDecay()
Определения CorpseData.c:107
float m_LastLifetime
Определения CorpseData.c:13
int m_iCorpseState
Определения CorpseData.c:9

Перекрестные ссылки CanProgressDecay(), PlayerConstants::CORPSE_STATE_DECAYED, PlayerConstants::CORPSE_STATE_FRESH, PlayerConstants::CORPSE_STATE_MEDIUM, PlayerConstants::CORPSE_THRESHOLD_DECAYED, PlayerConstants::CORPSE_THRESHOLD_MEDIUM, GET_LIFETIME_TRIES_MAX, m_bUpdate, m_iCorpseState, m_iMaxLifetime, m_iTriesToGetLifetime, m_LastLifetime, m_LifetimeAdjusted, m_Player и MIN.

Используется в MissionBase::UpdateCorpseStatesServer().