mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 16:47:13 +01:00
Add ectoscopic sniffer to Robotics Labs (#59494)
This PR adds a new machine; the ectoscopic sniffer, to the robotics lab on each map. The sniffer is small desktop machine used for detecting paranormal activity, it displays a green flash and a chime every time it is touched(as in attacked) by a ghost. It has a single wire inside, when this wire is pulsed, it triggers the animation and chime, as if touched by a ghost, maybe some enterprising crewmember can use this to their advantage. When this wire is cut, the device won't trigger, no matter how many spooks or haunts touch it. --- This PR is above all fun. Of course, it can be used as the author of the previous PR intended; to alert the roboticists of souls willing to occupy a positronic brain. Clever spacemen will always figure out how to use this kind of device for more creative parascientifc research. It is still limited by its low bitrate and the very low quality of the information as compared to something like ghost court, since a single malevolent spirit is able to feed the living bullshit. Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This commit is contained in:
@@ -30437,6 +30437,10 @@
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/machinery/ecto_sniffer{
|
||||
pixel_x = -6;
|
||||
pixel_y = 6
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/science/robotics/lab)
|
||||
"dCq" = (
|
||||
|
||||
@@ -11736,6 +11736,10 @@
|
||||
/obj/structure/table,
|
||||
/obj/machinery/cell_charger,
|
||||
/obj/item/stock_parts/cell/high/plus,
|
||||
/obj/machinery/ecto_sniffer{
|
||||
pixel_x = 6;
|
||||
pixel_y = 6
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/science/robotics/lab)
|
||||
"bpX" = (
|
||||
|
||||
@@ -15349,8 +15349,13 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen,
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = 6;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/machinery/ecto_sniffer{
|
||||
pixel_x = -6
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/science/robotics/lab)
|
||||
"aXj" = (
|
||||
|
||||
@@ -34360,12 +34360,6 @@
|
||||
pixel_x = 5;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/machinery/requests_console/directional/north{
|
||||
department = "Robotics";
|
||||
departmentType = 5;
|
||||
name = "Robotics Requests Console";
|
||||
receive_ore_updates = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/science/robotics/lab)
|
||||
"jmL" = (
|
||||
@@ -77549,26 +77543,6 @@
|
||||
"xwa" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = -1;
|
||||
pixel_y = -1
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 3;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 1;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = -4;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/bodypart/r_arm/robot{
|
||||
pixel_x = 3
|
||||
},
|
||||
@@ -77577,6 +77551,30 @@
|
||||
},
|
||||
/obj/structure/extinguisher_cabinet/directional/north,
|
||||
/obj/machinery/firealarm/directional/west,
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/machinery/ecto_sniffer{
|
||||
pixel_x = -6;
|
||||
pixel_y = 6
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/science/robotics/lab)
|
||||
"xwd" = (
|
||||
|
||||
@@ -49846,12 +49846,33 @@
|
||||
/area/medical/medbay/central)
|
||||
"pjl" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/machinery/ecto_sniffer{
|
||||
pixel_x = -4
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/item/assembly/flash/handheld{
|
||||
pixel_x = 6;
|
||||
pixel_y = 13
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/science/robotics/lab)
|
||||
"pjm" = (
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/datum/wires/ecto_sniffer
|
||||
proper_name = "Ectoscopic Sniffer"
|
||||
randomize = TRUE //Only one wire don't need blueprints
|
||||
holder_type = /obj/machinery/ecto_sniffer
|
||||
|
||||
/datum/wires/ecto_sniffer/New(atom/holder)
|
||||
wires = list(WIRE_ACTIVATE)
|
||||
..()
|
||||
|
||||
/datum/wires/ecto_sniffer/on_pulse(wire)
|
||||
var/obj/machinery/ecto_sniffer/our_sniffer = holder
|
||||
our_sniffer.activate()
|
||||
..()
|
||||
|
||||
/datum/wires/ecto_sniffer/on_cut(wire, mend)
|
||||
var/obj/machinery/ecto_sniffer/our_sniffer = holder
|
||||
our_sniffer.sensor_enabled = mend
|
||||
@@ -0,0 +1,82 @@
|
||||
/obj/machinery/ecto_sniffer
|
||||
name = "ectoscopic sniffer"
|
||||
desc = "A highly sensitive parascientific instrument calibrated to detect the slightest whiff of ectoplasm."
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
icon_state = "ecto_sniffer"
|
||||
density = FALSE
|
||||
anchored = FALSE
|
||||
pass_flags = PASSTABLE
|
||||
circuit = /obj/item/circuitboard/machine/ecto_sniffer
|
||||
///determines if the device if the power switch is turned on or off. Useful if the ghosts are too annoying.
|
||||
var/on = TRUE
|
||||
///If this var set to false the ghosts will not be able interact with the machine, say if the machine is silently disabled by cutting the internal wire.
|
||||
var/sensor_enabled = TRUE
|
||||
///List of ckeys containing players who have recently activated the device, players on this list are prohibited from activating the device untill their residue decays.
|
||||
var/list/ectoplasmic_residues = list()
|
||||
|
||||
/obj/machinery/ecto_sniffer/Initialize()
|
||||
. = ..()
|
||||
wires = new/datum/wires/ecto_sniffer(src)
|
||||
|
||||
/obj/machinery/ecto_sniffer/attack_ghost(mob/user)
|
||||
. = ..()
|
||||
if(!is_operational || !on || !sensor_enabled)
|
||||
return
|
||||
|
||||
for(var/spirit_key in ectoplasmic_residues)
|
||||
if(spirit_key == user.ckey)
|
||||
return
|
||||
activate(user)
|
||||
|
||||
/obj/machinery/ecto_sniffer/proc/activate(mob/activator)
|
||||
flick("ecto_sniffer_flick", src)
|
||||
playsound(loc, 'sound/machines/ectoscope_beep.ogg', 25)
|
||||
use_power(10)
|
||||
if(activator?.ckey)
|
||||
ectoplasmic_residues += activator.ckey
|
||||
addtimer(CALLBACK(src, .proc/clear_residue, activator.ckey), 15 SECONDS)
|
||||
|
||||
/obj/machinery/ecto_sniffer/attack_hand(mob/living/user, list/modifiers)
|
||||
. = ..()
|
||||
add_fingerprint(user)
|
||||
on = !on
|
||||
balloon_alert(user, "sniffer turned [on ? "on" : "off"]")
|
||||
update_appearance()
|
||||
|
||||
/obj/machinery/ecto_sniffer/update_icon_state()
|
||||
. = ..()
|
||||
if(panel_open)
|
||||
icon_state = "[initial(icon_state)]_open"
|
||||
else
|
||||
icon_state = "[initial(icon_state)][(is_operational && on) ? null : "-p"]"
|
||||
|
||||
/obj/machinery/ecto_sniffer/update_overlays()
|
||||
. = ..()
|
||||
if(is_operational && on)
|
||||
. += emissive_appearance(icon, "[initial(icon_state)]-light-mask")
|
||||
|
||||
/obj/machinery/ecto_sniffer/wrench_act(mob/living/user, obj/item/tool)
|
||||
tool.play_tool_sound(src, 15)
|
||||
set_anchored(!anchored)
|
||||
balloon_alert(user, "sniffer [anchored ? "anchored" : "unanchored"]")
|
||||
|
||||
/obj/machinery/ecto_sniffer/screwdriver_act(mob/living/user, obj/item/I)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return default_deconstruction_screwdriver(user, "ecto_sniffer_open", "ecto_sniffer", I)
|
||||
|
||||
/obj/machinery/ecto_sniffer/crowbar_act(mob/living/user, obj/item/tool)
|
||||
if(!default_deconstruction_crowbar(tool))
|
||||
return ..()
|
||||
|
||||
/obj/machinery/ecto_sniffer/Destroy()
|
||||
ectoplasmic_residues = null
|
||||
. = ..()
|
||||
|
||||
///Removes the ghost from the ectoplasmic_residues list and lets them know they are free to activate the sniffer again.
|
||||
/obj/machinery/ecto_sniffer/proc/clear_residue(ghost_ckey)
|
||||
ectoplasmic_residues -= ghost_ckey
|
||||
var/mob/ghost = get_mob_by_ckey(ghost_ckey)
|
||||
if(!ghost || isliving(ghost))
|
||||
return
|
||||
to_chat(ghost, "[FOLLOW_LINK(ghost, src)] <span class='nicegreen'>The coating of ectoplasmic residue you left on [src]'s sensors has decayed.</span>")
|
||||
@@ -1357,3 +1357,10 @@
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/micro_laser = 4,
|
||||
/obj/item/stock_parts/scanning_module = 4)
|
||||
|
||||
/obj/item/circuitboard/machine/ecto_sniffer
|
||||
name = "Ectoscopic Sniffer (Machine Board)"
|
||||
greyscale_colors = CIRCUIT_COLOR_SCIENCE
|
||||
build_path = /obj/machinery/ecto_sniffer
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/scanning_module = 1)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Binary file not shown.
@@ -852,6 +852,7 @@
|
||||
#include "code\datums\wires\apc.dm"
|
||||
#include "code\datums\wires\autolathe.dm"
|
||||
#include "code\datums\wires\conveyor.dm"
|
||||
#include "code\datums\wires\ecto_sniffer.dm"
|
||||
#include "code\datums\wires\emitter.dm"
|
||||
#include "code\datums\wires\explosive.dm"
|
||||
#include "code\datums\wires\microwave.dm"
|
||||
@@ -931,6 +932,7 @@
|
||||
#include "code\game\machinery\dna_scanner.dm"
|
||||
#include "code\game\machinery\doppler_array.dm"
|
||||
#include "code\game\machinery\droneDispenser.dm"
|
||||
#include "code\game\machinery\ecto_sniffer.dm"
|
||||
#include "code\game\machinery\electrolyzer.dm"
|
||||
#include "code\game\machinery\fat_sucker.dm"
|
||||
#include "code\game\machinery\firealarm.dm"
|
||||
|
||||
Reference in New Issue
Block a user