Scripting Actions

Feb 15, 2019 at 3:43 PM
Scripting Actions
  • In Halo 5 Forge Scripting, Actions are behaviors triggered by Script Conditions. Some Actions have additional options in their settings, depending on what Condition has triggered them.




    Spawn(top)


    'Spawn' THIS object if it isn't already in the map. Object is created with the properties, variables and scripts set for it.

    Objects sometimes will not spawn if a player or object is in the space it will spawn in. Checkbox 'Force' in Spawn options to Force the Object to spawn in even if something is in it's spawn space.

    • Objects spawn in their original positions, not where they were when destroyed or despawned.
    • Objects in a welded group might be repositioned or rotated if the group was still spawned and in another location.
    • The Spawn action won't reset a currently spawned object.
    • Most objects won't spawn if players are in the way or very close by. Switches and Switch Terminals are the known exceptions that will spawn where a player is and the player will be slowly pushed out of that position when the switch is set to fixed or phased physics.
    • The game seems to determine whether a player is too close for an object to spawn based only on the distance a player is to the object (usually the object's center). That means the spawn detection zone around an object has a spherical shape.



    Despawn(top)


    'Despawn' target objects if they exist in the map. Objects removed with this Action can be created again with the 'Spawn' Action. Default is THIS object.

    OBJECTS [Mod List]



    Position/Rotation: Reset(top)


    Reset the target OBJECTS to their initial Position and Rotation used at the start of the map. Default is THIS object.

    OBJECTS [Mod List]
    Time: 0-720 (increments of .10)
    Reset Velocity: On/Off (NOTE: This menu item only appears if Time is set to 0)
    Position: On/Off
    Orientation: On/Off

    • Reset Velocty sets the velocity to zero if set to Yes. If set to No, the object position and rotation will be reset, but it will continue to move in whatever direction it was moving.
    • The position and rotation is not reliably reset to their original values. Using Despawn and Spawn actions can be more reliable. Setting the time to 0.0 might be more reliable.
    • A vehicle with a Reset script with Time set to 0.00 will instantly teleport the vehicle and passengers to the vehicles spawn location. Does not seem to work when there's a driver. Tested with a Mongoose.



    Message: Send(top)


    Send a Message that triggers the 'Message: Recieved' Condition on objects that are listening for it.

    Channel: alpha-zulu
    State: On/Off/Toggle
    Transfer: THIS or ACTIVATOR (NOTE: This menu item only appears in the following Conditions: Message:Received, Power:Check, Interacted or Boundary:Check)



    Power: Set(top)


    Set THIS object's 'Power' and send the information to OTHER objects listening with 'Power: Check' and/or 'Message/Power: Multi' Conditions.

    Channel - alpha-zulu
    State - On/Off/Toggle
    Transfer: THIS or ACTIVATOR (NOTE: This menu item only appears in the following Conditions: Message:Received, Power:Check, Interacted or Boundary:Check)

    • The behavior seems like the highest number script that sets a channel's power state is the only one that takes effect. Two Toggle actions won't cancel each other.
    • If an On/Off script attempts to set the state but it is already set to that value, then no events occur and no conditions will trigger during the next cycle.
    • Toggle always changes the value, either from Off to On or from On to Off.
    • Since it appears that only one script takes effect for a power channel, only either the On or the Off conditions can trigger during each cycle. If the setting doesn't end up changed, no On/Off/Toggle conditions will be triggered by it (but the current state is still true for On/Off Multi conditions).



    Animation: Play(top)


    Play target OBJECTS authored 'Animation' (loop). Default is THIS object. Can be stopped with 'Animation: Stop' Action. Functional on animated objects such as Pistons.

    OBJECTS: [Mod List]
    Position: 0-1.00 (increments of .10) Position in the animation to start animating towards. When desired position value is reached the animation will stop.



    Animation: Stop(top)


    Stop target OBJECTS authored 'Animation' if it is playing. Functional on animated objects such as Pistons. Some animations cannot be stopped such as Generator animations.

    OBJECTS: [Mod List]



    Damage: Ratio(top)


    Apply 'Damage' to the target OBJECTS based on a ratio of their maximum health. Default is THIS object.

    OBJECTS: [Mod List]
    Ratio: 0-100 (increments of .10) NOTE: Only affects player & object health, not shields



    Move: Offset(top)


    Move the target OBJECTS to the desired position. Default is THIS object.

    OBJECTS: [Mod List]
    Targets: [Mod List]
    X/Forward: -1,000 - 1,000 (increments of .25)
    Y/Horizontal: -1,000 - 1,000 (increments of .25)
    Z/Vertical: -1,000 - 1,000 (increments of .25)
    Local: On/Off
    Time: .10-720 (increments of .10)

    This information was compiled prior to Monitor's Bounty. Some of the information might be deprecated.

    • If the relative (Local Movement) offset orientations for an object are not obvious, reset its rotation settings to 0.00. Then the Forward, Horizontal and Vertical directions will match the positive world X, Y and Z directions.

    • Only one Move:Offset or Position/Rotation: Reset script can be active for an object at a time.

    • When multiple Move scripts for an object are activated during the same cycle, the lowest number script (first one to execute) is used while the others are ignored.

    • A Move script that activates while during another script’s control will take over the object movement. If the newer script finishes and the earlier script is still running, control returns to the earlier script.

    • A Move script can’t be activated again while it is running.

      • The length of time it runs can’t be extended in the middle of them by executing it again.

      • Continuous motion: It can be activated on the next cycle after the time is completed to provide continuous motion. This does not work with repeating On Timer conditions set to repeat for the same amount of time that the Move script uses because the On Timer condition will Trigger during the last cycle of the Move script, which means that the Move script can’t activate again at that time.

      • One solution is to have the Move script last 0.1 seconds less than the Timer condition, but the object motion will stop for that tenth of a second.

      • Since another script can take over while the first script is running, using a second copy of the script (or a script that runs when the first script can’t) will provide continuous motion.

      • Object Timers can be used to provide timed continuous motion with a single Move script because the On Spawn and On Despawn events can be scripted to one cycle apart.
    • A Move script can run for a Warthog that is being driven and the resulting motion seems to be a combination of the Move script and normal driving motion. Tested with a Forward action script. Other vehicles need to be tested.
    • As of April 2016, Move scripts sometimes result in jerky object motion rather than the expected smooth movement. There doesn't seem to be any definite patterns to this behavior, which may or may not occur at any time. This makes Move actions difficult to use in situations where inconsistent movement is undesirable. Sometimes Move scripts that use short Time settings seem to provide smoother motion. The Velocity action can provide smoother motion, but has limitations.
    • A workaround has been devised for jerky object motion, discovered by Exterrestr1al and Yumudas Beegbut of The Scripter's Guild. See the Tutorials section to learn how.



    Rotate: Offset(top)


    ''Move' the target OBJECTS to the desired position. Default is THIS object.

    OBJECTS: [Mod List]
    Yaw: -180 - 180 (increments of .25)
    Roll: -180 - 180 (increments of .25)
    Pitch: -180 - 180 (increments of .25)
    Time: .10-720 (increments of .10)

    This information was compiled prior to Monitor's Bounty. Some of the information might be deprecated.

    • Rotate scripts don't seem to activate while a Position/Rotation: Reset script is running.
    • When multiple Rotate scripts for an object are activated during the same cycle, the lowest number script (first one to execute) is used while the others are ignored.
    • A Rotate script can’t be activated again while it is running.
      • The length of time it runs can’t be extended in the middle of them by executing it again.
      • Continuous rotation: This works similar to Move scripts as described above.
    • As of April 2016, Rotate scripts sometimes result in jerky object motion rather than the expected smooth movement. There doesn't seem to be any definite patterns to this behavior, which may or may not occur at any time. Sometimes Rotate scripts that use short Time settings seem to provide smoother motion.
    • Welded groups with Rotation scripts result in erratic behavior and usually result in movement along with rotation.
    • A single object with a Rotate script can be used to as a crank to rotate a welded group that is set to Normal Physics.
    • See Tutorials section for tips and tricks on smooth motion and rotation.



    Velocity: Set(top)


    Set 'Velocity' of the target OBJECTS to the given force. Default is THIS object. Works with objects that have their 'Physics' property set to 'Normal'.

    OBJECTS: [Mod List]
    X/Forward: -500 - 500 (increments of .50)
    Y/Horizontal: -500 - 500 (increments of .50)
    Z/Vertical: -500 - 500 (increments of .50)
    Local: On/Off

    This information was compiled prior to Monitor's Bounty. Some of the information might be deprecated.
    • If the relative orientations for an object are not obvious, reset its rotation settings to 0.00. Then the Forward, Horizontal and Vertical directions will match the positive world X, Y and Z directions.
    • This action does not have a time component, so it can be activated every cycle.
    • If multiple Velocity scripts are activated during the same cycle for an object, the highest numbered script executes and the others are ignored.
    • Gravity, collisions, etc will affect the object’s velocity again immediately on the next cycle.
    • Whatever velocity the object has before this action activates is completely replaced by the velocity set by this action.
    • Vehicles with a driver don't seem to respond to Velocity scripts. Vehicles with only passengers will execute Velocity scripts and the passenger seems to stay in the vehicle if it floors upside down. Tested in Forge with a Mongoose.
    • As of April 2016, this action provides smoother motion than Move, Rotate, or Reset script actions, but it can be tricky to use.
    • See Tutorials section for tips and tricks on smooth motion and rotation.



    Color: Set(top)


    Set the target OBJECTS 'Color' sections to the desired colors. Default is THIS object.

    OBJECTS: [Mod List]
    Primary: [Color List]
    Secondary: [Color List]
    Tertiary: [Color List]



    Number: Change(top)


    Change 'Number' variables in different scopes to values that you want. Check variables with the 'Number: Check' Condition.

    VARIABLE
    Scope: Global, Player, Team or Object
    Global
    Channel: alpha-zulu​
    Player
    NUMBER: [Mod List]
    Channel: alpha-zulu​
    Team
    NUMBER: [Mod List]
    Channel: alpha-zulu​
    Object
    NUMBER [Mod List]​
    Operation: Set, Increment, Decrement, Multiply, Divide, Remainder or Random
    Force Dirty: On/Off
    CHANGE
    Source: Constant, Number, Object Count or Game
    Constant
    Number

    Scope: Global, Team or *Object (NOTE: Object only appears in menus for the following Conditions: Message Received, Power:Check, Interacted, Number:Check and Boundary:Check)
    Global: alpha-zulu
    Team: Team 1-8, alpha-zulu
    *Object
    THIS/ACTIVATOR
    Number
    : Team, Player or Object
    * Team: alpha-zulu (Object=ACTIVATOR means ACTIVATOR or Number Check's EXTRA object(s)
    * Player: alpha-zulu (Number-Object-ACTIVATOR-Player-Channel can retrieve a player channel number)
    * Object (Number-Object-THIS/ACTIVATOR-Object retrieves an object's only number)
    Object Count
    COUNT [Mod List]​
    Game Value
    Game Value: Team [score], Player [score], Health [current], Health [max], Health [ratio], Shields [current], Shields [max], Shields [ratio], Players [current], Players: Team [current], Teams [current], Spawn:Order, Rounds [max], Score to Win
    Object: THIS/ACTIVATOR (NOTE: Only appears in menus for the following Conditions: Message Received, Power:Check, Interacted, Number:Check and Boundary:Check)
    Value: -32767 - 32767
    Randomize: On/Off​
    • Can't find a way to make a player be the THIS object
    • ACTIVATOR Seems to be the only way to get Player data like score, health, order, etc
    • Boundary Check/Interacted/Number Check put players into ACTIVATOR
    • Number Check puts the player into ACTIVATOR for Game Value & Object Sources

    Player Numbers can be retrieved when Source=Number+Scope=Object+Object=ACTIVATOR+Number=Player. The ACTIVATOR option for Object becomes available when the Condition is Number: Check, Boundary: Check, Interacted, Message: Receive, or Power State: Check. For the Number: Check condition, use the EXTRA filters instead of ACTIVATOR.




    Trait: Apply(top)


    Apply a custom player 'Trait' to target PLAYERS. Modify 'Traits' via the Game Settings in the Custom Game Lobby (Minigame Mode only).

    PLAYERS: [Mod List]
    Trait: alpha-delta



    Traits: Clear(top)


    Clear a custom player 'Trait' from the target PLAYERS (Minigame Mode only).
    PLAYERS: [Mod List]

    PLAYERS: [Mod List]



    Wait(top)


    ''Wait' the set time before moving onto the next Action if there is one. Add additional Actions to scripts with the {ADD ACTION} function.

    Time: 0-720 (.10 increments)



    Score: Change(top)


    Increment or decrement the target TEAMS / PLAYERS 'Score'.

    Type: Team/Player
    SCORERS: [Mod List]
    Operation: Set, Increment or Decrement
    Source: Constant, Number, Object Count or Game Value
    Constant
    Number
    : Global, Team or Object
    Global: alpha-zulu
    Team: Team (1-8), alpha-zulu
    Object (only appears in the menu for the following Conditions: Message:Received, Power:Check, Interacted, Number:Check, Boundary:Check)
    Object: THIS/ACTIVATOR
    Number: Team, Player or Object
    Team: alpha-zulu
    Player: alpha-zulu (Number-Object-ACTIVATOR-Player-Channel can retrieve a player channel number)
    Object (Number-Object-THIS/ACTIVATOR-Object retrieves an object's only number)
    Object Count
    COUNT [Mod List]​
    Game Value
    Game Value: Team [score], Player [score], Health [current], Health [max], Health [ratio], Shields [current], Shields [max], Sheilds [ratio], Players [current], Players: Team [current], Teams [current], Spawn: Order, Rounds [max] (1 in Forge mode, -1 for unlimited rounds), Score To Win (0 in forge mode, -1 for unlimited rounds)
    Object: THIS/ACTIVATOR (NOTE: only appears in the menu for the following Conditions: Message:Received, Power:Check, Interacted, Number:Check, Boundary:Check)

    Notes on Game Value, Object: THIS/ACTIVATOR
    • Can't find a way to make a player be the THIS object
    • ACTIVATOR Seems to be the only way to get Player data like score, health, order, etc
    • Boundary Check/Interacted/Number Check put players into ACTIVATOR
    • Number Check puts the player into ACTIVATOR for Game Value & Object Sources



    Round: End(top)


    End the active 'Round' and trigger standard round over functionality.



    Screen Effects: Set(top)


    Set the world's 'Screen Effects' to the desired Filter and/or FX (weather) settings.

    PLAYERS: [Mod List]
    Filter: Default, Ignore, none, Crisp, Warm, Nova, Astro, Washed, Enhanced, Gold, Grayscale, Negative, Red Process, Blue Process, Green Process, Blue/Green Process, Purple Process, Cross Process, Juicy, Sepia, Contrast, Aging, Gloom, Weathered, FoV in [video], FOV Out [video], Heat Distortion, Under Water, Flood
    FX: Default, Ignore, none, Dust [light], Dust[medium], Dust [heavy], Embers [light], Embers [medium], Embers [heavy], Motes [light], Motes [medium], Motes [heavy], Papers [light], Papers [medium], Papers [heavy], Rain [light], Rain [medium], Rain [heavy], Snow [light], Snow [medium], Snow [heavy], Bubbles



    Switch: Interactive(top)


    Set THIS object's or target OBJECTS interface state. Used only for Interactive Object 'Switches' such as Keypad and Terminal.

    OBJECTS [Mod List]
    Sound:
    <NONE >
    SOUND EFFECTS (21)
    BASE INVADED; WARNING (SFX)
    CAMERA WHOOSH (SFX)
    ENEMY TEAM SCORED (SFX)
    GRUNT BIRTHDAY(SFX)
    GUARDIAN SONG (SFX)
    KRAKEN HORN (SFX)
    MISSION COMPLETE; LARGE (SFX)
    MISSION COMPLETE; MODERATE (SFX)
    NEGATIVE (SFX)
    NEGATIVE; ALT (SFX)
    OBJECTIVE; INCOMING (SFX)
    OBJECTIVE; READY (SFX)
    POSITIVE (SFX)
    POSITIVE; ALT (SFX)
    RUMBLE; LONG (SFX)
    RUMBLE; SHORT (SFX)
    RUMBLE METAL (SFX)
    SPARTAN DIE WOOSH (SFX)
    SPAWN; INFECTED (SFX)
    SPAWN; RESPAWN (SFX)
    TEAM SCORED (SFX)
    PIANO NOTES (16)
    PIANO; B (NOTES)
    PIANO; C (NOTES)
    PIANO; C# (NOTES)
    PIANO; D (NOTES)
    PIANO; D# (NOTES)
    PIANO; E (NOTES)
    PIANO; F NOTES)
    PIANO; F# NOTES
    PIANO; G INOTES)
    PIANO; G# (NOTES
    PIANO; A INOTES)
    PIANO; A# NOTES
    PIANO; B; OCTAVE (NOTES)
    PIANO; C; OCTAVE (NOTES)
    PIANO; C#; OCTAVE NOTES)
    PIANO; D; OCTAVE NOTES)
    MUSIC (16)
    DRAMATIC; A (MUSIC)
    DRAMATIC; B (MUSIC)
    DRAMATIC; C (MUSIC)
    DRUMROLL; A (MUSIC)
    DRUMROLL; B (MUSIC)
    NEGATIVE; A (MUSIC)
    NEGATIVE; B (MUSIC)
    NEGATIVE; C (MUSIC)
    NEGATIVE; D (MUSIC)
    POSITIVE; A (MUSIC)
    POSITIVE; B (MUSIC)
    POSITIVE; C (MUSIC)
    POSITIVE; D (MUSIC)
    ROUND; WIN (MUSIC)
    ROUND; NEUTRAL (MUSIC)
    ROUND; LOST (MUSIC)
    VOICE OVERS (79)
    AGAINST ALL ODDS (VO)
    ALLEYOOP (VO)
    AMAZING (VO)
    ARMING (VO)
    ASTOUNDING (VO)
    BALL; DROPPED (VO)
    BALL; HAVE YOU (VO)
    BALL; HAVE; ALLY (VO)
    BALL; HAVE; ENEMY (VO)
    BALL PLAY (VO)
    BALL; RESET (VO)
    BALL; STOLEN (VO)
    BALL; TAKEN (VO)
    BANGARANG (VO)
    BUCKLE UP (VO)
    BUFFALO (VO)
    BUSTED (VO)
    CHECKPOINT (VO)
    CRISPY (VO)
    CRISPY; EXTRA (VO)
    DEADEYE (VO)
    DEFEAT (VO)
    ELIMINATED: ALL PLAYERS (VO)
    ELIMINATED ENEMY TEAM (VO)
    EXTERMINATION (VO)
    FABULOUS (VO)
    FIRST POINT (VO)
    FLAG; CAPTURED (VO)
    FLAG; DROPPED: ALLY (VO)
    FLAG; DROPPED; ENEMY (VO)
    FLAG; HAVE; YOU (VO)
    FLAG; HAVE; ENEMY (VO)
    FLAG; RESET (VO)
    FLAG; RETURNED (VO)
    FLAG; TAKEN (VO)
    FLYIN' HIGH (VO)
    GAME OVER (VO)
    GOAL (VO)
    GOOOOAL (VO)
    GUNNER (VO)
    IMMORTAL (VO)
    INTERCEPTION (VO)
    INTERMISSION (VO)
    LAST MAN STANDING (VO)
    LEVEL UP (VO)
    LEAD; GAINED (VO)
    LEAD; LOST (VO)
    NAPOLEAN (VO)
    NEXT WINS; KILL (VO)
    NEXT WINS; POINT (VO)
    NEXT WINS; SCORE (VO)
    NICE (VO)
    ONE MAN ARMY (VO)
    OVERTIME (VO)
    PONIES (VO)
    REJECTION (VO)
    REQUISITION (VO)
    ROADTRIP (VO)
    ROUND; WON (VO)
    ROUND; LOST (VO)
    SCORED; ENEMY (VO)
    SCORED; TEAMMATE (VO)
    SELF DEFENSE (VO)
    SHARPSHOOTER (VO)
    SPECTATING (VO)
    STAY DOWN (VO)
    STEAMY (VO)
    STOLEN (VO)
    STRONGHOLD; CAPTURED (VO)
    STRONGHOLD; LOST (VO)
    SUDDEN DEATH (VO)
    TAKEN (VO)
    THAT WAS CLOSE (VO)
    TOTALLED (VO)
    TRIPLE THREAT (VO)
    VICTORY IMMINENT (VO)
    WEAPON PAD; 10S (VO)
    WEAPON PAD; READY (VO)
    WINGMAN (VO)



    Physics: Set(top)


    Sets the target OBJECTS 'Physics' to the desired type.

    OBJECTS [Mod List]
    Type: Phased, Fixed or Normal



    Nav Marker: Change(top)


    Mark target objects with 'Nav Markers'. TARGETS get Markers. PLAYERS see Markers.

    PLAYERS: [Mod List]
    Change: Add/Remove
    If Add is chosen, the following menu items appear:
    Color: [Color List]
    Text: [Text List]
    Distance: 0-500​
    TARGETS: [Mod List]



    Spawn Order: Change(top)


    Force players to 'Spawn' at a Spawn Point that matches the overriden 'Spawn Order'.

    OBJECTS [Mod List]
    Source: Constant, Number, Object Count or Game Value
    Constant
    Number

    Scope: Global, Team or *Object (NOTE: Object only appears in menus for the following Conditions: Message Received, Power:Check, Interacted, Number:Check and Boundary:Check)
    Global: alpha-zulu
    Team: Team 1-8, alpha-zulu
    * Object
    Object: THIS/ACTIVATOR
    Number: Team, Player or Object
    Team: alpha-zulu
    Player: alpha-zulu (Number-Object-ACTIVATOR-Player-Channel can retrieve a player channel number)
    Object (Number-Object-THIS/ACTIVATOR-Object retrieves an object's only number)
    Object Count
    COUNT [Mod List]​
    Game Value
    Game Value: Team [score], Player [score], Health [current], Health [max], Health [ratio], Shields [current], Shields [max], Sheilds [ratio], Players [current], Players: Team [current], Teams [current], Spawn: Order, Rounds [max] (1 in Forge mode, -1 for unlimited rounds), Score To Win (0 in forge mode, -1 for unlimited rounds)
    Object: THIS/ACTIVATOR (NOTE: Only appears in menus for the following Conditions: Message Received, Power:Check, Interacted, Number:Check and Boundary:Check)

    Notes on Game Value, Object: THIS/ACTIVATOR:
    • Can't find a way to make a player be the THIS object
    • ACTIVATOR Seems to be the only way to get Player data like score, health, order, etc
    • Boundary Check/Interacted/Number Check put players into ACTIVATOR
    • Number Check puts the player into ACTIVATOR for Game Value & Object Sources




    Label: Change(top)


    Add or remove a Game Mode 'Label' from the target OBJECTS.

    OBJECTS [Mod List]
    Change: Add or Remove
Yumudas Beegbut likes this.