Files
Paradise/code/modules/station_goals/bluespace_tap_events.dm
T
MigratingcocofruitandGitHub c042c6d874 Makes it clear when the BSH is dirty (#29084)
* Makes it clear when the BSH is dirty

* Update tgui.bundle.js

* Update tgui.bundle.js

* Update tgui.bundle.js
2025-05-30 20:29:13 +00:00

119 lines
3.7 KiB
Plaintext

/datum/engi_event/bluespace_tap_event
name = "Unknown Anomaly (Report this to coders)"
/// Which bluespace tap started the event
var/obj/machinery/power/bluespace_tap/tap
/datum/engi_event/bluespace_tap_event/New(obj/machinery/power/bluespace_tap/_tap)
. = ..()
tap = _tap
if(!tap)
stack_trace("a /datum/bluespace_tap_event was called without an involved bluespace tap.")
return
if(!istype(tap))
stack_trace("a /datum/bluespace_tap_event was called with (name: [tap], type: [tap.type]) instead of a bluespace tap!")
return
/datum/engi_event/bluespace_tap_event/start_event()
tap.investigate_log("event [src] has been triggered", "bluespace_tap")
return ..()
/datum/engi_event/bluespace_tap_event/Destroy(force, ...)
tap = null
return ..()
// gas events
/datum/engi_event/bluespace_tap_event/gas
name = "Gas Event"
/datum/engi_event/bluespace_tap_event/gas/alert_engi()
tap.radio.autosay("Bluespace harvester has released a class [src] gas pocket!", tap, "Engineering")
/datum/engi_event/bluespace_tap_event/gas/on_start()
var/datum/gas_mixture/air = new()
var/picked_gas = pick("N2O", "N2", "O2", "CO2", "Plasma", "Unknown")
switch(picked_gas)
if("N2")
name = "G-1"
air.set_nitrogen(250)
if("O2")
name = "G-2"
air.set_oxygen(250)
if("N2O")
name = "G-3"
air.set_sleeping_agent(200)
if("CO2")
name = "G-4"
air.set_carbon_dioxide(250)
if("Plasma")
name = "G-5"
air.set_toxins(250)
if("Unknown")
name = "G-6"
air.set_agent_b(250)
air.set_temperature(T20C)
var/turf/tap_turf = get_turf(tap)
tap_turf.blind_release_air(air)
// dirty
/datum/engi_event/bluespace_tap_event/dirty
name = "F-1"
/datum/engi_event/bluespace_tap_event/dirty/alert_engi()
tap.radio.autosay("Bluespace harvester has struck a congealed mass of filth!", tap, "Engineering")
/datum/engi_event/bluespace_tap_event/dirty/on_start()
tap.dirty = TRUE
var/list/gunk = list("carbon", "flour", "blood")
var/datum/reagents/R = new /datum/reagents(50)
R.my_atom = tap
R.add_reagent(pick(gunk), 50)
tap.update_icon()
var/datum/effect_system/smoke_spread/chem/smoke = new
smoke.set_up(R, tap, TRUE)
playsound(tap.loc, 'sound/effects/smoke.ogg', 50, TRUE, -3)
smoke.start(3)
qdel(R)
// radiation pulse
/datum/engi_event/bluespace_tap_event/radiation
name = "R-1"
/datum/engi_event/bluespace_tap_event/radiation/alert_engi()
tap.radio.autosay("Bluespace harvester has released a spike of radiation!", tap, "Engineering")
/datum/engi_event/bluespace_tap_event/radiation/on_start()
radiation_pulse(tap, 12000, BETA_RAD)
// electrical arc
/datum/engi_event/bluespace_tap_event/electric_arc
name = "E-1"
/datum/engi_event/bluespace_tap_event/electric_arc/alert_engi()
tap.radio.autosay("Class [src] power spike detected in bluespace harvester operation!", tap, "Engineering")
/datum/engi_event/bluespace_tap_event/electric_arc/on_start()
var/shock_type = pick("single", "mass")
switch(shock_type)
if("single")
var/list/shock_mobs = list()
for(var/C in view(get_turf(tap), 5)) // We only want to shock a single random mob in range, not every one.
if(isliving(C))
shock_mobs += C
if(length(shock_mobs))
var/mob/living/L = pick(shock_mobs)
L.electrocute_act(rand(5, 25), "electrical arc")
playsound(get_turf(L), 'sound/effects/eleczap.ogg', 75, TRUE)
tap.Beam(L, icon_state = "lightning[rand(1, 12)]", icon = 'icons/effects/effects.dmi', time = 5)
if("mass")
name = "E-2"
for(var/C in view(get_turf(tap), 5)) // Zap everyone
if(isliving(C))
var/mob/living/L = C
L.electrocute_act(rand(5, 25), "electrical arc")
playsound(get_turf(L), 'sound/effects/eleczap.ogg', 75, TRUE)
tap.Beam(L, icon_state = "lightning[rand(1, 12)]", icon = 'icons/effects/effects.dmi', time = 5)