DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
BrokenLegs.c
См. документацию.
2{
3 private const float HEALTHY_LEG = 100; //Health at which legs are no longer considered broken
4 private int currentState = -1; //Current broken leg state used upon reconnect
5 private const float TIME_TO_UPDATE = 0.5;
6 private float elapsedTime = TIME_TO_UPDATE + 1;
7
8 #ifdef DEVELOPER
9 ref static Timer timer;
10 #endif
11
12 override void Init()
13 {
16 m_ID = eModifiers.MDF_BROKEN_LEGS;
19 m_ActivationType = EActivationType.TRIGGER_EVENT_ON_ACTIVATION;
20 m_IsPersistent = true;
21 }
22
23 override void OnActivate(PlayerBase player)
24 {
25 //Print("------------> OnActivate - BrokenLegsMdfr");
26 player.SetBrokenLegs(-eBrokenLegs.BROKEN_LEGS);//note the negative sign
27 player.GetNotifiersManager().ActivateByType(eNotifiers.NTF_FRACTURE);
28 }
29
30 override void OnReconnect(PlayerBase player)
31 {
32 //Print("------------> OnReconnect - BrokenLegsMdfr");
33 player.SetBrokenLegs(player.GetBrokenLegs());
34 player.GetNotifiersManager().ActivateByType(eNotifiers.NTF_FRACTURE);
35 }
36
37
38 override void OnDeactivate(PlayerBase player)
39 {
40 player.UpdateBrokenLegs(eBrokenLegs.NO_BROKEN_LEGS);
41 if ( player.IsWearingSplint() )
42 {
43 MiscGameplayFunctions.RemoveSplint(player); //Remove splint when leg is healed
44 }
45
46 player.SetBrokenLegs(eBrokenLegs.NO_BROKEN_LEGS);
47 player.GetNotifiersManager().DeactivateByType(eNotifiers.NTF_FRACTURE);
48 }
49
50 override bool DeactivateCondition(PlayerBase player)
51 {
52 if ( player.GetHealth("RightLeg", "Health") >= HEALTHY_LEG && player.GetHealth("LeftLeg", "Health") >= HEALTHY_LEG )
53 {
54
55 return true;
56 }
57 else
58 {
59 return false;
60 }
61 }
62
63 override void OnTick(PlayerBase player, float deltaT)
64 {
65 player.UpdateBrokenLegs(/*legacy param - value not used*/0);
66 }
67
68
69 #ifdef DEVELOPER
70 static void DelayedRequest(PlayerBase player, bool state)
71 {
72 timer = new Timer( CALL_CATEGORY_SYSTEM );
73 if(state)
74 timer.Run( 10 , player.GetModifiersManager().GetModifier(eModifiers.MDF_BROKEN_LEGS), "Delayed", new Param1<bool>(state));
75 else
76 BrokenLegsMdfr.Cast(player.GetModifiersManager().GetModifier(eModifiers.MDF_BROKEN_LEGS)).Delayed(false);
77 }
78
79 void Delayed(bool state)
80 {
81 m_Player.GetModifiersManager().ActivateModifier(eModifiers.MDF_BROKEN_LEGS);
82 }
83 #endif
84};
eBrokenLegs
Определения EBrokenLegs.c:2
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Определения Effect.c:49
DayZPlayer m_Player
Определения Hand_Events.c:42
bool m_TrackActivatedTime
overall time this modifier was active
Определения ModifierBase.c:14
bool m_AnalyticsStatsEnabled
Определения ModifierBase.c:31
float m_TickIntervalActive
Определения ModifierBase.c:18
float m_TickIntervalInactive
Определения ModifierBase.c:17
EActivationType m_ActivationType
Определения ModifierBase.c:27
bool m_IsPersistent
should this modifier track overall time it was active ?
Определения ModifierBase.c:15
const int DEFAULT_TICK_TIME_INACTIVE
Определения ModifiersManager.c:29
eNotifiers
Определения NotifiersManager.c:2
override void OnTick(PlayerBase player, float deltaT)
Определения BrokenLegs.c:63
int currentState
Определения BrokenLegs.c:4
float elapsedTime
Определения BrokenLegs.c:6
override void OnActivate(PlayerBase player)
Определения BrokenLegs.c:23
override void OnDeactivate(PlayerBase player)
Определения BrokenLegs.c:38
override void Init()
Определения BrokenLegs.c:12
override bool DeactivateCondition(PlayerBase player)
Определения BrokenLegs.c:50
const float TIME_TO_UPDATE
Определения BrokenLegs.c:5
override void OnReconnect(PlayerBase player)
Определения BrokenLegs.c:30
const float HEALTHY_LEG
Определения BrokenLegs.c:3
Определения BrokenLegs.c:2
Определения BreathVapourMdfr.c:4
Определения PlayerBaseClient.c:2
Определения DayZPlayerImplement.c:63
eModifiers
Определения eModifiers.c:2
const int CALL_CATEGORY_SYSTEM
Определения tools.c:8