private static bool EvaluateFlanking( CoverContext c, CoverPoint option, Vector3 dirCover, Vector3 dirDanger, float directness, out float result) { result = 0.0f; if ((double)directness > -0.5 && (double)directness < 0.5) { float num = 1f - Mathf.Abs(directness); if ((double)num > (double)c.BestFlankValue) { if (ConVar.AI.npc_cover_use_path_distance && c.Self.IsNavRunning() && Object.op_Inequality((Object)c.Self.AttackTarget, (Object)null)) { NPCPlayerApex self = c.Self as NPCPlayerApex; if (Object.op_Inequality((Object)self, (Object)null) && !self.PathDistanceIsValid(c.Self.AttackTarget.ServerPosition, option.Position, false)) { return(false); } } c.BestFlankValue = 0.1f - Mathf.Abs(num); c.BestFlankCP = option; result = c.BestFlankValue; return(true); } } return(false); }
public static bool Evaluate(CoverContext c, CoverPoint option) { if (c == null || c.Self.AttackTarget == null) { return(false); } NPCPlayerApex entity = c.Self.Entity as NPCPlayerApex; if (entity == null) { return(false); } return(entity.PathDistanceIsValid(option.Position, c.DangerPoint, true)); }
private static bool EvaluateAdvancement( CoverContext c, CoverPoint option, Vector3 dirCover, Vector3 dirDanger, float directness, out float result) { result = 0.0f; if ((double)directness > 0.5 && (double)((Vector3) ref dirCover).get_sqrMagnitude() > (double)((Vector3) ref dirDanger).get_sqrMagnitude() || (double)directness < 0.5) { return(false); } float sqrMagnitude = ((Vector3) ref dirCover).get_sqrMagnitude(); if ((double)sqrMagnitude > (double)((Vector3) ref dirDanger).get_sqrMagnitude()) { return(false); } float num = directness; if ((double)num <= (double)c.BestAdvanceValue) { return(false); } if (ConVar.AI.npc_cover_use_path_distance && c.Self.IsNavRunning() && Object.op_Inequality((Object)c.Self.AttackTarget, (Object)null)) { NPCPlayerApex self = c.Self as NPCPlayerApex; if (Object.op_Inequality((Object)self, (Object)null) && !self.PathDistanceIsValid(c.Self.AttackTarget.ServerPosition, option.Position, false)) { return(false); } } Vector3 vector3 = Vector3.op_Subtraction(option.Position, c.DangerPoint); if ((double)((Vector3) ref vector3).get_sqrMagnitude() < (double)sqrMagnitude) { num *= 0.9f; } c.BestAdvanceValue = num; c.BestAdvanceCP = option; result = c.BestAdvanceValue; return(true); }
private static bool EvaluateAdvancement(CoverContext c, CoverPoint option, Vector3 dirCover, Vector3 dirDanger, float directness, out float result) { result = 0f; if (directness > 0.5f && dirCover.sqrMagnitude > dirDanger.sqrMagnitude) { return(false); } if (directness >= 0.5f) { float single = dirCover.sqrMagnitude; if (single > dirDanger.sqrMagnitude) { return(false); } float single1 = directness; if (single1 > c.BestAdvanceValue) { if (ConVar.AI.npc_cover_use_path_distance && c.Self.IsNavRunning() && c.Self.AttackTarget != null) { NPCPlayerApex self = c.Self as NPCPlayerApex; if (self != null && !self.PathDistanceIsValid(c.Self.AttackTarget.ServerPosition, option.Position, false)) { return(false); } } if ((option.Position - c.DangerPoint).sqrMagnitude < single) { single1 *= 0.9f; } c.BestAdvanceValue = single1; c.BestAdvanceCP = option; result = c.BestAdvanceValue; return(true); } } return(false); }
private static bool EvaluateFlanking(CoverContext c, CoverPoint option, Vector3 dirCover, Vector3 dirDanger, float directness, out float result) { result = 0f; if (directness > -0.5f && directness < 0.5f) { float single = 1f - Mathf.Abs(directness); if (single > c.BestFlankValue) { if (ConVar.AI.npc_cover_use_path_distance && c.Self.IsNavRunning() && c.Self.AttackTarget != null) { NPCPlayerApex self = c.Self as NPCPlayerApex; if (self != null && !self.PathDistanceIsValid(c.Self.AttackTarget.ServerPosition, option.Position, false)) { return(false); } } c.BestFlankValue = 0.1f - Mathf.Abs(single); c.BestFlankCP = option; result = c.BestFlankValue; return(true); } } return(false); }