Events system

Events can be produced (thrown) by several ways, as we said in the Event section.

The "patient zero" could learn the info

There are two ways to diffuse them:

Direct transmission

The direct transmission (Controllers are directly noticed) relies on EventsDispatchers.

Events are transmitted only to Entities which ask for them (so which can interpret them).

Some Entities (like gods) are allowed to produce an Event and send it to an EventsDispatcher. Everybody can receive Events by registering for some Events type to an EventsDispatcher (the faithful).

This way implies nothing about perception.

Warning

Events reception should be logical or at least plausible... So somebody should have good reasons to listen to Events.

Transmission via perceptions

The source of the Event'll send Stimuli to the StimuliDispatcher (and to the EventsDispatcher). The Event is sent linked with these Stimuli.

The StimuliDispatcher'll propagate these Stimuli+Event. As for Stimuli, Events can be not understood or misunderstood. The receiver can reemit what it perceived (can be used for rumours, reports, info diffusion, etc).

A Event can be linked to zero, one or more Stimuli. A Stimulus can be linked to zero, one or more Events.

Example 6. Dead man

"You see a dead man."

A 'death' Event is linked to the visual Stimulus, so the Entity can 'manage' this death and reacts logically (burying, stealing, doing nothing, spit on its enemy corpse, cry on its mother corpse, call the police, start investigation, etc.

Example 7. The sleeping man

You see a sleeping man and you make a mistake.

A wrong 'death' Event is linked to the visual Stimulus. You'll probably be surprised if you try to steal the man. If you go to the police, you'll repeat what you see (Stimulus + Event)

Transmission via Items

The Event is linked to some Item (a media in fact). If an Entity is able to read the content of the media, he/she/it can learn the Event.

To have the Item is not enough: few people can read a CD-ROM just by touching it and sensing the holes on its surface...

Moreover content can be ciphered or incomprehensible for the Entity (unknown language, unknown domain, etc).

So Creatures can exchanged info by writing letters, by calling, etc.

Transmission via Creatures

Cf Memory-RFC for rumours mechanism

EventsDispatcher

The EventsDispatcher has two roles: to log all Events and to relay some of these Events.

All Events are sent to the EventsDispatcher (and some to a StimuliDispatcher).

Some Entities could subscribe to an EventsDispatcher. Enrolment is a way to say "I want to be informed of Events types A, B and C." You don't declare what you plan to generate but only what you wish to receive.