Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
what this is
use CBA state machine for (nearly) everything
rationale
where we're coming from
to date, civilian behavior is a bunch of chained cba_fnc_waituntilandexecute, prone to bugs, and nearly impossible to extend.
all civilian thoughts i could find, with possible transitions (correct me where i'm very wrong)
enter CBA state machine
implementation
/functions/state
. all states and transitions for one machine currently in one file, may need to get split upimplemented states and transitions
At this point, I'm only interested in reproducing existing behavior, esp. concerning the flight/hide/relax mechanism.
More behaviors may be added easily, with "rally" being the magic starting point where a group of civilians get together, and the leader decides what to do.
TODO
optimize debug output by for example wrapping civ thoughts withunnecessary#ifdef
de-spawn civs via state machineno, that would be wrong, managing the number is the spawner's job