Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
corpsedata.c
Go to the documentation of this file.
1
class
CorpseData
2
{
3
const
int
GET_LIFETIME_TRIES_MAX
= 3;
4
5
bool
m_bUpdate
;
6
int
m_iLastUpdateTime
;
7
int
m_iTimeOfDeath
;
8
int
m_iMaxLifetime
;
9
int
m_iCorpseState
;
10
int
m_iTriesToGetLifetime
;
11
12
float
m_LifetimeAdjusted
=
float
.MIN;
13
float
m_LastLifetime
=
float
.MIN;
14
PlayerBase
m_Player
;
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;
22
m_iCorpseState
=
PlayerConstants
.
CORPSE_STATE_FRESH
;
23
m_Player
= player;
24
m_iTriesToGetLifetime
= 0;
25
}
26
27
void
UpdateCorpseState
(
bool
force_check =
false
)
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
{
41
++
m_iTriesToGetLifetime
;
42
m_iMaxLifetime
= -1;
43
if
(
m_iTriesToGetLifetime
>=
GET_LIFETIME_TRIES_MAX
)
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
)
56
m_LifetimeAdjusted
=
m_iMaxLifetime
;
57
58
if
(
m_LastLifetime
==
float
.
MIN
)
59
m_LastLifetime
=
m_iMaxLifetime
;
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
}
109
110
protected
bool
CanProgressDecay
()
111
{
112
return
!
m_Player
.GetIsFrozen();
113
}
114
}
CorpseData::m_iTimeOfDeath
int m_iTimeOfDeath
Definition
corpsedata.c:7
CorpseData::m_Player
PlayerBase m_Player
Definition
corpsedata.c:14
CorpseData::m_iTriesToGetLifetime
int m_iTriesToGetLifetime
Definition
corpsedata.c:10
CorpseData::CorpseData
void CorpseData(notnull PlayerBase player, int time_of_death)
Definition
corpsedata.c:16
CorpseData::UpdateCorpseState
void UpdateCorpseState(bool force_check=false)
Definition
corpsedata.c:27
CorpseData::GET_LIFETIME_TRIES_MAX
const int GET_LIFETIME_TRIES_MAX
Definition
corpsedata.c:3
CorpseData::m_LastLifetime
float m_LastLifetime
Definition
corpsedata.c:13
CorpseData::m_LifetimeAdjusted
float m_LifetimeAdjusted
Definition
corpsedata.c:12
CorpseData::m_bUpdate
bool m_bUpdate
Definition
corpsedata.c:5
CorpseData::m_iMaxLifetime
int m_iMaxLifetime
Definition
corpsedata.c:8
CorpseData::m_iLastUpdateTime
int m_iLastUpdateTime
Definition
corpsedata.c:6
CorpseData::m_iCorpseState
int m_iCorpseState
Definition
corpsedata.c:9
CorpseData::CanProgressDecay
bool CanProgressDecay()
Definition
corpsedata.c:110
PlayerBase
Definition
playerbaseclient.c:2
PlayerConstants
Definition
playerconstants.c:2
PlayerConstants::CORPSE_THRESHOLD_MEDIUM
static const float CORPSE_THRESHOLD_MEDIUM
Definition
playerconstants.c:210
PlayerConstants::CORPSE_STATE_FRESH
static const int CORPSE_STATE_FRESH
Definition
playerconstants.c:213
PlayerConstants::CORPSE_STATE_DECAYED
static const int CORPSE_STATE_DECAYED
Definition
playerconstants.c:215
PlayerConstants::CORPSE_THRESHOLD_DECAYED
static const float CORPSE_THRESHOLD_DECAYED
Definition
playerconstants.c:211
PlayerConstants::CORPSE_STATE_MEDIUM
static const int CORPSE_STATE_MEDIUM
Definition
playerconstants.c:214
MIN
const int MIN
Definition
enconvert.c:28
Games
Dayz
scripts
4_world
classes
corpsedata.c
Generated by
1.17.0