public static void MountOperation(NPCHumanContext c, MountOperator.MountOperationType type) { switch (type) { case MountOperator.MountOperationType.Mount: if (c.GetFact(NPCPlayerApex.Facts.IsMounted) != (byte)0 || AI.npc_ignore_chairs) { break; } BaseChair chairTarget = c.ChairTarget; if (!Object.op_Inequality((Object)chairTarget, (Object)null)) { break; } c.Human.Mount((BaseMountable)chairTarget); break; case MountOperator.MountOperationType.Dismount: if (c.GetFact(NPCPlayerApex.Facts.IsMounted) != (byte)1) { break; } c.Human.Dismount(); break; } }
public static void NavigateToEnemy(NPCHumanContext c) { if (c.GetFact(NPCPlayerApex.Facts.HasEnemy) <= (byte)0 || !c.AIAgent.IsNavRunning()) { return; } if (c.GetFact(NPCPlayerApex.Facts.HasLineOfSight) > (byte)0) { Vector3 enemyPosition = c.EnemyPosition; if ((double)((Vector3) ref enemyPosition).get_sqrMagnitude() > 0.0) { HumanNavigateToOperator.MakeUnstuck(c); c.Human.StoppingDistance = 1.5f; c.Human.Destination = c.EnemyPosition; goto label_6; } } Memory.SeenInfo info = c.Memory.GetInfo(c.AIAgent.AttackTarget); if (Object.op_Inequality((Object)info.Entity, (Object)null) && (double)((Vector3) ref info.Position).get_sqrMagnitude() > 0.0) { HumanNavigateToOperator.MakeUnstuck(c); c.Human.StoppingDistance = 1.5f; c.Human.Destination = info.Position; } label_6: c.Human.SetTargetPathStatus(0.05f); }
private static void NavigateToWaypointLoc(NPCHumanContext c) { if (c.GetFact(NPCPlayerApex.Facts.HasWaypoints) > 0 && c.Human.IsNavRunning()) { c.Human.StoppingDistance = 0.3f; WaypointSet.Waypoint item = c.Human.WaypointSet.Points[c.Human.CurrentWaypointIndex]; bool flag = false; Vector3 transform = item.Transform.position; if ((c.Human.Destination - transform).sqrMagnitude > 0.01f) { HumanNavigateToOperator.MakeUnstuck(c); c.Human.Destination = transform; c.Human.SetTargetPathStatus(0.05f); flag = true; } float single = 0f; int num = c.Human.PeekNextWaypointIndex(); if (c.Human.WaypointSet.Points.Count > num && Mathf.Approximately(c.Human.WaypointSet.Points[num].WaitTime, 0f)) { single = 1f; } if ((c.Position - c.Human.Destination).sqrMagnitude > c.Human.SqrStoppingDistance + single) { c.Human.LookAtPoint = null; c.Human.LookAtEyes = null; if (c.GetFact(NPCPlayerApex.Facts.IsMoving) != 0 || flag) { c.SetFact(NPCPlayerApex.Facts.IsMovingTowardWaypoint, 1, true, true); return; } c.Human.CurrentWaypointIndex = c.Human.GetNextWaypointIndex(); c.SetFact(NPCPlayerApex.Facts.IsMovingTowardWaypoint, 0, true, true); return; } if (HumanNavigateToOperator.IsWaitingAtWaypoint(c, ref item)) { if (!IsClosestPlayerWithinDistance.Test(c, 4f)) { c.Human.LookAtEyes = null; c.Human.LookAtRandomPoint(5f); } else { LookAtClosestPlayer.Do(c); } c.SetFact(NPCPlayerApex.Facts.IsMovingTowardWaypoint, 0, true, true); return; } c.Human.CurrentWaypointIndex = c.Human.GetNextWaypointIndex(); c.Human.LookAtPoint = null; } }
public static void AttackEnemy(NPCHumanContext c, AttackOperator.AttackType type) { if (c.GetFact(NPCPlayerApex.Facts.IsWeaponAttackReady) == (byte)0) { return; } BaseCombatEntity target = (BaseCombatEntity)null; if (Object.op_Inequality((Object)c.EnemyNpc, (Object)null)) { target = (BaseCombatEntity)c.EnemyNpc; } if (Object.op_Inequality((Object)c.EnemyPlayer, (Object)null)) { target = (BaseCombatEntity)c.EnemyPlayer; } if (Object.op_Equality((Object)target, (Object)null)) { return; } c.AIAgent.StartAttack(type, target); c.SetFact(NPCPlayerApex.Facts.IsWeaponAttackReady, (byte)0, true, true); if ((double)Random.get_value() >= 0.100000001490116 || c.Human.OnAggro == null) { return; } c.Human.OnAggro(); }
public static void AttackEnemy(NPCHumanContext c, AttackOperator.AttackType type) { if (c.GetFact(NPCPlayerApex.Facts.IsWeaponAttackReady) == 0) { return; } BaseCombatEntity enemyNpc = null; if (c.EnemyNpc != null) { enemyNpc = c.EnemyNpc; } if (c.EnemyPlayer != null) { enemyNpc = c.EnemyPlayer; } if (enemyNpc == null) { return; } c.AIAgent.StartAttack(type, enemyNpc); c.SetFact(NPCPlayerApex.Facts.IsWeaponAttackReady, 0, true, true); if (UnityEngine.Random.@value < 0.1f && c.Human.OnAggro != null) { c.Human.OnAggro(); } }
public override float GetScore(BaseContext ctx) { NPCHumanContext npcHumanContext = ctx as NPCHumanContext; if (npcHumanContext != null && (NPCPlayerApex.EnemyRangeEnum)npcHumanContext.GetFact(NPCPlayerApex.Facts.RangeToSpawnLocation) >= npcHumanContext.Human.GetStats.MaxRangeToSpawnLoc && (!float.IsNaN(npcHumanContext.Human.SecondsSinceLastInRangeOfSpawnPosition) && !float.IsNegativeInfinity(npcHumanContext.Human.SecondsSinceLastInRangeOfSpawnPosition)) && !float.IsInfinity(npcHumanContext.Human.SecondsSinceLastInRangeOfSpawnPosition)) { return((double)npcHumanContext.Human.SecondsSinceLastInRangeOfSpawnPosition >= (double)npcHumanContext.Human.GetStats.OutOfRangeOfSpawnPointTimeout ? 1f : 0.0f); } return(0.0f); }
private static void NavigateToWaypointLoc(NPCHumanContext c) { if (c.GetFact(NPCPlayerApex.Facts.HasWaypoints) <= (byte)0 || !c.Human.IsNavRunning()) { return; } c.Human.StoppingDistance = 0.3f; WaypointSet.Waypoint point = c.Human.WaypointSet.Points[c.Human.CurrentWaypointIndex]; bool flag = false; Vector3 position = point.Transform.get_position(); Vector3 vector3_1 = Vector3.op_Subtraction(c.Human.Destination, position); if ((double)((Vector3) ref vector3_1).get_sqrMagnitude() > 0.00999999977648258) { HumanNavigateToOperator.MakeUnstuck(c); c.Human.Destination = position; c.Human.SetTargetPathStatus(0.05f); flag = true; } float num = 0.0f; int index = c.Human.PeekNextWaypointIndex(); if (c.Human.WaypointSet.Points.Count > index && Mathf.Approximately(c.Human.WaypointSet.Points[index].WaitTime, 0.0f)) { num = 1f; } Vector3 vector3_2 = Vector3.op_Subtraction(c.Position, c.Human.Destination); if ((double)((Vector3) ref vector3_2).get_sqrMagnitude() > (double)c.Human.SqrStoppingDistance + (double)num) { c.Human.LookAtPoint = (Transform)null; c.Human.LookAtEyes = (PlayerEyes)null; if (c.GetFact(NPCPlayerApex.Facts.IsMoving) == (byte)0 && !flag) { c.Human.CurrentWaypointIndex = c.Human.GetNextWaypointIndex(); c.SetFact(NPCPlayerApex.Facts.IsMovingTowardWaypoint, (byte)0, true, true); } else { c.SetFact(NPCPlayerApex.Facts.IsMovingTowardWaypoint, (byte)1, true, true); } }
public static void NavigateToEnemy(NPCHumanContext c) { if (c.GetFact(NPCPlayerApex.Facts.HasEnemy) > 0 && c.AIAgent.IsNavRunning()) { if (c.GetFact(NPCPlayerApex.Facts.HasLineOfSight) <= 0 || c.EnemyPosition.sqrMagnitude <= 0f) { Memory.SeenInfo info = c.Memory.GetInfo(c.AIAgent.AttackTarget); if (info.Entity != null && info.Position.sqrMagnitude > 0f) { HumanNavigateToOperator.MakeUnstuck(c); c.Human.StoppingDistance = 1.5f; c.Human.Destination = info.Position; } } else { HumanNavigateToOperator.MakeUnstuck(c); c.Human.StoppingDistance = 1.5f; c.Human.Destination = c.EnemyPosition; } c.Human.SetTargetPathStatus(0.05f); } }
public static void MountOperation(NPCHumanContext c, MountOperator.MountOperationType type) { if (type != MountOperator.MountOperationType.Mount) { if (type != MountOperator.MountOperationType.Dismount) { return; } if (c.GetFact(NPCPlayerApex.Facts.IsMounted) == 1) { c.Human.Dismount(); } } else if (c.GetFact(NPCPlayerApex.Facts.IsMounted) == 0 && !ConVar.AI.npc_ignore_chairs) { BaseChair chairTarget = c.ChairTarget; if (chairTarget != null) { c.Human.Mount(chairTarget); return; } } }
public static bool Evaluate(NPCHumanContext c, float minThreshold, float maxThreshold) { if (Mathf.Approximately(c.Human.TimeLastMovedToCover, 0f)) { return(true); } float timeLastMovedToCover = Time.realtimeSinceStartup - c.Human.TimeLastMovedToCover; if (c.GetFact(NPCPlayerApex.Facts.IsMovingToCover) > 0 || timeLastMovedToCover < minThreshold) { return(false); } if (timeLastMovedToCover >= maxThreshold) { return(true); } float single = maxThreshold - minThreshold; return(UnityEngine.Random.@value < (maxThreshold - timeLastMovedToCover) / single); }
public static bool Evaluate(NPCHumanContext c, float minThreshold, float maxThreshold) { if (Mathf.Approximately(c.Human.TimeLastMovedToCover, 0.0f)) { return(true); } float num1 = Time.get_realtimeSinceStartup() - c.Human.TimeLastMovedToCover; if (c.GetFact(NPCPlayerApex.Facts.IsMovingToCover) > (byte)0 || (double)num1 < (double)minThreshold) { return(false); } if ((double)num1 >= (double)maxThreshold) { return(true); } float num2 = maxThreshold - minThreshold; return((double)Random.get_value() < (double)(maxThreshold - num1) / (double)num2); }
public override float GetScore(BaseContext ctx) { object obj; NPCHumanContext nPCHumanContext = ctx as NPCHumanContext; if (nPCHumanContext == null || nPCHumanContext.GetFact(NPCPlayerApex.Facts.RangeToSpawnLocation) < (byte)nPCHumanContext.Human.GetStats.MaxRangeToSpawnLoc) { return(0f); } if (float.IsNaN(nPCHumanContext.Human.SecondsSinceLastInRangeOfSpawnPosition) || float.IsNegativeInfinity(nPCHumanContext.Human.SecondsSinceLastInRangeOfSpawnPosition) || float.IsInfinity(nPCHumanContext.Human.SecondsSinceLastInRangeOfSpawnPosition)) { return(0f); } if (nPCHumanContext.Human.SecondsSinceLastInRangeOfSpawnPosition >= nPCHumanContext.Human.GetStats.OutOfRangeOfSpawnPointTimeout) { obj = 1; } else { obj = null; } return((float)obj); }
public static bool Evaluate(NPCHumanContext c, NavMeshPathStatus s) { byte fact = c.GetFact(NPCPlayerApex.Facts.PathToTargetStatus); return(c.Human.ToPathStatus(fact) == s); }
public static bool Evaluate(NPCHumanContext c) { return(c.GetFact(NPCPlayerApex.Facts.IsRoamReady) > (byte)0); }