From fd7e8a3b78de40d720eb0fbc6716724e3fbb9cc0 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 1 Oct 2020 12:25:02 +0200 Subject: [PATCH] [MIRROR] MultiZ camera console actions (#1093) * MultiZ camera console actions (#54043) This adds an action button to camera consoles to move up or down a floor. * MultiZ camera console actions Co-authored-by: NightRed --- .../machinery/computer/camera_advanced.dm | 53 +++++++++++++++++- icons/mob/actions/actions_silicon.dmi | Bin 9024 -> 9892 bytes 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index c2a4f722ea2..66bacfee9fa 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -11,6 +11,10 @@ var/list/networks = list("ss13") var/datum/action/innate/camera_off/off_action = new var/datum/action/innate/camera_jump/jump_action = new + ///Camera action button to move up a Z level + var/datum/action/innate/camera_multiz_up/move_up_action = new + ///Camera action button to move down a Z level + var/datum/action/innate/camera_multiz_down/move_down_action = new var/list/actions = list() ///Should we supress any view changes? var/should_supress_view_changes = TRUE @@ -57,6 +61,16 @@ jump_action.Grant(user) actions += jump_action + if(move_up_action) + move_up_action.target = user + move_up_action.Grant(user) + actions += move_up_action + + if(move_down_action) + move_down_action.target = user + move_down_action.Grant(user) + actions += move_down_action + /obj/machinery/proc/remove_eye_control(mob/living/user) CRASH("[type] does not implement ai eye handling") @@ -74,12 +88,12 @@ user.reset_perspective(null) if(eyeobj.visible_icon && user.client) user.client.images -= eyeobj.user_image + user.client.view_size.unsupress() + eyeobj.eye_user = null user.remote_control = null - current_user = null user.unset_machine() - user.client.view_size.unsupress() playsound(src, 'sound/machines/terminal_off.ogg', 25, FALSE) /obj/machinery/computer/camera_advanced/check_eye(mob/user) @@ -195,6 +209,12 @@ return eye_user.client return null +/mob/camera/ai_eye/remote/xenobio/canZMove(direction, turf/target) + var/area/new_area = get_area(target) + if(new_area && new_area.name == allowed_area || new_area && (new_area.area_flags & XENOBIOLOGY_COMPATIBLE)) + return TRUE + return FALSE + /mob/camera/ai_eye/remote/setLoc(T) if(eye_user) T = get_turf(T) @@ -282,3 +302,32 @@ else playsound(origin, 'sound/machines/terminal_prompt_deny.ogg', 25, FALSE) +/datum/action/innate/camera_multiz_up + name = "Move up a floor" + icon_icon = 'icons/mob/actions/actions_silicon.dmi' + button_icon_state = "move_up" + +/datum/action/innate/camera_multiz_up/Activate() + if(!target || !isliving(target)) + return + var/mob/living/user_mob = target + var/mob/camera/ai_eye/remote/remote_eye = user_mob.remote_control + if(remote_eye.zMove(UP, FALSE)) + to_chat(user_mob, "You move upwards.") + else + to_chat(user_mob, "You couldn't move upwards!") + +/datum/action/innate/camera_multiz_down + name = "Move down a floor" + icon_icon = 'icons/mob/actions/actions_silicon.dmi' + button_icon_state = "move_down" + +/datum/action/innate/camera_multiz_down/Activate() + if(!target || !isliving(target)) + return + var/mob/living/user_mob = target + var/mob/camera/ai_eye/remote/remote_eye = user_mob.remote_control + if(remote_eye.zMove(DOWN, FALSE)) + to_chat(user_mob, "You move downwards.") + else + to_chat(user_mob, "You couldn't move downwards!") diff --git a/icons/mob/actions/actions_silicon.dmi b/icons/mob/actions/actions_silicon.dmi index 352eae21cffebd0813d2f3ea71b77e05cb8e1b28..8a03ef91cab722c7b3155227a43865dad06db0f7 100644 GIT binary patch literal 9892 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 EKlupg6#xJL literal 9024 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 yHwL38xW|DfXqK0YyrQC1h1lx