public override void DoExecute(BaseContext c) { NPCHumanContext nPCHumanContext = c as NPCHumanContext; if (c.GetFact(NPCPlayerApex.Facts.CanNotMove) == 1 || nPCHumanContext != null && nPCHumanContext.Human.NeverMove) { c.AIAgent.StopMoving(); if (nPCHumanContext != null) { nPCHumanContext.Human.SetFact(NPCPlayerApex.Facts.PathToTargetStatus, 2, true, true); } return; } c.AIAgent.SetFact(NPCPlayerApex.Facts.IsRetreatingToCover, 0, true, true); c.AIAgent.SetFact(NPCPlayerApex.Facts.SidesteppedOutOfCover, 0, true, true); if (UnityEngine.Time.time - nPCHumanContext.LastNavigationTime < 1f) { return; } nPCHumanContext.LastNavigationTime = UnityEngine.Time.time; if (nPCHumanContext.Human.NavAgent.pathPending) { return; } switch (this.Operator) { case HumanNavigateToOperator.OperatorType.EnemyLoc: { HumanNavigateToOperator.NavigateToEnemy(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.RandomLoc: { HumanNavigateToOperator.NavigateToRandomLoc(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.SpawnLoc: { HumanNavigateToOperator.NavigateToSpawnLoc(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.FleeEnemy: { HumanNavigateToOperator.FleeEnemy(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.FleeHurtDir: { HumanNavigateToOperator.FleeHurtDir(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.RetreatCover: { HumanNavigateToOperator.NavigateToCover(nPCHumanContext, HumanNavigateToOperator.TakeCoverIntention.Retreat); return; } case HumanNavigateToOperator.OperatorType.FlankCover: { HumanNavigateToOperator.NavigateToCover(nPCHumanContext, HumanNavigateToOperator.TakeCoverIntention.Flank); return; } case HumanNavigateToOperator.OperatorType.AdvanceCover: { HumanNavigateToOperator.NavigateToCover(nPCHumanContext, HumanNavigateToOperator.TakeCoverIntention.Advance); return; } case HumanNavigateToOperator.OperatorType.FleeExplosive: { HumanNavigateToOperator.FleeExplosive(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.Sidestep: { HumanNavigateToOperator.Sidestep(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.ClosestCover: { HumanNavigateToOperator.NavigateToCover(nPCHumanContext, HumanNavigateToOperator.TakeCoverIntention.Closest); return; } case HumanNavigateToOperator.OperatorType.PatrolLoc: { HumanNavigateToOperator.NavigateToPatrolLoc(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.MountableChair: { HumanNavigateToOperator.NavigateToMountableLoc(nPCHumanContext, this.Operator); return; } case HumanNavigateToOperator.OperatorType.WaypointLoc: { HumanNavigateToOperator.NavigateToWaypointLoc(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.LastEnemyLoc: { HumanNavigateToOperator.NavigateToLastEnemy(nPCHumanContext); return; } case HumanNavigateToOperator.OperatorType.HideoutLoc: { HumanNavigateToOperator.NavigateToHideout(nPCHumanContext); return; } default: { return; } } }
public override void DoExecute(BaseContext c) { NPCHumanContext c1 = c as NPCHumanContext; if (c.GetFact(NPCPlayerApex.Facts.CanNotMove) == (byte)1 || c1 != null && c1.Human.NeverMove) { c.AIAgent.StopMoving(); c1?.Human.SetFact(NPCPlayerApex.Facts.PathToTargetStatus, (byte)2, true, true); } else { c.AIAgent.SetFact(NPCPlayerApex.Facts.IsRetreatingToCover, (byte)0, true, true); c.AIAgent.SetFact(NPCPlayerApex.Facts.SidesteppedOutOfCover, (byte)0, true, true); if ((double)Time.get_time() - (double)c1.LastNavigationTime < 1.0) { return; } c1.LastNavigationTime = Time.get_time(); if (c1.Human.NavAgent.get_pathPending()) { return; } switch (this.Operator) { case HumanNavigateToOperator.OperatorType.EnemyLoc: HumanNavigateToOperator.NavigateToEnemy(c1); break; case HumanNavigateToOperator.OperatorType.RandomLoc: HumanNavigateToOperator.NavigateToRandomLoc(c1); break; case HumanNavigateToOperator.OperatorType.SpawnLoc: HumanNavigateToOperator.NavigateToSpawnLoc(c1); break; case HumanNavigateToOperator.OperatorType.FleeEnemy: HumanNavigateToOperator.FleeEnemy(c1); break; case HumanNavigateToOperator.OperatorType.FleeHurtDir: HumanNavigateToOperator.FleeHurtDir(c1); break; case HumanNavigateToOperator.OperatorType.RetreatCover: HumanNavigateToOperator.NavigateToCover(c1, HumanNavigateToOperator.TakeCoverIntention.Retreat); break; case HumanNavigateToOperator.OperatorType.FlankCover: HumanNavigateToOperator.NavigateToCover(c1, HumanNavigateToOperator.TakeCoverIntention.Flank); break; case HumanNavigateToOperator.OperatorType.AdvanceCover: HumanNavigateToOperator.NavigateToCover(c1, HumanNavigateToOperator.TakeCoverIntention.Advance); break; case HumanNavigateToOperator.OperatorType.FleeExplosive: HumanNavigateToOperator.FleeExplosive(c1); break; case HumanNavigateToOperator.OperatorType.Sidestep: HumanNavigateToOperator.Sidestep(c1); break; case HumanNavigateToOperator.OperatorType.ClosestCover: HumanNavigateToOperator.NavigateToCover(c1, HumanNavigateToOperator.TakeCoverIntention.Closest); break; case HumanNavigateToOperator.OperatorType.PatrolLoc: HumanNavigateToOperator.NavigateToPatrolLoc(c1); break; case HumanNavigateToOperator.OperatorType.MountableChair: HumanNavigateToOperator.NavigateToMountableLoc(c1, this.Operator); break; case HumanNavigateToOperator.OperatorType.WaypointLoc: HumanNavigateToOperator.NavigateToWaypointLoc(c1); break; case HumanNavigateToOperator.OperatorType.LastEnemyLoc: HumanNavigateToOperator.NavigateToLastEnemy(c1); break; case HumanNavigateToOperator.OperatorType.HideoutLoc: HumanNavigateToOperator.NavigateToHideout(c1); break; } } }