Table of Contents

Doors

Most of the settings of the doors are set automatically by the fixupmodule script. It will fill up the script names, set the HP, and Plot settings, add Appearance and GenericType variables and make sure each door has unique tag. It will also set all nonlocked nonlockable door to be lockable, and requiring key dm_quest_key. This way dm can lock any door and players cannot open them.

Note! Do not make any other door scripts, but use the default scripts and use the Hooks to modify the behavior of the standard scripts.

Scripts

Script Slot Script
OnClick cp_g_d_click
OnClosed cp_g_d_closed
OnDamaged cp_g_d_damaged
OnFailToOpen cp_g_d_failtoopen
OnLock cp_g_d_lock
OnOpen cp_g_d_open
OnUnlock cp_g_d_unlock

cp_g_d_click can also be used in the OnUsed slot in case the item is placeable instead of door. All those scripts are set automatically by the fixupmodule, but you can also manually set them if you do not want to run the fixupmodule script before testing.

Variables on Doors

Generic

Following variables can be put on the doors:

Variable Type Description
door_keep_open int Setting this on door will keep the door open, i.e. no automatic closing of door.
door_radius float Distance from door which is checked to see if there is someone, and if so then doors is not closed. Default is 20.0 meters. If it is < 0, then players near door are not checked at all.
door_delay float Number of seconds to wait before checking whether the door should be closed. If not set then default is 180.0 seconds. If it is < 0, then doors will never be closed.

Destination and Movement

Variable Type Description
destination location Location where you transfer when you click on the open door. This is used first if set. Then destination string tag is used next, and then the WP_ + tag of the door third.
destination string Waypoint / object / door tag to where to transfer when the door is used. The nearest object is used if it is on the same area, if no object is found from the same area, then use the first object on other areas.
adjust_distance float Number of meters to adjust the position of player after the jump. Default is 2.0 meters for doors, and 0.0 for others.
adjust_direction float Direction where to adjust the player after the jump. Default is towards the facing of the object or away from it for doors.
adjust_facing float Number of degrees to adjust the player facing after the transfer. Default is set the player facing towards to same direction as object, and then adjust it with this. For doors default is 180.0 so player is turned away from door. For other objects this is 0.0, so player is left facing to same direction as object.
direct_transfer int If set on placeable then player is transfered directly to the target, otherwise the open animation is played first. For doors, trapdoors etc this should not be set, as they require the open animation, but for the tents, portals etc the open animation does not do anything so setting this will cause players to transfer on the first click.

Keys and Locking

Variable Type Description
key_tags string Comma separated list of tags which can be used as keys. The list is checked in the order. If the tag ends with *, then any tag starting with that prefix is accepted (note, that do not put too many of those on the list, and put them as last items on the list, as those require going through the full inventory of player every time). The list can also have :baseitem at the end to limit the tag for specific baseitem type.
key_tags_remove string Same as key_tags, but the object is removed after it is used as a key. Key_tags is checked first and then this.
takekey int If this is set true then the KeyTag set on the door is removed after it is used to open door.
door_lock_delay float Timeout after which the door is locked again in seconds. Default is 240. If it is < 0 then doors are not locked again.
door_keep_unlocked int If set then door is not relocked.
door_keep_locked int Door will automatically relock itself immediately when it is unlocked.
damage_limit int Number of hits required to break the lock. Default is DC*DC*DC/80. If < 0, then player cannot break the lock regardless of damage.

Detection of Invisible Creatures

Variable Type Description
door_notice_distance float Number of meters how far the creatures will try to detect player if he is invisible. Default is 10.0 meters.
door_notice_multiplier float Multipler for the distance in meters from the door to creature to get the DC of the SPOT check. Default is 2.0. If creature is 7 meters from door, and this is set to 2, then the DC for the creature to SPOT the door opening is 14.

Placeables

Variable Type Description
placeable_delay float Number of seconds after which the placeable is closed when open. Default is 60 seconds.
placeable_entry_delay float Number of seconds after which the placeable is closed when someone enters it. Default is 10 seconds.
open_animation int Animation to use to open door, defaults to ANIMATION_LOOPING_GET_MID (13), _GET_LOW = 12.

Linked Doors

Variable Type Description
door_unlock_unlinked int If set then do not unlock the linked door when this door is unlocked.
door_lock_unlinked int If set then do not lock the linked door when this door is locked.

Visual Effects

Variable Type Description
transfer_vfx int Visual effect number to apply on the door when player goes through it. If 0, then no visual effect is played.
transfer_vfx_type int Type of the visual effect 0 == DURATION_TYPE_INSTANT (default), 1 == DURATION_TYPE_TEMPORARY, 2 == DURATION_TYPE_PERMANENT
transfer_vfx_duration float Duration of the effect (only for DURATION_TYPE_TEMPORARY, default is 0.0 seconds).
transfer_vfx_delay float How much the effect is delayed. Default is 0.0 seconds.
transfer_vfx_target* * Same as transfer_vfx*, but for the target door / placeable (does not work for the location).
transfer_vfx_player* * Same as transfer_vfx*, but for the player going through.
force_vfx* * Similar than transfer_vfx*, but for door, when player succeeds breaking the lock.
force_vfx_player* * Similar than force_vfx*, but for player, when player succeeds breaking the lock.
damage_vfx* * Similar than force_vfx*, but for door, when player damages it, but does not break it yet.
damage_vfx_player* * Similar than damage_vfx*, but for player.
open_vfx* * Similar than transfer_vfx*, but for door, when player opens it.
open_vfx_player* * Similar than open_vfx*, but for player.
lock_vfx* * Similar than transfer_vfx*, but for door when player locks it.
lock_vfx_player* * Similar than transfer_vfx*, but for player.
unlock_vfx* * Similar than transfer_vfx*, but for door when player unlocks it.
unlock_vfx_player* * Similar than transfer_vfx*, but for player.

Hooks

Following variables can be on the door, and they set the hooks that will be called before the actual operation happens.

OnUsed, OnAreaTransitionClick, OnClose, OnDamaged, OnDestroyed, OnFailToOpen, OnLock, OnOpen, OnUnLock.

See hooks for more information.

Variables on Secret Trigger

Following variables are on the trigger of secret door:

Variable Type Description
secret_dc int DC of the secret, if not set use the KeyTag of trigger
secret_skill int Default skill number to use for searching the secret if not set, then use SKILL_SEARCH. Cannot use ANIMAL_EMPATHY
secret_class int Class who can easily detect. Use for example the numeric value of CLASS_TYPE_RANGER.
secret_class_dc int DC (class level + d4) for that class to detect, must be set if secret_class is set.
secret_locked int Should the secret object be revealed as locked (set to 1), or should it be left as it is now (i.e keep the status from the resref)
secret_announce int if set to true, then play voice chat when the secret is found (cp_g_d_secret does this)
secret_announce_vfx* * Similar than transfer_vfx*, but for player who notices the secret.
secret_henchman_vfx* * Similar than transfer_vfx*, but for henchman who notices the secret.
secret_reveal_vfx* * Similar than transfer_vfx*, but for secret door when it appear
secret_reset_vfx* * Similar than transfer_vfx*, but for secret door when it disappears
secret_delay float Amount of seconds after the door is again hidden. If < 0, then it is not hidden again. If 0 then default of 30 seconds is used.
secret_keep int If set then do not hide the door.
secret_radius float If player is closer than this do not hide door. If 0.0 then use default of 5.0 meters.
location location Location where the secret object is created.
location string Name of the waypoint where the secret object is created
location_adj_z float Adjustment of the z axis for the location waypoint.
secret_resref string ResRef of the secret revealed. XXX for wall doors, and cp_tk_secret_trapdoor (z-adjustment = -1.25) for trap doors (none yet)
secret_vars string Comma separated list of variables to be copied from the trigger to the item created. All door related variables above are automatically copied from the trigger to door.
reveal_tags string Comma separated list of tags of the items, which reveals the trigger to user without skill check if posessed by the user
secret_tag string New tag for the item created.

Variables on Area

Variable Type Description
door_keep_open int Setting this on area will keep all doors open in the area.
door_radius float Distance from door which is checked to see if there is someone, and if so then doors is not closed. Default is 20.0 meters. If it is < 0, then players near door are not checked at all.
door_delay float Number of seconds to wait before checking whether the door should be closed. If not set then default is 180.0 seconds. If it is < 0, then doors will never be closed.
door_lock_delay float Timeout after which the doors in the area are locked again again in seconds. Default is 240. If it is < 0 then doors are not locked again.
door_keep_unlocked int Setting this on the are will keep door from locking.
door_notice_distance float Number of meters how far the creatures will try to detect player if he is invisible. Default is 10.0 meters.
door_notice_multiplier float Multipler for the distance in meters from the door to creature to get the DC of the SPOT check. Default is 2.0. If creature is 7 meters from door, and this is set to 2, then the DC for the creature to SPOT the door opening is 14.
door_keep_locked int Door will automatically relock itself immediately when it is unlocked.
damage_limit int Number of hits required to break the lock. Default is DC*DC*DC/80. If < 0, then player cannot break the lock regardless of damage.
secret_delay float Amount of seconds after the door is again hidden. If < 0, then it is not hidden again. If 0 then default of 30 seconds is used.
secret_keep int If set then do not hide the door.
secret_radius float If player is closer than this do not hide door. If 0.0 then use default of 5.0 meters.