DayZ 1.29
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
83 float corpseFreshness = 0.0;
84 if (m_iMaxLifetime != 0)
85 corpseFreshness = m_LifetimeAdjusted / m_iMaxLifetime;
86
87 if (corpseFreshness > PlayerConstants.CORPSE_THRESHOLD_MEDIUM)
88 {
89 m_iCorpseState = PlayerConstants.CORPSE_STATE_FRESH;
90 }
91 else if (corpseFreshness <= PlayerConstants.CORPSE_THRESHOLD_MEDIUM && corpseFreshness > PlayerConstants.CORPSE_THRESHOLD_DECAYED)
92 {
93 m_iCorpseState = PlayerConstants.CORPSE_STATE_MEDIUM;
94 }
95 else
96 {
97 m_iCorpseState = PlayerConstants.CORPSE_STATE_DECAYED;
98 m_bUpdate = false;
99 }
100
101 if (corpseStateOld != m_iCorpseState)
102 {
103 m_Player.m_CorpseState = m_iCorpseState;
104 m_Player.SetSynchDirty();
105 }
106
107 m_LastLifetime = lifetime;
108 }
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:110
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().