DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
CorpseData.c
См. документацию.
2{
3 const int GET_LIFETIME_TRIES_MAX = 3;
4
11
12 float m_LifetimeAdjusted = float.MIN;
13 float m_LastLifetime = float.MIN;
15
16 void CorpseData(notnull PlayerBase player,int time_of_death)
17 {
18 m_bUpdate = true;
19 m_iLastUpdateTime = time_of_death;
20 m_iTimeOfDeath = time_of_death;
21 m_iMaxLifetime = -1;
23 m_Player = player;
25 }
26
27 void UpdateCorpseState(bool force_check = false)
28 {
29 if (m_iMaxLifetime <= 0 )
30 {
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 {
87 }
88 else if (corpseFreshness <= PlayerConstants.CORPSE_THRESHOLD_MEDIUM && corpseFreshness > PlayerConstants.CORPSE_THRESHOLD_DECAYED)
89 {
91 }
92 else
93 {
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 }
106
107 protected bool CanProgressDecay()
108 {
109 return !m_Player.GetIsFrozen();
110 }
111}
const int MIN
Определения EnConvert.c:28
int m_iTriesToGetLifetime
Определения CorpseData.c:10
int m_iMaxLifetime
Определения CorpseData.c:8
void CorpseData(notnull PlayerBase player, int time_of_death)
Определения CorpseData.c:16
int m_iTimeOfDeath
Определения CorpseData.c:7
PlayerBase m_Player
Определения CorpseData.c:14
const int GET_LIFETIME_TRIES_MAX
Определения CorpseData.c:3
float m_LifetimeAdjusted
Определения CorpseData.c:12
int m_iLastUpdateTime
Определения CorpseData.c:6
bool m_bUpdate
Определения CorpseData.c:5
bool CanProgressDecay()
Определения CorpseData.c:107
void UpdateCorpseState(bool force_check=false)
Определения CorpseData.c:27
float m_LastLifetime
Определения CorpseData.c:13
int m_iCorpseState
Определения CorpseData.c:9
Определения PlayerBaseClient.c:2
static const int CORPSE_STATE_MEDIUM
Определения PlayerConstants.c:214
static const int CORPSE_STATE_DECAYED
Определения PlayerConstants.c:215
static const float CORPSE_THRESHOLD_MEDIUM
Определения PlayerConstants.c:210
static const int CORPSE_STATE_FRESH
Определения PlayerConstants.c:213
static const float CORPSE_THRESHOLD_DECAYED
Определения PlayerConstants.c:211
Определения PlayerConstants.c:2