3 static const int RAYCAST_SOURCES_COUNT = 5;
6 static const vector m_RaycastSources[RAYCAST_SOURCES_COUNT] = {
32 super.EEHealthLevelChanged(oldLevel, newLevel, zone);
45 super.CreateTrigger();
47 vector mins =
"-0.1 -0.05 -0.1";
48 vector maxs =
"0.1 0.4 0.1";
55 override void OnUpdate(
EntityAI victim)
57 if (victim && victim.IsInherited(
CarScript))
69 if (
GetGame().IsServer() && victim)
71 if (!victim.GetAllowDamage())
77 Param1<EntityAI> params =
new Param1<EntityAI>(victim);
84 foreach (
vector raycastSourcePosition: m_RaycastSources)
86 vector raycastStart = ModelToWorld(raycastSourcePosition);
87 vector raycastEnd =
"0 0.5 0" + raycastStart;
91 rayInput.type = ObjIntersectFire;
92 rayInput.radius = 0.05;
99 if (result.obj && !result.obj.IsDamageDestroyed() && !result.obj.IsAnyInherited({ItemBase, Plant}))
101 OnServerSteppedOn(result.obj, result.obj.GetDamageZoneNameByComponentIndex(result.component));
111 else if (!
GetGame().IsDedicatedServer())
117 victim.SpawnDamageDealtEffect();
140 obj.ProcessDirectDamage(
DamageType.CLOSE_COMBAT,
this, damageZone,
"BearTrapHit_CarWheel",
"0 0 0", 1);
152 if (obj.IsDamageDestroyed())
155 string zoneUsed = damageZone;
156 if (damageZone ==
"zone_leg_random")
158 zoneUsed =
"LeftLeg";
159 if (
Math.RandomIntInclusive(0, 1) == 1)
160 zoneUsed =
"RightLeg";
165 if (obj.IsInherited(
PlayerBase) || (
Class.CastTo(zombie,obj) && !zombie.IsCrawling() &&
Math.RandomIntInclusive(0, 1) == 1))
170 obj.ProcessDirectDamage(
DamageType.CLOSE_COMBAT,
this, zoneUsed,
"BearTrapHit",
"0 0 0", 1);
181 if (
Class.CastTo(player,obj))
183 player.DamageAllLegs(player.GetMaxHealth() * 2);
185 else if (
Class.CastTo(zombie,obj))
187 zombie.SetHealth(
"LeftLeg",
"Health", 0.0);
188 zombie.SetHealth(
"RightLeg",
"Health", 0.0);
230 super.OnPlacementComplete(player, position, orientation);
246 return "beartrap_deploy_SoundSet";
269 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
275 super.GetDebugActions(outputList);
280 if (super.OnAction(action_id, player, ctx))
284 if (action_id ==
EActions.ACTIVATE_ENTITY)
288 else if (action_id ==
EActions.DEACTIVATE_ENTITY)
Param4< int, int, string, int > TSelectableActionInfoWithColor
void AddAction(typename actionName)
Super root of all classes in Enforce script.
Wrapper class for managing sound through SEffectManager.
override void SetAutodestroy(bool auto_destroy)
Sets whether Effect automatically cleans up when it stops.
Manager class for managing Effect (EffectParticle, EffectSound)
static EffectSound PlaySound(string sound_set, vector position, float play_fade_in=0, float stop_fade_out=0, bool loop=false)
Create and play an EffectSound.
Serialization general interface. Serializer API works with:
void OnServerSteppedOn(Object obj, string damageZone)
override string GetLoopDeploySoundset()
override void OnActivate()
void PlaySoundBiteEmpty()
override void OnPlacementComplete(Man player, vector position="0 0 0", vector orientation="0 0 0")
override bool IsDeployable()
override void SetActions()
void CauseVictimToStartLimping(Object obj, string damagedZone)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DamageType
exposed from C++ (do not change)
override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
proto native CGame GetGame()
const int SAT_DEBUG_ACTION
class JsonUndergroundAreaTriggerData GetPosition
class Hatchback_02_Blue extends Hatchback_02 OnDebugSpawn
override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
string m_AnimationPhaseTriggered
void Synch(EntityAI victim)
keeping "step" here for consistency only
string m_AnimationPhaseGrounded
const float UPDATE_TIMER_INTERVAL
void OnSteppedOut(EntityAI victim)
void OnSteppedOn(EntityAI victim)
EntityAI GetClosestCarWheel(EntityAI victim)
string m_AnimationPhaseSet
void SetInactive(bool stop_timer=true)
TrapTrigger m_TrapTrigger
void StartActivate(PlayerBase player)