163 {
164
165
166
167
168 string hitzone;
169 vector contact_pos;
170 vector contact_dir;
171 int contactComponent;
172 bool isSteppedOn = false;
173
174 array<vector> raycast_sources = new array<vector>;
175 ref set<Object> victims = new set<Object>;
176
177
178 for ( int v = 0; v < raycast_sources_str.Count(); ++v)
179 {
180 raycast_sources.Insert(raycast_sources_str[v].ToVector());
181 }
182
183 for ( int i = 0; i < raycast_sources.Count(); ++i )
184 {
186 vector raycast_end_pos = "0 0.5 0" + raycast_start_pos;
187
188
189
190
191 DayZPhysics.RaycastRV( raycast_start_pos, raycast_end_pos, contact_pos, contact_dir, contactComponent, victims , null,
m_AreaDamageTrigger,
true,
false, ObjIntersectIFire);
192
193 for ( int j = 0; j < victims.Count(); ++j )
194 {
195 Object contact_obj = victims.Get(j);
196
197 if ( contact_obj.IsAnyInherited(m_DamageableTypes) )
198 {
199 isSteppedOn = true;
200 break;
201 }
202 }
203
204 if ( isSteppedOn )
205 {
207 if ( eai )
208 {
209 hitzone = eai.GetDamageZoneNameByComponentIndex(contactComponent);
210 break;
211 }
212 }
213 }
214
215 if ( isSteppedOn )
216 {
217 return hitzone;
218 }
219 else
220 {
221
222 string dmg_zone_rnd = "LeftFoot";
223 if ( Math.RandomIntInclusive(0, 1) == 1 )
224 dmg_zone_rnd = "RightFoot";
225 return dmg_zone_rnd;
226 }
227 }
AreaDamageTriggerBase m_AreaDamageTrigger