public void ActOnTurn() { CanTakeAction |= (Me == Player.Instance.Me); CanTakeBonusAction |= (Me == Player.Instance.Me); if (Stealth.IsHiding) { Stealth.Hide(); // re-up the Stealth CR for the round; TODO: account for obscurity at the new location, etc } if (Stealth.IsPerforming) { Stealth.Performance(); // re-up the Performance CR } Decider.ChooseState(); switch (Decider.state) { case Decider.State.BadlyInjured: OnBadlyInjured?.Invoke(); break; case Decider.State.Crafting: OnCrafting?.Invoke(); break; case Decider.State.FriendsInNeed: OnFriendsInNeed?.Invoke(); break; case Decider.State.FriendlyActorsSighted: OnFriendlyActorsSighted?.Invoke(); break; case Decider.State.DamagedFriendlyStructuresSighted: OnDamagedFriendlyStructuresSighted?.Invoke(); break; case Decider.State.FullLoad: OnFullLoad?.Invoke(); break; case Decider.State.Harvesting: OnHarvesting?.Invoke(); break; case Decider.State.HasObjective: OnHasObjective?.Invoke(); break; case Decider.State.HostileActorsSighted: OnHostileActorsSighted?.Invoke(); break; case Decider.State.HostileStructuresSighted: OnHostileStructuresSighted?.Invoke(); break; case Decider.State.Idle: OnIdle?.Invoke(); break; case Decider.State.InCombat: OnInCombat?.Invoke(); break; case Decider.State.Medic: OnMedic?.Invoke(); break; case Decider.State.MovingToGoal: OnMovingToGoal?.Invoke(); break; case Decider.State.NeedsRest: OnNeedsRest?.Invoke(); break; case Decider.State.ReachedGoal: OnReachedGoal?.Invoke(); break; case Decider.State.Resting: OnResting?.Invoke(); break; case Decider.State.UnderAttack: OnUnderAttack?.Invoke(); break; case Decider.State.Watch: OnWatch?.Invoke(); break; default: OnIdle?.Invoke(); break; } }