DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
MaskBase.c
См. документацию.
1
2class MaskBase extends Mask_Base
3{
5
6 override bool IsGasMask()
7 {
8 return true;
9 }
10
12 {
13 return {EffectWidgetsTypes.MASK_OCCLUDER, EffectWidgetsTypes.MASK_BREATH};
14 }
15
16 override bool AllowFoodConsumption()
17 {
18 return false;
19 }
20
21 override void OnDebugSpawn()
22 {
23 GetInventory().CreateInInventory("GasMask_Filter");
24 }
25
27 {
28 return FindAttachmentBySlotName("GasMaskFilter");
29 }
30
33 {
34 ItemBase filter = ItemBase.Cast(GetExternalFilter());
35 if (filter && !filter.IsRuined() && filter.GetQuantity() > 0)
36 return true;
37 else if (GetQuantity() > 0 && !IsRuined())
38 return true;
39
40 return false;
41 }
42
44 {
45 ItemBase filter = ItemBase.Cast(GetExternalFilter());
46 if (filter) //mask can have a filter, and filter is attached
47 return filter.GetQuantityMax();
48 else if (HasQuantity())//filter was not attached, checking if mask has internal filter
49 return GetQuantityMax();
50
51 //mask does not have a filter attached nor does it have internal filter, max quantity can't be obtained
52 return 0;
53 }
54
56 {
57 ItemBase filter = ItemBase.Cast(GetExternalFilter());
58 if (filter)
59 return filter.GetQuantity();
60 else
61 return GetQuantity();
62 }
63
65 {
66 if (!HasValidFilter())
67 {
68 return 0;
69 }
70
71 ItemBase filter = ItemBase.Cast(GetExternalFilter());
72 float quantity, quantityMax;
73
74 if (filter)
75 {
76 quantity = filter.GetQuantity();
77 quantityMax = filter.GetQuantityMax();
78 }
79 else
80 {
81 quantity = GetQuantity();
83 }
84
85 return Math.InverseLerp(0, quantityMax, quantity);
86 }
87
89 {
90 return ItemBase.Cast(FindAttachmentBySlotName("GasMaskFilter")) != null;
91 }
92
94 {
95 return HasQuantity();
96 }
97
99 {
100 return !HasIntegratedFilter();
101 }
102
103 bool ConsumeQuantity(float quantity, PlayerBase consumer_player)
104 {
105 ItemBase filter = ItemBase.Cast(FindAttachmentBySlotName("GasMaskFilter"));
106 ItemBase itemToConsume = null;
107
108 if (HasQuantity() && GetQuantity() > 0)
109 {
110 itemToConsume = this;//this mask itself has quantity(masks with integrated, non-attached filter)
111 }
112 else if (HasValidFilter())
113 {
114 itemToConsume = filter;
115 }
116 if (itemToConsume)
117 {
118 itemToConsume.AddQuantity(-quantity);
119 OnQuantityConsumed(itemToConsume, consumer_player, quantity);
120 return true;
121 }
122
123 return false;
124 }
125
126 void OnQuantityConsumed(notnull ItemBase filter, PlayerBase consumer_player) {};
127
128 void OnQuantityConsumed(notnull ItemBase filter, PlayerBase consumer_player, float quantity)
129 {
130 float damage = quantity * filter.GetFilterDamageRatio();
131 filter.AddHealth("","", -damage);
132 }
133
134 override protected void InitGlobalExclusionValues()
135 {
136 super.InitGlobalExclusionValues();
137
138 AddSingleExclusionValueGlobal(EAttExclusions.EXCLUSION_MASK_2);
139
140 AddSingleExclusionValueGlobal(EAttExclusions.EXCLUSION_GLASSES_TIGHT_0);
141 AddSingleExclusionValueGlobal(EAttExclusions.EXCLUSION_HEADGEAR_HELMET_0);
142 }
143}
float quantityMax
Определения CfgPlayerSpawnDataJson.c:209
override float GetQuantity()
Определения ItemBase.c:8154
override bool HasQuantity()
Определения ItemBase.c:8149
override int GetQuantityMax()
Определения ItemBase.c:8106
Определения Building.c:6
Определения InventoryItem.c:731
override void OnDebugSpawn()
Определения MaskBase.c:21
bool ConsumeQuantity(float quantity, PlayerBase consumer_player)
Определения MaskBase.c:103
float GetFilterQuantityMax()
Определения MaskBase.c:43
override array< int > GetEffectWidgetTypes()
Определения MaskBase.c:11
override bool AllowFoodConsumption()
Определения MaskBase.c:16
bool HasIntegratedFilter()
Определения MaskBase.c:93
float GetFilterQuantity()
Определения MaskBase.c:55
float m_LowFilterEventTime
Определения MaskBase.c:4
EntityAI GetExternalFilter()
Определения MaskBase.c:26
float GetFilterQuantity01()
Определения MaskBase.c:64
bool HasValidFilter()
has either external or integrated non-empty non-ruined filter ?
Определения MaskBase.c:32
void OnQuantityConsumed(notnull ItemBase filter, PlayerBase consumer_player)
Определения MaskBase.c:126
bool IsExternalFilterAttached()
Определения MaskBase.c:88
void OnQuantityConsumed(notnull ItemBase filter, PlayerBase consumer_player, float quantity)
Определения MaskBase.c:128
bool CanHaveExternalFilter()
Определения MaskBase.c:98
override bool IsGasMask()
Определения MaskBase.c:6
void InitGlobalExclusionValues()
Определения MaskBase.c:134
gas mask base
Определения Balaclava3Holes_ColorBase.c:2
Определения AirborneMask.c:2
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...