Proc:Trap
Overview
The trap procedure allows builders to combine a single trigger with multiple effects. Some effects maybe be harmful, while others helpful. The settings for the trap are assigned via the setproc command.
Key | Default | Description |
---|---|---|
TRAP_INITIAL_CHARGES | 1 | The number of charges the trap has per zone reset. If this value is negative, the trap has infinite charges. |
Triggers
The trap may only have one trigger which is set in the TRIGGER_TYPE key value.
Value | Description |
---|---|
Arrival | Activates when players enter the room. |
Command | Activates when players enter a particular command. |
Departure | Activates when players attempt to leave the room. |
Every | Activates when the every interval occurs. |
MobileDeath | Activates when a particular mobile is killed. |
Password | Activates when a player says a particular word. |
PressurePlate | Activates when the sum of the weights of all players/mobiles in the room reach a particular threshhold. |
Trigger Settings
Global settings that may be applied to the trigger.
Key | Default | Description |
---|---|---|
TRIGGER_CHANCE | 100 | The percentage chance that the trigger will activate. |
TRIGGER_MIN_PRIME_LEVEL | 0 | The minimum prime level required to activate the trigger. |
TRIGGER_MAX_PRIME_LEVEL | 50 | The maximum prime level allowed to activate the trigger. Note that immortals will only trigger the trap if TRIGGER_INCLUDE_IMMORTALS is also set. |
TRIGGER_ACTIVATION_DELAY | 0 | Approximate number of seconds to delay the effects after the trigger is activated. Note that setting this value allows for the player activating the trigger to escape - which means they may not be present for any of the effects. |
TRIGGER_SPELL_EXEMPTION_LIST | No exemptions | A colon (:) separated list of spells/skills that make the player exempt from activating the trigger. |
TRIGGER_INCLUDE_MOBILES | 0 (FALSE) | Indicates whether independant mobiles should be able to activate the trigger. If this value is left at zero, wandering mobiles will not activate the trap nor count toward cumulative activations such as pressure plate weights. Mobile followers (supplications, summoned undead, etc) are always able to activate the trigger unless their master's prime level falls outside the trigger's boundaries or unless the follower is affected by a spell in the spell exemption list. |
TRIGGER_INCLUDE_IMMORTALS | 0 (FALSE) | Indicates whether immortals can trigger the trap. Best used when debugging or for helpful traps that perform tasks like opening doors. |
TRIGGER_MESSAGE_ACTOR | No message | Message sent to the player who activates the trigger. |
TRIGGER_MESSAGE_ROOM | No message | Message sent to the room when the trigger is activated. |
Command
The command trigger will activate if a player enters the specified command and arguments.
Key | Default | Description |
---|---|---|
COMMAND_LIST | None | Colon (:) separated list of commands and their arguments. |
For example, a value of push tomb:push stone:push tombstone would trigger on any of the three commands listed.
MobileDeath
The mobiledeath trigger will activate if a particular mobile is killed in this room. It ignores most of the trigger settings including TRIGGER_MIN_PRIME_LEVEL, TRIGGER_MAX_PRIME_LEVEL, and TRIGGER_SPELL_EXEMPTION_LIST.
Key | Default | Description |
---|---|---|
MOBILE_DEATH_VNUM | -1 | Vnum of the mobile to react to. |
Password
The password trigger will activate if a player says a particular word.
Key | Default | Description |
---|---|---|
PASSWORD_VALUE | (none) | The password. |
Pressure Plate
The pressure plate trigger activates when the weight of the applicable players and mobiles crosses a threshhold. Players/mobiles affected by the fly or wraithform spells are not counted.
Key | Default | Description |
---|---|---|
PRESSURE_PLATE_WEIGHT | 0 | The amount of weight needed to activate the trigger. |
Effects
Note that if a the trap has a non-zero activation time and is set to only affect the person triggering the trap, the person may be gone and the trap may affect noone.
Key | Default | Description |
---|---|---|
EFFECTS_SPELL_EXEMPTION_LIST | Empty | Colon (:) separated list of spells that exempt the player/mobile from being affected by any of the trap's effects. |
EFFECTS_LIST | Empty | Colon (:) separated list of effects enabled for this trap. Effects are activated in the order they appear. |
EFFECTS_TARGET | Actor | A string value of "Actor" to target the person triggering the trap, or "Room" for the entire room, or a number from 1 to 32 indicating how many random eligible players/mobiles should be selected and affected. |
EFFECTS_AFFECT_MOBILES | 0 | Boolean value indicating whether unrelated mobiles should be affected by the trap. If this value is left at zero, wandering mobiles will not be affected. Mobile followers (supplications, summoned undead, etc) will always be eligible unless their master's prime level falls outside the trigger's boundaries or unless the follower is affected by a spell in the spell exemption list. |
EFFECTS_AFFECT_OBJECTS | 0 | Boolean value indicating whether objects in the room should be affected by the trap. |
EFFECTS_ALLOW_DEATH | 0 | Boolean value determining whether players/mobiles can be killed by the trap. By default the player/mobile will be taken down to 0 hit points and stunned. It is strongly recommended that this only be changed in the most harshest of areas. |
EFFECTS_OVERRIDE_COMMAND | 0 | Boolean value indicating whether activation of the trap overrides the current command. Only relevant if a command triggers and activates the trap. |
EFFECTS_BLOCK_DEPARTURE | 0 | Boolean value indicating whether activation of the trap blocks departure of the room. Only relevant if the trap is triggered and activated by attempting to exit the room. |
EFFECTS_SKIP_LOOK_ON_ARRIVAL | 0 | Boolean value indicating whether activation of the trap should stop the affected players from looking when arriving at their destination. Only relevant if the trap is triggered and activated during arrival into a new room. |
Supported effects:
Key | Description |
---|---|
Damage | Does damage to the selected targets. |
DoorState (obsolete) | Changes the state of up to 100 doors. |
Lag | Lags the selected targets. |
Portal | Opens a portal between two rooms. |
SpawnMobiles (obsolete) | Spawns one or more mobiles. |
SpawnObjects (obsolete) | Spawns one or more objects. |
Teleport | Teleports the selected targets from one room to another. |
ZoneAlarm (obsolete) | Either sets or clears the zone alarm. |
ZoneCommands | Runs a series of "new" zone commands. |
Damage
The damage effect does damage to the players/mobiles that the trap targets.
Key | Default | Description |
---|---|---|
DAMAGE_DICE | 1 | The number of dice used when calculating damage. |
DAMAGE_DIE_SIZE | 1 | The size of the die or dice used when calculating damage. |
DAMAGE_ADDITIONAL | 0 | An amount added (or subtracted) to the damage total. |
DAMAGE_TYPE | Undefined | Type of damage done. |
DAMAGE_MESSAGE_ACTOR | No message | Message shown to the player receiving damage. |
DAMAGE_MESSAGE_ROOM | No message | Message shown to the room for the player receiving damage. |
DoorState
NOTE: This functionality is better performed by the ZoneCommands effect and any new procs should use that instead of the DoorState effect.
The doorstate effect can change the states of up to 100 doors. The effect automatically sets both sides of the door to match. In the table below, the key name uses #### to represent the virtual number of the room containing the door and XXXX to represent the direction of the door in that room.
Key | Default | Description |
---|---|---|
DOOR_STATE_####_XXXX_STATE | none | Sets the door's state to either "OPEN", "CLOSED", or "LOCKED". |
DOOR_STATE_####_XXXX_MESSAGE_UNLOCKING | No message | Message sent to the room if the effect causes the door to unlock. |
DOOR_STATE_####_XXXX_MESSAGE_OPENING | No message | Message sent to the room if the effect causes the door to open. |
DOOR_STATE_####_XXXX_MESSAGE_CLOSING | No message | Message sent to the room if the effect causes the door to close. |
DOOR_STATE_####_XXXX_MESSAGE_LOCKING | No message | Message sent to the room if the effect causes the door to lock. |
Lag
The lag effect adds lag to the affected players.
Key | Default | Description |
---|---|---|
LAG_SECONDS | 0 | The number of seconds to lag the player. |
LAG_MESSAGE_ACTOR | No message | Message sent to the player when they are lagged. |
LAG_MESSAGE_ROOM | No message | Message sent to the room for each player that is lagged. |
Portal
The portal effect creates a portal from one room to another.
Key | Default | Description |
---|---|---|
PORTAL_SOURCE | -1 | Source room to create the portal. If not specified or set to -1, the proc uses the current room as the source. |
PORTAL_DESTINATION | -1 | Destination room used to create the portal. If not specified or set to -1, the proc will not run. |
PORTAL_DURATION | 3 hours | Number of hours before the portal will disappear. |
PORTAL_TWO_WAY | 1 | Boolean value indicating whether or not the portal should be two-way. |
SpawnMobiles
NOTE: This functionality is better performed by the ZoneCommands effect and any new procs should use that instead of the SpawnMobiles effect.
The spawnmobiles effect will create mobiles in one or more rooms.
Key | Default | Description |
---|---|---|
SPAWN_MOBILE_LIST | Empty | Colon (:) separated list of mobile vnums to create. The same vnum may be listed more than once, but will use the same settings for all mobiles with the same vnum. |
SPAWN_MOBILE_####_DESTINATION | -1 | Destination room to spawn the mobiles. If unspecified or set to -1, the current room is used. |
SPAWN_MOBILE_####_QUANTITY | 1 | Number of mobiles to spawn with this vnum. The current maximum value is 10. |
SPAWN_MOBILE_####_MESSAGE_ROOM | No message | Message sent to the room for each mobile spawned. |
SpawnObjects
NOTE: This functionality is better performed by the ZoneCommands effect and any new procs should use that instead of the SpawnObjects effect.
The spawnobjects effect will create mobiles in one or more rooms.
Key | Default | Description |
---|---|---|
SPAWN_OBJECT_LIST | Empty | Colon (:) separated list of object vnums to create. The same vnum may be listed more than once, but will use the same settings for all objects with the same vnum. |
SPAWN_OBJECT_####_DESTINATION | -1 | Destination room to spawn the objects. If unspecified or set to -1, the current room is used. |
SPAWN_OBJECT_####_QUANTITY | 1 | Number of objects to spawn with this vnum. The current maximum value is 10. |
SPAWN_OBJECT_####_MESSAGE_ROOM | No message | Message sent to the room for each object spawned. This message does not support $ replacement. |
Teleport
The teleport effect teleports players and/or mobiles from one room to another.
Key | Default | Description |
---|---|---|
TELEPORT_SOURCE | -1 | Source room to teleport from. If unspecified or set to -1 the proc uses the current room. |
TELEPORT_DESTINATION | -1 | Destination room to teleport to. If unspecified or set to -1 the proc uses the current room. |
TELEPORT_LOOK_AT_DESTINATION | 1 | Boolean value indicating whether players should automatically look in the room once they reach their destination. |
TELEPORT_MESSAGE_ACTOR | No message | Message sent to the player when they are teleported. |
TELEPORT_MESSAGE_SOURCE_ROOM | No message | Message sent to the source room when the player teleports away. |
TELEPORT_MESSAGE_DESTINATION_ROOM | No message | Message sent to the destination room when the player arrives. |
ZoneAlarm
NOTE: This functionality is better performed by the ZoneCommands effect and any new procs should use that instead of the ZoneAlarm effect. The ZoneAlarm effect either sets or clears the current zone's alarm.
Key | Default | Description |
---|---|---|
ZONE_ALARM_STATE | 1 | Boolean value indicating whether the alarm should be set (1) or cleared (0). |
ZONE_ALARM_ACTIVATE_MESSAGE_ROOM | No message | Message sent to the room when the alarm is activated. |
ZONE_ALARM_DEACTIVATE_MESSAGE_ROOM | No message | Message sent to the room when the alarm is deactivated. |
ZoneCommands
The ZoneCommands effect executes a number of zone commands in a specified list of rooms. Note that these zone commands are similar to the zone commands added to rooms but not identical.
Key | Default | Description |
---|---|---|
ZONE_COMMANDS_ROOM_LIST | No Rooms | A colon (:) separated list of room virtual numbers for which zone command lists exist. |
ZONE_COMMANDS_####_LIST | No commands | A list of zone commands to be executed in the room with virtual number ####. A list of available commands can be found in the table below. |
All zone commands contain a number of parameters specified on a single line. Some commands contain additional lines that specify text to be displayed when the zone command is run. Commands may be separated by blank lines and comments may be specified using the hash sign (#).
All zone commands start with the following:
Parameter | Description |
---|---|
Command Name | The name of the command. A list of command names can be found in the sections below. |
Dependency Index | The index number of a previous command that this command is dependant upon. If the dependency index is a positive value, this command will only run if the command specified in the index value also ran successfully. If the dependency index is a negative value, this command will only run if the command specified failed to run. If the dependency index is zero, the command will always run if it passes its chance test (see below) and if the command does not require a dependency index.
The AffectMobile and EquipMobile commands must have a positive index value that refers to the mobile that should be used as the target of the command. The EquipContainer command must have a positive index value that refers to the container item that the new item should be placed inside. If is value is zero or negative, the target for these commands can not be found and they will not run. The first command in the command list is considered command #1. |
Chance | Percentage change that this command will run. This value is checked after the dependency index is validated. |
Affect Mobile
Line 1 Parameter | Description |
---|---|
Command Name | AffectMobile |
Dependency Index | See above. This value must be > 0 and refer to a mobile command. |
Chance | See above. |
Affect Type | The type of affect. |
Affect Amount | The amount of the affect. |
Affect Level | The level of the affect. |
Equip Container
Line 1 Parameter | Description |
---|---|
Command Name | EquipContainer |
Dependency Index | See above. This value must be > 0 and refer to an item command. |
Chance | See above. |
Item Virtual Number | Virtual number of the item to be placed in the container. |
Equip Mobile
Line 1 Parameter | Description |
---|---|
Command Name | EquipMobile |
Dependency Index | See above. This value must be > 0 and refer to a mobile command. |
Chance | See above. |
Item Virtual Number | Virtual number of the item to be given to the mobile. |
Wear Position Index | Integer value that refers to the location where the item should be worn. May be < 0 to specify carried in inventory. |
Equip Player
Line 1 Parameter | Description |
---|---|
Command Name | EquipPlayer |
Dependency Index | See above. This value may be <= 0. |
Chance | See above. |
Item Virtual Number | Virtual number of the item to be placed in the player's inventory. |
Line 2 Parameter | Description |
Actor Message | Message displayed to the player who receives the item. This message
may contain $ codes such as $p to refer to the item. This line may be blank if no message is desired. |
Line 3 Parameter | Description |
Room Message | Message displayed to the room when the item is spawned. This message
may contain $ codes such as $n, $e to refer to the player or $p to refer to the item. This line may be blank if no message is desired. |
Send Messages
This command can be used to send messages to players in the room or the entire zone.
Line 1 Parameter | Description |
---|---|
Command Name | SendMessages |
Dependency Index | See above. This value may be <= 0. |
Chance | See above. |
Send to Zone | TRUE (1) or FALSE (0) indicating whether the 2nd message below should be sent to the entire zone rather than just the room. |
Line 2 Parameter | Description |
Actor Message | Message sent to the person that triggered the trap. This only applies if the player is still in the room when the trap is activated. This line may be blank if no message is desired. |
Line 3 Parameter | Description |
Room/Zone Message | Message sent to the room/zone when the command is run. This line may be blank if no message is desired. |
Spawn Item
Line 1 Parameter | Description |
---|---|
Command Name | SpawnItem |
Dependency Index | See above. This value may be <= 0. |
Chance | See above. |
Max in World | Integer value indicating the maximum number of this item that may exist in the world at any time. May be <= 0 to specify infinite. |
Max in Room | Integer value indicating the maximum number of this item that may exist in this room at any time. May be <= 0 to specify infinite. |
Line 2 Parameter | Description |
Room Message | Message displayed when the item is spawned to the room. This message
may contain $ codes such as $p to refer to the item. This line may be blank if no message is desired. |
Spawn Mobile
Line 1 Parameter | Description |
---|---|
Command Name | SpawnMobile |
Dependency Index | See above. This value may be <= 0. |
Chance | See above. |
Max in World | Integer value indicating the maximum number of this mobile that may exist in the world at any time. May be <= 0 to specify infinite. |
Max in Room | Integer value indicating the maximum number of this mobile that may exist in this room at any time. May be <= 0 to specify infinite. |
Aggressive Mode | String value indicating how the mobile should attack, if aggressive. Possible values are "Point", "Front", "Back", and "Random". An invalid value will default to "Point". |
Treasure Category | String value indicating what treasure category should be used to spawn random treasure items on the mobile. To use the zone default, specify an empty string by using two double-quotes (""). |
Line 2 Parameter | Description |
Room Message | Message displayed when the mobile is spawned to the room. This message
may contain $ codes such as $n, $e, etc to refer to the mobile. This line may be blank if no message is desired. |
Toggle Alarm
This command sets or clears the zone alarm.
Line 1 Parameter | Description |
---|---|
Command Name | ToggleAlarm |
Dependency Index | See above. This value may be <= 0. |
Chance | See above. |
Trigger | TRUE (1) if the alarm should be triggered or FALSE (0) if the alarm should be cleared. |
Toggle Door
Note that the Toggle Door command toggles both sides of the door, unlike the original "D" zone command. This command is considered successful only if the door's state is changed.
Line 1 Parameter | Description |
---|---|
Command Name | ToggleDoor |
Dependency Index | See above. This value may be <= 0. |
Chance | See above. |
Direction | The name or number of the direction. Can be something like "north", "south", etc or the numeric index (0-5). |
State | The state the door should toggle to. Can be OPEN, CLOSED, or LOCKED. |
Line 2 Parameter | Description |
Open/Close Message | Message displayed when the door is either opened or closed. Since the command will only perform one of these actions you can make the message specific to what the command is actually doing. This line may be left blank if no message is to be sent. |
Line 3 Parameter | Description |
Lock/Unlock Message | Message displayed when the door is either locked or unlocked. Since the command will only perform one of these actions you can make the message specific to what the command is actually doing. This line may be left blank if no message is to be sent. |
Enabling the Trap
Before the trap will be enabled, you must run the following commands:
- setproc room # PROC_ENABLED 1
In addition, setting PROC_DEBUG to 1 will send extra debugging information to those in the room.
Samples
Arrival / Teleport
setproc room 0 TRAP_INITIAL_CHARGES -1 setproc room 0 TRIGGER_TYPE Arrival setproc room 0 TRIGGER_INCLUDE_IMMORTALS 1 setproc room 0 EFFECTS_LIST Teleport setproc room 0 EFFECTS_TARGET Room setproc room 0 TELEPORT_DESTINATION 8000 setproc room 0 TELEPORT_MESSAGE_ACTOR You are blinded for a moment. setproc room 0 TELEPORT_MESSAGE_SOURCE_ROOM $n disappears in a flash of light! setproc room 0 TELEPORT_MESSAGE_DESTINATION_ROOM $n appears in a flash of light! setproc room 0 PROC_ENABLED 1
Command / Door
addproc room trap setproc room 0 TRAP_INITIAL_CHARGES -1 setproc room 0 TRIGGER_TYPE Command setproc room 0 TRIGGER_INCLUDE_IMMORTALS 1 setproc room 0 COMMAND_LIST pull lever:foo lever setproc room 0 EFFECTS_LIST DoorState setproc room 0 EFFECTS_OVERRIDE_COMMAND 1 setproc room 0 DOOR_STATE_8054_NORTH_STATE LOCKED setproc room 0 DOOR_STATE_8054_NORTH_MESSAGE_CLOSING The door slams shut! setproc room 0 DOOR_STATE_8054_NORTH_MESSAGE_LOCKING You hear the lock click! setproc room 0 PROC_ENABLED 1 addproc room trap setproc room 1 TRAP_INITIAL_CHARGES -1 setproc room 1 TRIGGER_TYPE Command setproc room 1 TRIGGER_INCLUDE_IMMORTALS 1 setproc room 1 COMMAND_LIST push lever:bar lever setproc room 1 EFFECTS_LIST DoorState setproc room 1 EFFECTS_OVERRIDE_COMMAND 1 setproc room 1 DOOR_STATE_8054_NORTH_STATE OPEN setproc room 1 DOOR_STATE_8054_NORTH_MESSAGE_OPENING The door swings open! setproc room 1 DOOR_STATE_8054_NORTH_MESSAGE_UNLOCKING *Click* setproc room 1 PROC_ENABLED 1
Password / Teleport
setproc room 0 TRAP_INITIAL_CHARGES -1 setproc room 0 TRIGGER_TYPE Password setproc room 1 TRIGGER_INCLUDE_IMMORTALS 1 setproc room 0 PASSWORD_VALUE muhahaha setproc room 0 EFFECTS_LIST Teleport setproc room 0 EFFECTS_AFFECT_ROOM 1 setproc room 0 TELEPORT_DESTINATION 8000 setproc room 0 TELEPORT_MESSAGE_ACTOR You are blinded for a moment. setproc room 0 TELEPORT_MESSAGE_SOURCE_ROOM $n disappears in a flash of light! setproc room 0 TELEPORT_MESSAGE_DESTINATION_ROOM $n appears in a flash of light! setproc room 0 PROC_ENABLED 1
Pressure Plate / Portal and Teleport
setproc room 0 TRAP_INITIALCHARGES 1 setproc room 0 TRIGGER_TYPE PressurePlate setproc room 0 TRIGGER_ACTIVATIONDELAY 5 setproc room 0 TRIGGER_MESSAGE_ACTOR You hear a click and then a thunk. setproc room 0 TRIGGER_MESSAGE_ROOM $n does something. setproc room 0 EFFECTS_LIST Damage:Portal setproc room 0 EFFECTS_TARGET Room setproc room 0 DAMAGE_DICE 3 setproc room 0 DAMAGE_DIESIZE 5 setproc room 0 DAMAGE_ADDITIONAL 1 setproc room 0 DAMAGE_MESSAGE_ACTOR You take damage! setproc room 0 DAMAGE_MESSAGE_ROOM $n takes damage! setproc room 0 PORTAL_DESTINATION 8000 setproc room 0 PROC_ENABLED 1