Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
vomitstate.c
Go to the documentation of this file.
2{
3 static const float STAMINA_DEPLETION_MULTIPLIER = 1.3;
4 static const float STAMINA_RECOVERY_MULTIPLIER = 0.5;
5
6 //just for the Symptom parameters set-up and gets called even if the Symptom doesn't execute, don't put any gameplay code in here
7 const int BLOOD_LOSS = 250;
8 const int STOMACH_CONTENT_PERCENTAGE_DEFAULT = 5; //per second
9
10 private float m_VomitContentPercentage = -1; //considered unspecified at -1
11
12 override void OnInit()
13 {
15 m_Priority = 100;
16 m_ID = SymptomIDs.SYMPTOM_VOMIT;
17 m_DestroyOnAnimFinish = true;
18 m_SyncToClient = false;
19 m_Duration = 5;
20 m_MaxCount = 1;
21 m_VomitContentPercentage = -1;
22 }
23
24 bool IsContaminationActive()
25 {
26 return m_Player.GetModifiersManager().IsModifierActive(eModifiers.MDF_CONTAMINATION2) || m_Player.GetModifiersManager().IsModifierActive(eModifiers.MDF_CONTAMINATION3);
27 }
28
29 override void SetParam(Param p)
30 {
31 Param1<float> p1 = Param1<float>.Cast(p);
32 if ( p1 )
33 {
34 m_VomitContentPercentage = p1.param1;
35 }
36 }
37
38 override void OnAnimationStart()
39 {
40 if (m_Player)
41 {
42 m_Player.GetStatToxicity().Set(0);
43 if (m_Player.m_PlayerStomach)
44 {
45 if (m_VomitContentPercentage < 0) //unspecified, calculate from duration
46 {
47 float contentLoss = STOMACH_CONTENT_PERCENTAGE_DEFAULT * m_Duration;
48 m_Player.m_PlayerStomach.ReduceContents(contentLoss);
49 }
50 else
51 m_Player.m_PlayerStomach.ReduceContents(m_VomitContentPercentage);
52 }
53
54 if (IsContaminationActive())
55 m_Player.AddHealth("","Blood", -BLOOD_LOSS);
56 }
57 }
58
59 override void OnAnimationFinish()
60 {
62 m_Player.GetStaminaHandler().DepleteStamina(EStaminaModifiers.OVERALL_DRAIN);
63
64 if (IsContaminationActive())
65 {
66 PluginLifespan module_lifespan = PluginLifespan.Cast( GetPlugin( PluginLifespan ) );
67 module_lifespan.UpdateBloodyHandsVisibilityEx( m_Player, eBloodyHandsTypes.JUST_BLOOD );
68 }
69 }
70
71 override bool CanActivate()
72 {
73 return ( m_Manager.GetCurrentCommandID() == DayZPlayerConstants.COMMANDID_MOVE || m_Manager.GetCurrentCommandID() == DayZPlayerConstants.COMMANDID_ACTION );
74 }
75
77 override void OnGetActivatedServer(PlayerBase player)
78 {
79 PlayAnimationFB(DayZPlayerConstants.CMD_ACTIONFB_VOMIT,DayZPlayerConstants.STANCEMASK_CROUCH, GetDuration() );
80 }
81
82 override SmptAnimMetaBase SpawnAnimMetaObject()
83 {
84 return new SmptAnimMetaFB();
85 }
86
87 override bool IsSyncToRemotes()
88 {
89 return true;
90 }
91}
float m_Duration
void DepleteStamina(EStaminaModifiers modifier, float dT=-1)
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Definition param.c:12
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Definition effect.c:51
eModifiers
Definition emodifiers.c:2
EStaminaModifiers
float GetDuration()
Definition tools.c:313
DayZPlayer m_Player
Definition hand_events.c:42
ModifiersManager m_Manager
void PluginLifespan()
eBloodyHandsTypes
PluginBase GetPlugin(typename plugin_type)
int m_SymptomType
SymptomTypes