diff --git a/code/modules/antagonists/abductor/machinery/camera.dm b/code/modules/antagonists/abductor/machinery/camera.dm index 4fb6bf5645..16c7f75ac9 100644 --- a/code/modules/antagonists/abductor/machinery/camera.dm +++ b/code/modules/antagonists/abductor/machinery/camera.dm @@ -2,13 +2,10 @@ name = "Human Observation Console" var/team_number = 0 networks = list("ss13", "abductor") - var/datum/action/innate/teleport_in/tele_in_action = /datum/action/innate/teleport_in - var/datum/action/innate/teleport_out/tele_out_action = /datum/action/innate/teleport_out - var/datum/action/innate/teleport_self/tele_self_action = /datum/action/innate/teleport_self - var/datum/action/innate/vest_mode_swap/vest_mode_action = /datum/action/innate/vest_mode_swap - var/datum/action/innate/vest_disguise_swap/vest_disguise_action = /datum/action/innate/vest_disguise_swap - var/datum/action/innate/set_droppoint/set_droppoint_action = /datum/action/innate/set_droppoint var/obj/machinery/abductor/console/console + /// We can't create our actions until after LateInitialize + /// So we instead do it on the first call to GrantActions + var/abduct_created = FALSE lock_override = TRUE icon = 'icons/obj/abductor.dmi' @@ -16,27 +13,28 @@ icon_keyboard = null resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF +/obj/machinery/computer/camera_advanced/abductor/Destroy() + if(console) + console.camera = null + console = null + return ..() + /obj/machinery/computer/camera_advanced/abductor/CreateEye() - ..() + . = ..() eyeobj.visible_icon = TRUE eyeobj.icon = 'icons/mob/cameramob.dmi' eyeobj.icon_state = "generic_camera" -/obj/machinery/computer/camera_advanced/abductor/Initialize(mapload) - . = ..() - - if(tele_in_action) - actions += new tele_in_action(src) - if(tele_out_action) - actions += new tele_out_action(src) - if(tele_self_action) - actions += new tele_self_action(src) - if(vest_mode_action) - actions += new vest_mode_action(src) - if(vest_disguise_action) - actions += new vest_disguise_action(src) - if(set_droppoint_action) - actions += new set_droppoint_action(src) +/obj/machinery/computer/camera_advanced/abductor/GrantActions(mob/living/carbon/user) + if(!abduct_created) + abduct_created = TRUE + actions += new /datum/action/innate/teleport_in(console.pad) + actions += new /datum/action/innate/teleport_out(console) + actions += new /datum/action/innate/teleport_self(console.pad) + actions += new /datum/action/innate/vest_mode_swap(console) + actions += new /datum/action/innate/vest_disguise_swap(console) + actions += new /datum/action/innate/set_droppoint(console) + ..() /obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(mob/living/carbon/human/H) return HAS_TRAIT(H, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) @@ -47,7 +45,7 @@ button_icon_state = "beam_down" /datum/action/innate/teleport_in/Activate() - if(QDELETED(owner) || !iscarbon(owner)) + if(QDELETED(target) || !iscarbon(owner)) return var/mob/camera/aiEye/remote/remote_eye = owner.remote_control var/obj/machinery/abductor/pad/P = target @@ -61,7 +59,7 @@ button_icon_state = "beam_up" /datum/action/innate/teleport_out/Activate() - if(QDELETED(owner) || !iscarbon(owner)) + if(QDELETED(target) || !iscarbon(owner)) return var/obj/machinery/abductor/console/console = target @@ -73,7 +71,7 @@ button_icon_state = "beam_down" /datum/action/innate/teleport_self/Activate() - if(QDELETED(owner) || !iscarbon(owner)) + if(QDELETED(target) || !iscarbon(owner)) return var/mob/camera/aiEye/remote/remote_eye = owner.remote_control var/obj/machinery/abductor/pad/P = target @@ -87,7 +85,7 @@ button_icon_state = "vest_mode" /datum/action/innate/vest_mode_swap/Activate() - if(QDELETED(owner) || !iscarbon(owner)) + if(QDELETED(target) || !iscarbon(owner)) return var/obj/machinery/abductor/console/console = target console.FlipVest() @@ -99,7 +97,7 @@ button_icon_state = "vest_disguise" /datum/action/innate/vest_disguise_swap/Activate() - if(QDELETED(owner) || !iscarbon(owner)) + if(QDELETED(target) || !iscarbon(owner)) return var/obj/machinery/abductor/console/console = target console.SelectDisguise(remote=1) @@ -110,7 +108,7 @@ button_icon_state = "set_drop" /datum/action/innate/set_droppoint/Activate() - if(QDELETED(owner) || !iscarbon(owner)) + if(QDELETED(target) || !iscarbon(owner)) return var/mob/camera/aiEye/remote/remote_eye = owner.remote_control