From 4f5dd83be94d3377b90f9f316f479b2dbfc8e845 Mon Sep 17 00:00:00 2001 From: Dax Dupont Date: Mon, 19 Feb 2018 21:38:46 +0100 Subject: [PATCH 1/2] Adds tutorial holopads for the hazard course. (#35464) * Hazard Course * Hello, and welcome to the Black Mesa Hazard Course, where you'll be trained in the use of a Hazardous Environment Suit. * Ain't no grave --- code/game/machinery/hologram.dm | 76 ++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 19 deletions(-) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 211391a56b..96d68d094d 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -59,10 +59,44 @@ Possible to do for anyone motivated enough: var/static/list/holopads = list() var/obj/effect/overlay/holoray/ray var/offset = FALSE + var/on_network = TRUE + +/obj/machinery/holopad/tutorial + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + flags_1 = NODECONSTRUCT_1 + on_network = FALSE + var/proximity_range = 1 + +/obj/machinery/holopad/tutorial/Initialize(mapload) + . = ..() + if(proximity_range) + proximity_monitor = new(src, proximity_range) + if(mapload) + var/obj/item/disk/holodisk/new_disk = locate(/obj/item/disk/holodisk) in src.loc + if(new_disk && !disk) + new_disk.forceMove(src) + disk = new_disk + +/obj/machinery/holopad/tutorial/attack_hand(mob/user) + if(!istype(user)) + return + if(user.incapacitated() || !is_operational()) + return + if(replay_mode) + replay_stop() + else if(disk && disk.record) + replay_start() + +/obj/machinery/holopad/tutorial/HasProximity(atom/movable/AM) + if (!isliving(AM)) + return + if(!replay_mode && (disk && disk.record)) + replay_start() /obj/machinery/holopad/Initialize() . = ..() - holopads += src + if(on_network) + holopads += src /obj/machinery/holopad/Destroy() if(outgoing_call) @@ -150,8 +184,9 @@ Possible to do for anyone motivated enough: if(temp) dat = temp else - dat = "Request an AI's presence
" - dat += "Call another holopad
" + if(on_network) + dat += "Request an AI's presence
" + dat += "Call another holopad
" if(disk) if(disk.record) //Replay @@ -168,23 +203,24 @@ Possible to do for anyone motivated enough: if(LAZYLEN(holo_calls)) dat += "=====================================================
" - var/one_answered_call = FALSE - var/one_unanswered_call = FALSE - for(var/I in holo_calls) - var/datum/holocall/HC = I - if(HC.connected_holopad != src) - dat += "Answer call from [get_area(HC.calling_holopad)]
" - one_unanswered_call = TRUE - else - one_answered_call = TRUE + if(on_network) + var/one_answered_call = FALSE + var/one_unanswered_call = FALSE + for(var/I in holo_calls) + var/datum/holocall/HC = I + if(HC.connected_holopad != src) + dat += "Answer call from [get_area(HC.calling_holopad)]
" + one_unanswered_call = TRUE + else + one_answered_call = TRUE - if(one_answered_call && one_unanswered_call) - dat += "=====================================================
" - //we loop twice for formatting - for(var/I in holo_calls) - var/datum/holocall/HC = I - if(HC.connected_holopad == src) - dat += "Disconnect call from [HC.user]
" + if(one_answered_call && one_unanswered_call) + dat += "=====================================================
" + //we loop twice for formatting + for(var/I in holo_calls) + var/datum/holocall/HC = I + if(HC.connected_holopad == src) + dat += "Disconnect call from [HC.user]
" var/datum/browser/popup = new(user, "holopad", name, 300, 175) @@ -292,6 +328,8 @@ Possible to do for anyone motivated enough: /obj/machinery/holopad/attack_ai(mob/living/silicon/ai/user) if (!istype(user)) return + if (!on_network) + return /*There are pretty much only three ways to interact here. I don't need to check for client since they're clicking on an object. This may change in the future but for now will suffice.*/