Files
2020-02-19 19:48:29 -08:00

63 lines
1.9 KiB
Plaintext

/datum/puzzlewizard/door/multiactivated
name = "AB CREATE: Door (requiring multiple triggers)"
var/act_needed = 0
initialize()
act_needed = input("Number of activations to open the door?", "Activation count", 1) as num
..()
build_click(var/mob/user, var/datum/buildmode_holder/holder, var/list/pa, var/atom/object)
if (pa.Find("left"))
var/turf/T = get_turf(object)
if (pa.Find("ctrl"))
finished = 1
return
if (T)
var/obj/adventurepuzzle/triggerable/door/multiactivated/door = new /obj/adventurepuzzle/triggerable/door/multiactivated(T)
door.name = door_name
door.icon_state = "door_[door_type]_closed"
door.door_type = door_type
door.act_needed = act_needed
if (door_type == "glass" || door_type == "runes")
door.opacity = 0
SPAWN_DBG(1 SECOND)
door.color = color_rgb
else if (pa.Find("right"))
if (istype(object, /obj/adventurepuzzle/triggerable/door))
object:toggle()
/obj/adventurepuzzle/triggerable/door/multiactivated
var/act_count = 0
var/act_needed = 1
var/allow_negative = 0
var/static/list/triggeracts_multi = list("Close" = "close", "Decrease activation count" = "dec", "Do nothing" = "nop", "Increase activation count" = "inc", "Lock open" = "secopen", "Open" = "open", "Toggle" = "toggle")
attackby(C as obj, mob/user as mob)
return
trigger_actions()
return triggeracts_multi
trigger(var/act)
if (act == "dec")
if(allow_negative)
act_count = act_count - 1
else if (act_count > 0)
act_count--
if (act_count < act_needed)
close()
else if (act == "inc")
act_count++
if (act_count >= act_needed)
open()
else ..()
serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
..()
F["[path].act_count"] << act_count
F["[path].act_needed"] << act_needed
deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox)
. = ..()
F["[path].act_count"] >> act_count
F["[path].act_needed"] >> act_needed