mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Radiation Anomaly (#15754)
* OH FUCK OH SHIT * why yes * hmm * guh * yyy * wh * sleep * done * event spawn * sprite change * e * no * yessir * new sprite for anomaly * hgm * fuck * E * maybe too hurt * Update anomalies.dm * Update anomaly_radiation.dm * too high * guh
This commit is contained in:
@@ -356,3 +356,24 @@
|
||||
SSexplosions.medturf += T
|
||||
if(EXPLODE_LIGHT)
|
||||
SSexplosions.lowturf += T
|
||||
|
||||
/////////////////////////
|
||||
|
||||
/obj/effect/anomaly/radiation
|
||||
name = "radiation anomaly"
|
||||
icon = 'icons/obj/projectiles.dmi'
|
||||
icon_state = "radiation_anomaly"
|
||||
density = TRUE
|
||||
|
||||
/obj/effect/anomaly/radiation/anomalyEffect()
|
||||
..()
|
||||
for(var/i = 1 to 10)
|
||||
fire_nuclear_particle_wimpy()
|
||||
radiation_pulse(src, 100, 2)
|
||||
|
||||
/obj/effect/anomaly/radiation/detonate()
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/i = 1 to 72)
|
||||
var/angle = i * 10
|
||||
T.fire_nuclear_particle_wimpy(angle)
|
||||
sleep(1)
|
||||
|
||||
@@ -223,3 +223,9 @@
|
||||
return
|
||||
/obj/item/assembly/signaler/cyborg/screwdriver_act(mob/living/user, obj/item/I)
|
||||
return
|
||||
|
||||
/obj/item/assembly/signaler/anomaly/radiation
|
||||
name = "\improper radiation anomaly core"
|
||||
desc = "The neutralized core of a radiation anomaly. It keeps pulsing an ominous green. It'd probably be valuable for research."
|
||||
icon_state = "anomaly core"
|
||||
anomaly_type = /obj/effect/anomaly/radiation
|
||||
|
||||
17
code/modules/events/anomaly_radiation.dm
Normal file
17
code/modules/events/anomaly_radiation.dm
Normal file
@@ -0,0 +1,17 @@
|
||||
/datum/round_event_control/anomaly/anomaly_radiation
|
||||
name = "Anomaly: Radiation"
|
||||
typepath = /datum/round_event/anomaly/anomaly_radiation
|
||||
|
||||
max_occurrences = 7
|
||||
weight = 20
|
||||
|
||||
/datum/round_event/anomaly/anomaly_radiation
|
||||
startWhen = 3
|
||||
announceWhen = 10
|
||||
anomaly_path = /obj/effect/anomaly/radiation
|
||||
|
||||
/datum/round_event/anomaly/anomaly_radiation/announce(fake)
|
||||
if(prob(90))
|
||||
priority_announce("Radioactive anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
else
|
||||
print_command_report("Radioactive anomaly detected on long range scanners. Expected location: [impact_area.name].", "Radioactive anomaly")
|
||||
@@ -74,6 +74,7 @@
|
||||
#define GRAVITATIONAL_ANOMALY "gravitational_anomaly"
|
||||
#define FLUX_ANOMALY "flux_anomaly"
|
||||
#define PYRO_ANOMALY "pyro_anomaly"
|
||||
#define RADIATION_ANOMALY "radiation_anomaly"
|
||||
|
||||
//If integrity percent remaining is less than these values, the monitor sets off the relevant alarm.
|
||||
#define SUPERMATTER_DELAM_PERCENT 5
|
||||
@@ -594,6 +595,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
supermatter_anomaly_gen(src, GRAVITATIONAL_ANOMALY, rand(5, 10))
|
||||
if(power > SEVERE_POWER_PENALTY_THRESHOLD && prob(2) || prob(0.3) && power > POWER_PENALTY_THRESHOLD)
|
||||
supermatter_anomaly_gen(src, PYRO_ANOMALY, rand(5, 10))
|
||||
if(power > SEVERE_POWER_PENALTY_THRESHOLD && prob(3) || prob(0.5))
|
||||
supermatter_anomaly_gen(src, RADIATION_ANOMALY, rand(5, 10))
|
||||
|
||||
if(damage > warning_point) // while the core is still damaged and it's still worth noting its status
|
||||
if(damage_archived < warning_point) //If damage_archive is under the warning point, this is the very first cycle that we've reached said point.
|
||||
@@ -1043,6 +1046,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
new /obj/effect/anomaly/grav(L, 250)
|
||||
if(PYRO_ANOMALY)
|
||||
new /obj/effect/anomaly/pyro(L, 200)
|
||||
if(RADIATION_ANOMALY)
|
||||
new /obj/effect/anomaly/radiation(L, 300)
|
||||
|
||||
/obj/machinery/power/supermatter_crystal/proc/supermatter_zap(atom/zapstart, range = 3, power)
|
||||
. = zapstart.dir
|
||||
@@ -1116,3 +1121,4 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
#undef GRAVITATIONAL_ANOMALY
|
||||
#undef FLUX_ANOMALY
|
||||
#undef PYRO_ANOMALY
|
||||
#undef RADIATION_ANOMALY
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
var/static/list/particle_colors = list(
|
||||
"red" = "#FF0000",
|
||||
"blue" = "#00FF00",
|
||||
"green" = "#0000FF",
|
||||
"green" = "#00FF00",
|
||||
"blue" = "#0000FF",
|
||||
"yellow" = "#FFFF00",
|
||||
"cyan" = "#00FFFF",
|
||||
"purple" = "#FF00FF"
|
||||
@@ -28,3 +28,11 @@
|
||||
/atom/proc/fire_nuclear_particle(angle = rand(0,360)) //used by fusion to fire random nuclear particles. Fires one particle in a random direction.
|
||||
var/obj/item/projectile/energy/nuclear_particle/P = new /obj/item/projectile/energy/nuclear_particle(src)
|
||||
P.fire(angle)
|
||||
|
||||
/obj/item/projectile/energy/nuclear_particle/wimpy
|
||||
irradiate = 100
|
||||
damage = 3
|
||||
|
||||
/atom/proc/fire_nuclear_particle_wimpy(angle = rand(0,360))
|
||||
var/obj/item/projectile/energy/nuclear_particle/wimpy/P = new /obj/item/projectile/energy/nuclear_particle/wimpy(src)
|
||||
P.fire(angle)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 135 KiB |
@@ -1918,6 +1918,7 @@
|
||||
#include "code\modules\events\anomaly_flux.dm"
|
||||
#include "code\modules\events\anomaly_grav.dm"
|
||||
#include "code\modules\events\anomaly_pyro.dm"
|
||||
#include "code\modules\events\anomaly_radiation.dm"
|
||||
#include "code\modules\events\anomaly_vortex.dm"
|
||||
#include "code\modules\events\aurora_caelus.dm"
|
||||
#include "code\modules\events\blob.dm"
|
||||
|
||||
Reference in New Issue
Block a user