mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 19:17:50 +01:00
* Makes it clear when the BSH is dirty * Update tgui.bundle.js * Update tgui.bundle.js * Update tgui.bundle.js
119 lines
3.7 KiB
Plaintext
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)
|
|
|
|
|