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