public void DoRadialDamage() { List <Collider> obj = Pool.GetList <Collider>(); Vector3 position = base.transform.position + new Vector3(0f, radius * 0.75f, 0f); Vis.Colliders(position, radius, obj, AttackLayers); HitInfo hitInfo = new HitInfo(); hitInfo.DoHitEffects = true; hitInfo.DidHit = true; hitInfo.HitBone = 0u; hitInfo.Initiator = ((creatorEntity == null) ? GameObjectEx.ToBaseEntity(base.gameObject) : creatorEntity); hitInfo.PointStart = base.transform.position; foreach (Collider item in obj) { if (item.isTrigger && (item.gameObject.layer == 29 || item.gameObject.layer == 18)) { continue; } BaseCombatEntity baseCombatEntity = GameObjectEx.ToBaseEntity(item.gameObject) as BaseCombatEntity; if (!(baseCombatEntity == null) && baseCombatEntity.isServer && baseCombatEntity.IsAlive() && (!ignoreNPC || !baseCombatEntity.IsNpc) && baseCombatEntity.IsVisible(position)) { if (baseCombatEntity is BasePlayer) { Effect.server.Run("assets/bundled/prefabs/fx/impacts/additive/fire.prefab", baseCombatEntity, 0u, new Vector3(0f, 1f, 0f), Vector3.up); } hitInfo.PointEnd = baseCombatEntity.transform.position; hitInfo.HitPositionWorld = baseCombatEntity.transform.position; hitInfo.damageTypes.Set(DamageType.Heat, damagePerSecond * tickRate); Interface.CallHook("OnFireBallDamage", this, baseCombatEntity, hitInfo); baseCombatEntity.OnAttacked(hitInfo); } } Pool.FreeList(ref obj); }
public bool HasTarget() { if (target != null) { return(target.IsAlive()); } return(false); }
public override float GetScore(BaseContext c) { BaseCombatEntity combatTarget = c.AIAgent.CombatTarget; if (!(combatTarget == null) && combatTarget.IsAlive()) { return(1f); } return(0f); }
public void TargetScan() { if (HasTarget() || IsOffline() || IsBeingRemoteControlled() || targetTrigger.entityContents == null) { return; } foreach (BaseEntity entityContent in targetTrigger.entityContents) { if (entityContent == null) { continue; } BaseCombatEntity component = entityContent.GetComponent <BaseCombatEntity>(); if (component == null || !component.IsAlive() || !InFiringArc(component) || !ObjectVisible(component)) { continue; } if (!Sentry.targetall) { BasePlayer basePlayer = component as BasePlayer; if ((bool)basePlayer && (IsAuthed(basePlayer) || Ignore(basePlayer))) { continue; } } if (!ShouldTarget(component)) { continue; } if (PeacekeeperMode()) { if (!IsEntityHostile(component)) { continue; } if (target == null) { nextShotTime = UnityEngine.Time.time + 1f; } } SetTarget(component); if ((object)target != null) { break; } } }
public void TargetScan() { if (this.HasTarget() || this.IsOffline() || this.targetTrigger.entityContents == null) { return; } foreach (BaseEntity entityContent in this.targetTrigger.entityContents) { if (!Object.op_Equality((Object)entityContent, (Object)null)) { BaseCombatEntity component = (BaseCombatEntity)((Component)entityContent).GetComponent <BaseCombatEntity>(); if (!Object.op_Equality((Object)component, (Object)null) && component.IsAlive() && (this.InFiringArc(component) && this.ObjectVisible(component))) { if (!Sentry.targetall) { BasePlayer player = component as BasePlayer; if (Object.op_Implicit((Object)player) && (this.IsAuthed(player) || this.Ignore(player))) { continue; } } if (!(component is AutoTurret)) { if (this.PeacekeeperMode()) { if (this.IsEntityHostile(component)) { if (Object.op_Equality((Object)this.target, (Object)null)) { this.nextShotTime = Time.get_time() + 1f; } } else { continue; } } this.SetTarget(component); break; } } } } }
public void DoRadialDamage() { List <Collider> list = Pool.GetList <Collider>(); Vector3 vector3 = base.transform.position + new Vector3(0f, this.radius * 0.75f, 0f); Vis.Colliders <Collider>(vector3, this.radius, list, this.AttackLayers, QueryTriggerInteraction.Collide); HitInfo hitInfo = new HitInfo() { DoHitEffects = true, DidHit = true, HitBone = 0, Initiator = (this.creatorEntity == null ? base.gameObject.ToBaseEntity() : this.creatorEntity), PointStart = base.transform.position }; foreach (Collider collider in list) { if (collider.isTrigger && (collider.gameObject.layer == 29 || collider.gameObject.layer == 18)) { continue; } BaseCombatEntity baseEntity = collider.gameObject.ToBaseEntity() as BaseCombatEntity; if (baseEntity == null || !baseEntity.isServer || !baseEntity.IsAlive() || !baseEntity.IsVisible(vector3, Single.PositiveInfinity)) { continue; } if (baseEntity is BasePlayer) { Effect.server.Run("assets/bundled/prefabs/fx/impacts/additive/fire.prefab", baseEntity, 0, new Vector3(0f, 1f, 0f), Vector3.up, null, false); } hitInfo.PointEnd = baseEntity.transform.position; hitInfo.HitPositionWorld = baseEntity.transform.position; hitInfo.damageTypes.Set(DamageType.Heat, this.damagePerSecond * this.tickRate); baseEntity.OnAttacked(hitInfo); } Pool.FreeList <Collider>(ref list); }
public void DoRadialDamage() { List <Collider> list = (List <Collider>)Pool.GetList <Collider>(); Vector3 position = Vector3.op_Addition(((Component)this).get_transform().get_position(), new Vector3(0.0f, this.radius * 0.75f, 0.0f)); Vis.Colliders <Collider>(position, this.radius, list, LayerMask.op_Implicit(this.AttackLayers), (QueryTriggerInteraction)2); HitInfo info = new HitInfo(); info.DoHitEffects = true; info.DidHit = true; info.HitBone = 0U; info.Initiator = Object.op_Equality((Object)this.creatorEntity, (Object)null) ? ((Component)this).get_gameObject().ToBaseEntity() : this.creatorEntity; info.PointStart = ((Component)this).get_transform().get_position(); using (List <Collider> .Enumerator enumerator = list.GetEnumerator()) { while (enumerator.MoveNext()) { Collider current = enumerator.Current; if (!current.get_isTrigger() || ((Component)current).get_gameObject().get_layer() != 29 && ((Component)current).get_gameObject().get_layer() != 18) { BaseCombatEntity baseEntity = ((Component)current).get_gameObject().ToBaseEntity() as BaseCombatEntity; if (!Object.op_Equality((Object)baseEntity, (Object)null) && baseEntity.isServer && (baseEntity.IsAlive() && baseEntity.IsVisible(position, float.PositiveInfinity))) { if (baseEntity is BasePlayer) { Effect.server.Run("assets/bundled/prefabs/fx/impacts/additive/fire.prefab", (BaseEntity)baseEntity, 0U, new Vector3(0.0f, 1f, 0.0f), Vector3.get_up(), (Connection)null, false); } info.PointEnd = ((Component)baseEntity).get_transform().get_position(); info.HitPositionWorld = ((Component)baseEntity).get_transform().get_position(); info.damageTypes.Set(DamageType.Heat, this.damagePerSecond * this.tickRate); baseEntity.OnAttacked(info); } } } } // ISSUE: cast to a reference type Pool.FreeList <Collider>((List <M0>&) ref list); }
public override float GetScore(BaseContext c) { BaseCombatEntity combatTarget = c.AIAgent.CombatTarget; return(!Object.op_Equality((Object)combatTarget, (Object)null) && combatTarget.IsAlive() ? 1f : 0.0f); }