diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 1660feedca..8f8508c412 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -22,13 +22,13 @@ desc = "A computer used for remotely handling slimes." networks = list("ss13") circuit = /obj/item/circuitboard/computer/xenobiology - var/datum/action/innate/slime_place/slime_place_action - var/datum/action/innate/slime_pick_up/slime_up_action - var/datum/action/innate/feed_slime/feed_slime_action - var/datum/action/innate/monkey_recycle/monkey_recycle_action - var/datum/action/innate/slime_scan/scan_action - var/datum/action/innate/feed_potion/potion_action - var/datum/action/innate/hotkey_help/hotkey_help + var/datum/action/innate/slime_place/slime_place_action = /datum/action/innate/slime_place + var/datum/action/innate/slime_pick_up/slime_up_action = /datum/action/innate/slime_pick_up + var/datum/action/innate/feed_slime/feed_slime_action = /datum/action/innate/feed_slime + var/datum/action/innate/monkey_recycle/monkey_recycle_action = /datum/action/innate/monkey_recycle + var/datum/action/innate/slime_scan/scan_action = /datum/action/innate/slime_scan + var/datum/action/innate/feed_potion/potion_action = /datum/action/innate/feed_potion + var/datum/action/innate/hotkey_help/hotkey_help = /datum/action/innate/hotkey_help var/list/stored_slimes var/obj/item/slimepotion/slime/current_potion @@ -43,16 +43,16 @@ /obj/machinery/computer/camera_advanced/xenobio/Initialize(mapload) . = ..() - slime_place_action = new - slime_up_action = new - feed_slime_action = new - monkey_recycle_action = new - scan_action = new - potion_action = new - hotkey_help = new + + generate_actions() + stored_slimes = list() RegisterSignal(src, COMSIG_ATOM_CONTENTS_DEL, PROC_REF(on_contents_del)) +/obj/machinery/computer/camera_advanced/xenobio/proc/generate_actions() + actions += new scan_action(src) + actions += new hotkey_help(src) + /obj/machinery/computer/camera_advanced/xenobio/Destroy() stored_slimes = null QDEL_NULL(current_potion) @@ -72,41 +72,6 @@ /obj/machinery/computer/camera_advanced/xenobio/GrantActions(mob/living/user) ..() - if(slime_up_action && (upgradetier & XENOBIO_UPGRADE_SLIMEBASIC)) //CIT CHANGE - makes slime-related actions require XENOBIO_UPGRADE_SLIMEBASIC - slime_up_action.target = src - slime_up_action.Grant(user) - actions += slime_up_action - - if(slime_place_action && (upgradetier & XENOBIO_UPGRADE_SLIMEBASIC)) //CIT CHANGE - makes slime-related actions require XENOBIO_UPGRADE_SLIMEBASIC - slime_place_action.target = src - slime_place_action.Grant(user) - actions += slime_place_action - - if(feed_slime_action && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS - feed_slime_action.target = src - feed_slime_action.Grant(user) - actions += feed_slime_action - - if(monkey_recycle_action && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS - monkey_recycle_action.target = src - monkey_recycle_action.Grant(user) - actions += monkey_recycle_action - - if(scan_action) - scan_action.target = src - scan_action.Grant(user) - actions += scan_action - - if(potion_action && (upgradetier & XENOBIO_UPGRADE_SLIMEADV)) // CIT CHANGE - makes giving slimes potions via console require XENOBIO_UPGRADE_SLIMEADV - potion_action.target = src - potion_action.Grant(user) - actions += potion_action - - if(hotkey_help) - hotkey_help.target = src - hotkey_help.Grant(user) - actions += hotkey_help - RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL, PROC_REF(XenoSlimeClickCtrl)) RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT, PROC_REF(XenoSlimeClickAlt)) RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT, PROC_REF(XenoSlimeClickShift)) @@ -139,10 +104,21 @@ else upgradetier |= I successfulupgrade = TRUE + if(I == XENOBIO_UPGRADE_SLIMEBASIC) + actions += new slime_up_action(src) + actions += new slime_place_action(src) if(I == XENOBIO_UPGRADE_SLIMEADV) + actions += new potion_action(src) max_slimes = 10 + if(I == XENOBIO_UPGRADE_MONKEYS) + actions += new feed_slime_action(src) + actions += new monkey_recycle_action(src) if(successfulupgrade) to_chat(user, "You have successfully upgraded [src] with [O].") + + for(var/datum/action/actions_removed as anything in actions) + actions_removed.Remove(current_user) + GrantActions(current_user) else to_chat(user, "[src] already has the contents of [O] installed!") return