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:
Bop
2022-09-30 23:43:00 +07:00
committed by GitHub
parent f27fbb718d
commit 8e47bc8d3c
7 changed files with 61 additions and 2 deletions

View File

@@ -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)

View File

@@ -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

View 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")

View File

@@ -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

View File

@@ -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

View File

@@ -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"