LogicMods

In the previous chapter, we touched on the existence of modifiers and actions.

The full name of modifiers is Logic Modifiers. The shorthand "modifiers" comes from the AlcScript path "logic.modifiers".

The object in Uru

A logic modifier is the basic unit of a conditional activation.
It can be triggered by a detector - causing it to evaluate conditions that are set to it, and if the conditions are met, then it can activate a specific action.

A Logic Modifier can also be primed. This happens in clickables. If a Logic Modifier gets primed, it requires a click on the object to start the action. The different cursor to show when it is over the object can be set in the logic modifier. To prime a logic modifier, a special condition, known as an "activator condition" must be used.

But, back to the basic structure of a logic system.

At the core is the Logic Modifier, it is located on the object that should trigger the action.

Attached to the logic modifiers are conditions, they determine if the action should be executed.

Linked to the logic modifiers are activators they can be located on any object, but are specifically linked to trigger this logic modifier, so that it can begin to evaluate the conditions, and trigger the action if necessary.

The Logic Modifier itself has links to actions. These actions are mostly PythonFileMods and ResponderModifiers.

A last thing that logic modifiers have are flags

Describing it in Logic Script

Take a look at the following template script, which names all options in a basic logic modifier

<object name>:
    logic:
        modifiers:
          - tag: Prime  # Gives a relative identifier to this logic modifier. (use either tag or name, not both)
                        # The "-" sign indicates a new modifier (list item)
            name: Object1_Primary # give an name to this modifier (use either tag or name, not both)

            flags: # flags for this logic modifier - of most flags the meaning is not fully known
              - localelement
              - reset
              - triggered
              - oneshot
              - requestingtrigger
              - typeactivator
              - multitrigger # if no flags are specified, this one is added by default

            cursor: nochange # the a different cursor to use when applicable

            activators:
                # a list of subscripts describing the activators

            conditions:
                # a list of subscripts describing the conditions

            actions:
                # a list of sunbscripts describing references to actions
 
        actions:
            # a list of subscripts that describe attached actions

The different possiblities for the cursor are:

nochange
up
left
right
down
poised
clicked
unclicked
hidden
open
grab
arrow

Logic modifiers can be either named, tagged or default.
If they are named, the name of the resulting object becomed the name you specify.
If they are tagged, tags are relative to the name of the scene object.
On default (no name or tag), it gets the same name as the object it is linked to.

With detectors and modifiers, tags are relative to the name of this logic modifier.