+ ctrl.ExitHalt();
+ ctrl.StopWandering();
+}
+
+void RoamState::Enter(AIController &ctrl) const {
+ ctrl.StartWandering(1.0f);
+ ctrl.CueDecision(10.0f, 5.0f);
+}
+
+void RoamState::Update(AIController &ctrl, Entity &e, float dt) const {
+ // TODO: check for players
+ if (!ctrl.DecisionDue()) return;
+
+ unsigned int d = ctrl.Decide(10);
+ if (d == 0) {
+ // .1 chance of idling
+ ctrl.SetState(idle);
+ }
+ ctrl.CueDecision(10.0f, 5.0f);
+}
+
+void RoamState::Exit(AIController &ctrl) const {