From e50b48d8548182db35925aac43a5aac117ebb83b Mon Sep 17 00:00:00 2001 From: Jazz23 Date: Thu, 14 Feb 2019 18:31:22 -0800 Subject: [PATCH] Hotkeys + slime scanner + hell yea --- code/__DEFINES/components.dm | 10 +- .../research/xenobiology/xenobio_camera.dm | 189 +++++++++++++++++- icons/mob/actions/actions.dmi | Bin 91133 -> 92627 bytes 3 files changed, 196 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 87b9094b47e..02b36614cb5 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -274,4 +274,12 @@ //Ouch my toes! #define CALTROP_BYPASS_SHOES 1 -#define CALTROP_IGNORE_WALKERS 2 \ No newline at end of file +#define CALTROP_IGNORE_WALKERS 2 + +//Xenobio hotkeys +#define COMSIG_XENO_SLIME_CLICK_CTRL "xeno_slime_click_ctrl" //from slime CtrlClickOn(): (/mob) +#define COMSIG_XENO_SLIME_CLICK_ALT "xeno_slime_click_alt" //from slime AltClickOn(): (/mob) +#define COMSIG_XENO_SLIME_CLICK_SHIFT "xeno_slime_click_shift" //from slime ShiftClickOn(): (/mob) +#define COMSIG_XENO_TURF_CLICK_SHIFT "xeno_turf_click_shift" //from turf ShiftClickOn(): (/mob) +#define COMSIG_XENO_TURF_CLICK_CTRL "xeno_turf_click_alt" //from turf AltClickOn(): (/mob) +#define COMSIG_XENO_MONKEY_CLICK_CTRL "xeno_monkey_click_ctrl" //from monkey CtrlClickOn(): (/mob) \ No newline at end of file diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index d9fd5265e3e..36535ee1e6b 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -27,11 +27,14 @@ var/datum/action/innate/feed_slime/feed_slime_action = new var/datum/action/innate/monkey_recycle/monkey_recycle_action = new var/datum/action/innate/transfer_potion/transfer_potion_action = new + var/datum/action/innate/hotkey_help/hotkey_help_action = new + var/datum/action/innate/slime_scan/slime_scan_action = new var/list/stored_slimes = list() var/max_slimes = 5 var/monkeys = 0 var/obj/item/slimepotion/current_potion + var/obj/item/slime_scanner/scanner = new /obj/item/slime_scanner icon_screen = "slime_comp" icon_keyboard = "rd_key" @@ -69,7 +72,32 @@ transfer_potion_action.target = src transfer_potion_action.Grant(user) actions += transfer_potion_action + + if(hotkey_help_action) + hotkey_help_action.target = src + hotkey_help_action.Grant(user) + actions += hotkey_help_action + + if(slime_scan_action) + slime_scan_action.target = src + slime_scan_action.Grant(user) + actions += slime_scan_action + RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL, .proc/XenoSlimeClickCtrl) + RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT, .proc/XenoSlimeClickAlt) + RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT, .proc/XenoSlimeClickShift) + RegisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT, .proc/XenoTurfClickShift) + RegisterSignal(user, COMSIG_XENO_TURF_CLICK_CTRL, .proc/XenoTurfClickCtrl) + RegisterSignal(user, COMSIG_XENO_MONKEY_CLICK_CTRL, .proc/XenoMonkeyClickCtrl) + +/obj/machinery/computer/camera_advanced/xenobio/remove_eye_control(mob/living/user) + UnregisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL) + UnregisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT) + UnregisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT) + UnregisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT) + UnregisterSignal(user, COMSIG_XENO_TURF_CLICK_CTRL) + UnregisterSignal(user, COMSIG_XENO_MONKEY_CLICK_CTRL) + ..() /obj/machinery/computer/camera_advanced/xenobio/attack_hand(mob/user) if(!ishuman(user)) //AIs using it might be weird @@ -191,7 +219,7 @@ /datum/action/innate/transfer_potion name = "Transfer Potion" - button_icon_state = "transfer_potion" + button_icon_state = "slime_potion" /datum/action/innate/transfer_potion/Activate() if(!target || !ishuman(owner)) @@ -211,4 +239,161 @@ X.current_potion.attack(S, C) break else - to_chat(owner, "Target is not near a camera. Cannot proceed.") \ No newline at end of file + to_chat(owner, "Target is not near a camera. Cannot proceed.") + +/datum/action/innate/hotkey_help + name = "Hotkey Help" + button_icon_state = "hotkey_help" + +/datum/action/innate/hotkey_help/Activate() + if(!target || !isliving(owner)) + return + to_chat(owner, "Click shortcuts:") + to_chat(owner, "Shift-click a slime to pick it up, or the floor to drop all held slimes.") + to_chat(owner, "Ctrl-click a slime to scan it.") + to_chat(owner, "Alt-click a slime to feed it a potion.") + to_chat(owner, "Ctrl-click or a dead monkey to recycle it, or the floor to place a new monkey.") + +/datum/action/innate/slime_scan + name = "Scan Slime" + button_icon_state = "slime_scan" + +/datum/action/innate/slime_scan/Activate() + if(!target || !isliving(owner)) + return + var/mob/living/C = owner + var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/X = target + + if(cameranet.checkTurfVis(remote_eye.loc)) + for(var/mob/living/carbon/slime/S in remote_eye.loc) + X.scanner.attack(S, C) + else + to_chat(owner, "Target is not near a camera. Cannot proceed.") + +// +// Alternate clicks for slime, monkey and open turf if using a xenobio console + +// Scans slime +/mob/living/carbon/slime/CtrlClick(mob/user) + SEND_SIGNAL(user, COMSIG_XENO_SLIME_CLICK_CTRL, src) + ..() + +//Feeds a potion to slime +/mob/living/carbon/slime/AltClick(mob/user) + SEND_SIGNAL(user, COMSIG_XENO_SLIME_CLICK_ALT, src) + ..() + +//Picks up slime +/mob/living/carbon/slime/ShiftClick(mob/user) + SEND_SIGNAL(user, COMSIG_XENO_SLIME_CLICK_SHIFT, src) + ..() + +//Place slimes +/turf/simulated/ShiftClick(mob/user) + SEND_SIGNAL(user, COMSIG_XENO_TURF_CLICK_SHIFT, src) + ..() + +//Place monkey +/turf/simulated/CtrlClick(mob/user) + SEND_SIGNAL(user, COMSIG_XENO_TURF_CLICK_CTRL, src) + ..() + +//Pick up monkey +/mob/living/carbon/monkey/CtrlClick(mob/user) + SEND_SIGNAL(user, COMSIG_XENO_MONKEY_CLICK_CTRL, src) + ..() + +// Scans slime +/obj/machinery/computer/camera_advanced/xenobio/proc/XenoSlimeClickCtrl(mob/living/user, mob/living/carbon/slime/S) + if(!cameranet.checkTurfVis(S.loc)) + to_chat(user, "Target is not near a camera. Cannot proceed.") + return + var/mob/living/C = user + var/mob/camera/aiEye/remote/xenobio/E = C.remote_control + var/area/mobarea = get_area(S.loc) + if(mobarea.name == E.allowed_area || mobarea.xenobiology_compatible) + scanner.attack(S, C) + +//Feeds a potion to slime +/obj/machinery/computer/camera_advanced/xenobio/proc/XenoSlimeClickAlt(mob/living/user, mob/living/carbon/slime/S) + if(!cameranet.checkTurfVis(S.loc)) + to_chat(user, "Target is not near a camera. Cannot proceed.") + return + var/mob/living/C = user + var/mob/camera/aiEye/remote/xenobio/E = C.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin + var/area/mobarea = get_area(S.loc) + if(QDELETED(X.current_potion)) + to_chat(C, "No potion loaded.") + return + if(mobarea.name == E.allowed_area || mobarea.xenobiology_compatible) + X.current_potion.attack(S, C) + +//Picks up slime +/obj/machinery/computer/camera_advanced/xenobio/proc/XenoSlimeClickShift(mob/living/user, mob/living/carbon/slime/S) + if(!cameranet.checkTurfVis(S.loc)) + to_chat(user, "Target is not near a camera. Cannot proceed.") + return + var/mob/living/C = user + var/mob/camera/aiEye/remote/xenobio/E = C.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin + var/area/mobarea = get_area(S.loc) + if(mobarea.name == E.allowed_area || mobarea.xenobiology_compatible) + if(X.stored_slimes.len >= X.max_slimes) + return + if(!S.ckey) + if(S.buckled) + S.buckled.unbuckle_mob() + S.Feedstop() + S.visible_message("[S] vanishes in a flash of light!") + S.forceMove(X) + X.stored_slimes += S + +//Place slimes +/obj/machinery/computer/camera_advanced/xenobio/proc/XenoTurfClickShift(mob/living/user, turf/T) + if(!cameranet.checkTurfVis(T)) + to_chat(user, "Target is not near a camera. Cannot proceed.") + return + var/mob/living/C = user + var/mob/camera/aiEye/remote/xenobio/E = C.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin + var/area/turfarea = get_area(T) + if(turfarea.name == E.allowed_area || turfarea.xenobiology_compatible) + for(var/mob/living/carbon/slime/S in X.stored_slimes) + S.forceMove(T) + S.visible_message("[S] warps in!") + X.stored_slimes -= S + +//Place monkey +/obj/machinery/computer/camera_advanced/xenobio/proc/XenoTurfClickCtrl(mob/living/user, turf/T) + if(!cameranet.checkTurfVis(T)) + to_chat(user, "Target is not near a camera. Cannot proceed.") + return + var/mob/living/C = user + var/mob/camera/aiEye/remote/xenobio/E = C.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin + var/area/turfarea = get_area(T) + + if(turfarea.name == E.allowed_area || turfarea.xenobiology_compatible) + if(X.monkeys >= 1) + var/mob/living/carbon/human/monkey/food = new /mob/living/carbon/human/monkey(E.loc) + food.LAssailant = C + X.monkeys -- + to_chat(user, "[X] now has [X.monkeys] monkeys left.") + +//Pick up monkey +/obj/machinery/computer/camera_advanced/xenobio/proc/XenoMonkeyClickCtrl(mob/living/user, mob/living/carbon/monkey/M) + if(!cameranet.checkTurfVis(M.loc)) + to_chat(user, "Target is not near a camera. Cannot proceed.") + return + var/mob/living/C = user + var/mob/camera/aiEye/remote/xenobio/E = C.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin + var/area/mobarea = get_area(M.loc) + + if(mobarea.name == E.allowed_area || mobarea.xenobiology_compatible) + if(issmall(M) && M.stat) + M.visible_message("[M] vanishes as [M.p_theyre()] reclaimed for recycling!") + X.monkeys = round(X.monkeys + 0.2,0.1) + qdel(M) diff --git a/icons/mob/actions/actions.dmi b/icons/mob/actions/actions.dmi index fdc89eb09a6579ebcf8649fcd551691ad41cb247..d21323c80b1e697376d761ab9ae13ec647215c29 100644 GIT binary patch delta 13114 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