Eventuating Properties

Eventuating Properties are prioritized properties which represent continuous or periodic activity (event generation) on the possessing object's part, whether voluntary or otherwise. For example, a character in the world might be simultaneously:

  • Walking
  • Singing
  • and sharpening a dagger

Likewise, a thrown torch might be:

  • Burning
  • Flying
  • and dripping oil

These properties are difficult to represent in a purely event-driven environment because events are transitory, while activities are not. Eventuating Properties allow these actions to be represented by applying one or more properties to an object which generate new events periodically on the object's behalf, usually as a function of time. More complex tasks are modelled by aggregating several Eventuating Properties together into an Activity Property.

Eventuating Properties, as alluded above, aren't necessarily voluntary, or even visible, activities. Poisoning, rotting or disease, spell effects, drunkenness, fatigue?, emotions, and bleeding could all also be modelled this way.

Prioritization

Objects, especially those capable of volition, will sometimes need to override their ongoing activities with more immediate actions. Singular actions will need to be able to override related ongoing ones during their execution, so that a character who is strolling down the street whistling a tune can say hello to his friend that happens by, and keep whistling after doing so. An example of how this might appear to the player:

> walk toward town square

You begin walking towards the town square to the east.

> whistle "Fairy's Fortune"

You begin whistling the song "Fairy's Fortune" as you walk toward the town square. You pass the intersection of Elm and Serendipity.

As you pass the Smithy, you notice Terndin walking towards you.

> say "Merry met" to Terndin.

You stop whistling long enough to say "Merry met" to Terndin, and then resume where you left off. You are still walking east.

Terndin smiles and says "Merry met, brother." as he walks past you.

Prioritization can probably be accomplished with the combination of one or more of the following:

  • A default (integer?) priority set at the class level that determines initial (unmodified) priority
  • Modifiers set by the verb or event which caused them to come into being
  • Aging - Activities can (optionally) have a modifier which causes an activity's priority to decay over time, perhaps, but not necessarily, related to its duration or strength
  • Penchant - A modifier based on an object's inclination towards a specific class of activity

Cancellation

Sometimes activities will be too time-consuming or impossible to do simultaneously. Because of this, Eventuating Properties will need to able to cancel or modify other previous ones by some well-defined mechanism. An example of where this will be needed is the case when a character is walking towards distant mountains, and decides to rest. Since resting and walking are mutually-exclusive (well, in most cases, anyway), the decision to rest should terminate the walking activity. It might look like this:

> walk towards Firefallow mountains

You begin walking northeast towards the Firefallow mountains, which lie a great distance ahead.

[...some time later...]

You begin to feel fatigued and thirsty. You are still walking northeast, passing through a large grassy plain. The sun has begun to set.

> rest

You stop walking and sit down. You are in a broad grassy plain, and you feel somewhat thirsty and fatigued.

In order to accomplish this, active properties will need to be able to react to each other in some logical way to prevent the need to explicitly define interaction behaviours for each one. There is already some need to model this for mutual exclusion in the more general properties, but Eventuating Properties might need additional functionality.

Appearance

Like other properties, Eventuating Properties will sometimes affect the appearance of the host object. Object description should include perceivable Eventuating Properties, the number and detail of which can be determined by the viewing perception object's level of detail?. Eventuating Properties will probably tend to be more salient than passive ones.

Interaction

Eventuating Properties such as "concentrating" will need to act purely on other properties. Perhaps by the same mechanism as the one for cancellation above?

Skilled Activities

Eventuating properties which are associated with skilled actions will have an associated degree of complexity, which determines how much concentration must be focused on it each tick in order to maintain it. If a character's concentration falls below the amount required by the activities she is doing, the activity with the highest complexity is ceased.

An activity's complexity decreases as the skills that govern it are improved, so that someone who is a master archer will find it much easier to hit their mark under duress than someone less skillful.

Requirements

The following are a list of tentative requirements for eventuating properties. They must:

  • contain a function which generates events at timed intervals
  • support mutual exclusion, temporary overriding, and other interactions (this is perhaps a required feature of the general property assignment mechanism).
  • contain a conditional function which can alter or remove itself from its host based on changing criteria.

GedTheGreysHain - 28 Jan 2001
GedTheGreysHain - 02 Jul 2003 [Fixed the wording of some stuff, conversions from Activities Stack]