/datum/puzzlewizard/trigger name = "AB CREATE: Invisible trigger" var/trigger_count = 1 var/list/selected_triggerable = list() var/selection initialize() selection = unpool(/obj/adventurepuzzle/marker) trigger_count = input("How many times should this trigger work? (-1 = infinite)", "Trigger count", 1) as num boutput(usr, "Left click to place triggers, right click triggerables to (de)select them for automatic assignment to the triggers. Ctrl+click anywhere to finish.") boutput(usr, "NOTE: Select stuff first, then make triggers for extra comfort!") proc/clear_selections() for (var/obj/O in selected_triggerable) O.overlays -= selection selected_triggerable.len = 0 disposing() clear_selections() pool(selection) 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 clear_selections() return if (T) var/obj/adventurepuzzle/triggerer/trigger/trigger = new /obj/adventurepuzzle/triggerer/trigger(T) trigger.icon_state = "trigger" trigger.triggered = selected_triggerable.Copy() trigger.trigger_count = trigger_count else if (pa.Find("right")) if (istype(object, /obj/adventurepuzzle/triggerable)) if (object in selected_triggerable) object.overlays -= selection selected_triggerable -= object else var/list/actions = object:trigger_actions() if (islist(actions) && actions.len) var/act_name = input("Do what?", "Do what?", actions[1]) in actions var/act = actions[act_name] object.overlays += selection selected_triggerable += object selected_triggerable[object] = act else boutput(usr, "ERROR: Missing actions definition for triggerable [object].") /obj/adventurepuzzle/triggerer/trigger name = "invisible trigger" invisibility = 20 icon_state = "trigger" density = 0 opacity = 0 anchored = 1 var/trigger_count = 1 Crossed(atom/movable/O) if (isliving(O) && trigger_count) if (trigger_count > 0) trigger_count-- post_trigger() serialize(var/savefile/F, var/path, var/datum/sandbox/sandbox) ..() F["[path].trigger_count"] << trigger_count deserialize(var/savefile/F, var/path, var/datum/sandbox/sandbox) . = ..() F["[path].trigger_count"] >> trigger_count