Originally Posted by jhex
Last, but not least... how do I know that a certain "goal" will be perpetually running?

As long as a goal does not call "GoalCompleted;" it will run. Goals cannot be closed by other goals; they can only close themselves.

Quote

Perhaps adding my snippet to the "Start" goal wasn't correct, as that has calls to GoalCompleted and seems to revolve around character creation.

As mentioned in the Osiris overview, a goal calling GoalCompleted closes that goal itself, and initialises/activates all of its subgoals. So unless you need to be active during character creation, you can initialise afterwards too. It probably won't hurt to be active during character creation as well though, since no one dies there smile

Quote

Are the "GLO_*" truly global, and would they do the job? Do I have to add a new file of my own? Where's the control flow defined, dammit?! laugh

All control flow is event-driven. Any top-level goal is active right from the start the story of a mod initialises (and hence will be able to process events), and until that goal calls "GoalCompleted". The name is irrelevant, but GLO_* is a good way to specify your intention. Creating a new goal of your own is indeed best.

One word of caution: make sure not to call any helpers from a top-level's goal initialisation code (or from procedures called from there). The reason is that at that point, most other goals will not have initialised yet and while you won't get compilation errors (since the compiler can find the routines), at run time nothing will happen as the goals containing these routines may not be active yet (and hence the events your module throws to call those routines are not caught by anyone).