mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-21 20:27:42 +01:00
Anomalies random event (#12111)
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
/datum/event/anomaly
|
||||
startWhen = 15
|
||||
announceWhen = 1
|
||||
var/area/impact_area
|
||||
var/datum/anomaly_placer/placer = new()
|
||||
var/obj/effect/anomaly/anomaly_path = /obj/effect/anomaly/flux
|
||||
|
||||
/datum/event/anomaly/setup()
|
||||
impact_area = placer.find_valid_area()
|
||||
|
||||
/datum/event/anomaly/announce()
|
||||
if(isnull(impact_area))
|
||||
impact_area = placer.find_valid_area()
|
||||
command_announcement.Announce("Energetic flux wave detected on [ANOMALY_ANNOUNCE_DANGEROUS_TEXT] [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
/datum/event/anomaly/start()
|
||||
var/turf/anomaly_turf
|
||||
anomaly_turf = placer.find_valid_turf(impact_area)
|
||||
|
||||
var/newAnomaly
|
||||
if(anomaly_turf)
|
||||
newAnomaly = new anomaly_path(anomaly_turf)
|
||||
if(newAnomaly)
|
||||
apply_anomaly_properties(newAnomaly)
|
||||
|
||||
/datum/event/anomaly/proc/apply_anomaly_properties(obj/effect/anomaly/new_anomaly)
|
||||
return
|
||||
|
||||
// Bioscrambler
|
||||
/datum/event/anomaly/bioscrambler
|
||||
startWhen = 3
|
||||
announceWhen = 1
|
||||
anomaly_path = /obj/effect/anomaly/bioscrambler
|
||||
|
||||
/datum/event/anomaly/bioscrambler/announce()
|
||||
if(isnull(impact_area))
|
||||
impact_area = placer.find_valid_area()
|
||||
command_announcement.Announce("Biologic trait swapping agent detected on [ANOMALY_ANNOUNCE_MEDIUM_TEXT] [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
// Bluespace
|
||||
/datum/event/anomaly/bluespace
|
||||
startWhen = 3
|
||||
announceWhen = 1
|
||||
anomaly_path = /obj/effect/anomaly/bluespace
|
||||
|
||||
/datum/event/anomaly/bluespace/announce()
|
||||
if(isnull(impact_area))
|
||||
impact_area = placer.find_valid_area()
|
||||
command_announcement.Announce("Bluespace instability detected on [ANOMALY_ANNOUNCE_MEDIUM_TEXT] [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
// Dimensional
|
||||
/datum/event/anomaly/dimensional
|
||||
startWhen = 3
|
||||
announceWhen = 1
|
||||
anomaly_path = /obj/effect/anomaly/dimensional
|
||||
var/anomaly_theme
|
||||
|
||||
/datum/event/anomaly/dimensional/apply_anomaly_properties(obj/effect/anomaly/new_anomaly)
|
||||
if(!anomaly_theme)
|
||||
return
|
||||
var/obj/effect/anomaly/dimensional/anomaly = new_anomaly
|
||||
anomaly.prepare_area(new_theme_path = anomaly_theme)
|
||||
|
||||
/datum/event/anomaly/dimensional/announce()
|
||||
if(isnull(impact_area))
|
||||
impact_area = placer.find_valid_area()
|
||||
command_announcement.Announce("Dimensional instability detected on [ANOMALY_ANNOUNCE_MEDIUM_TEXT] [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
// Flux
|
||||
|
||||
/datum/event/anomaly/flux
|
||||
startWhen = 15
|
||||
announceWhen = 1
|
||||
anomaly_path = /obj/effect/anomaly/flux
|
||||
|
||||
/datum/event/anomaly/flux/announce()
|
||||
if(isnull(impact_area))
|
||||
impact_area = placer.find_valid_area()
|
||||
command_announcement.Announce("Hyper-energetic flux wave detected on [ANOMALY_ANNOUNCE_DANGEROUS_TEXT] [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
// Gravitational
|
||||
/datum/event/anomaly/grav
|
||||
startWhen = 3
|
||||
announceWhen = 1
|
||||
anomaly_path = /obj/effect/anomaly/grav
|
||||
|
||||
/datum/event/anomaly/grav/announce()
|
||||
if(isnull(impact_area))
|
||||
impact_area = placer.find_valid_area()
|
||||
command_announcement.Announce("Gravitational anomaly detected on [ANOMALY_ANNOUNCE_HARMFUL_TEXT] [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
// Hallucination
|
||||
/datum/event/anomaly/hallucination
|
||||
startWhen = 3
|
||||
announceWhen = 1
|
||||
anomaly_path = /obj/effect/anomaly/hallucination
|
||||
|
||||
/datum/event/anomaly/hallucination/announce()
|
||||
if(isnull(impact_area))
|
||||
impact_area = placer.find_valid_area()
|
||||
command_announcement.Announce("Hallucinatory event detected on [ANOMALY_ANNOUNCE_MEDIUM_TEXT] [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
// Pyroclastic
|
||||
/datum/event/anomaly/pyro
|
||||
startWhen = 15
|
||||
announceWhen = 1
|
||||
anomaly_path = /obj/effect/anomaly/pyro
|
||||
|
||||
/datum/event/anomaly/pyro/announce()
|
||||
if(isnull(impact_area))
|
||||
impact_area = placer.find_valid_area()
|
||||
command_announcement.Announce("Pyroclastic anomaly detected on [ANOMALY_ANNOUNCE_HARMFUL_TEXT] [impact_area.name].", "Anomaly Alert")
|
||||
@@ -56,22 +56,28 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600),
|
||||
// Leaks gas into an unoccupied room.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, -30, list(DEPARTMENT_MEDICAL = 30), TRUE, min_jobs = list(DEPARTMENT_MEDICAL = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/bluespace, -20, list(DEPARTMENT_RESEARCH = 30, DEPARTMENT_ANY = 2), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Lockers", /datum/event/bluespace_locker, 10, list(DEPARTMENT_RESEARCH = 25, DEPARTMENT_ANY = 2), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bioscrambler Anomaly", /datum/event/anomaly/bioscrambler, -20, list(DEPARTMENT_MEDICAL = 30, DEPARTMENT_RESEARCH = 10), TRUE, min_jobs = list(DEPARTMENT_MEDICAL = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(DEPARTMENT_ENGINEERING = 25), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(DEPARTMENT_SECURITY = 5, DEPARTMENT_ENGINEERING = 20), min_jobs = list(DEPARTMENT_ENGINEERING = 1)),
|
||||
// Just disables comms for a short while.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(JOB_AI = 100, DEPARTMENT_SECURITY = 50), TRUE),
|
||||
// Just blows out a few lights
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Dimensional Anomaly", /datum/event/anomaly/dimensional, -20, list(DEPARTMENT_RESEARCH = 30, DEPARTMENT_ANY = 2), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 10, list(DEPARTMENT_RESEARCH = 40), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/flux, -30, list(DEPARTMENT_ENGINEERING = 30, DEPARTMENT_RESEARCH = 20), TRUE),
|
||||
// Just blows out a few lights
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(DEPARTMENT_ENGINEERING = 20, JOB_JANITOR = 150), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Exotic Infestation", /datum/event/dangerinfestation, -30, list(DEPARTMENT_ENGINEERING = 20, DEPARTMENT_RESEARCH = 5, DEPARTMENT_ANY = 2)),
|
||||
//Escaped slime event itself needs to be rejiggered because of the mob refactor.
|
||||
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Escaped Slimes", /datum/event/escaped_slimes, -40, list(DEPARTMENT_RESEARCH = 30, DEPARTMENT_SECURITY = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Anomaly", /datum/event/anomaly/grav, -20, list(DEPARTMENT_ENGINEERING = 30, DEPARTMENT_RESEARCH = 20, DEPARTMENT_ANY = 2), TRUE),
|
||||
// This one is just too fun.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(DEPARTMENT_ENGINEERING = 60), TRUE),
|
||||
// Temporary power failure, but mitigatead by subgrids
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 0, list(DEPARTMENT_RESEARCH = 10, DEPARTMENT_ENGINEERING = 25), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, -20, list(DEPARTMENT_SECURITY = 40, DEPARTMENT_ENGINEERING = 40), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Hallucination Anomaly", /datum/event/anomaly/hallucination, -20, list(DEPARTMENT_MEDICAL = 10, DEPARTMENT_RESEARCH = 10), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Hostile Runtime", /datum/event/hostile_runtime, -20, list(DEPARTMENT_ENGINEERING = 40), min_jobs = list(DEPARTMENT_ENGINEERING = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Infected Room", /datum/event/disease_outbreak/floor, -50, list(DEPARTMENT_MEDICAL = 25, JOB_JANITOR = 10, DEPARTMENT_ANY = 1), TRUE, min_jobs = list(DEPARTMENT_MEDICAL = 2)),
|
||||
// Pure RP fun, no mechanical effects.
|
||||
@@ -82,7 +88,7 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, -50, list(DEPARTMENT_ENGINEERING = 45), TRUE, min_jobs = list(DEPARTMENT_ENGINEERING = 2)),
|
||||
//New CHOMPStation event. Mice and lizards grow into rats and lizardmen respectively.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Mutants", /datum/event/mutants, 20, list(DEPARTMENT_ANY = 15, DEPARTMENT_SECURITY = 25), TRUE),
|
||||
// Opens doors in brig. So just RP fun
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyroclastic Anomaly", /datum/event/anomaly/pyro, -30, list(DEPARTMENT_ENGINEERING = 30, DEPARTMENT_RESEARCH = 20), TRUE, min_jobs = list(DEPARTMENT_ENGINEERING = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(DEPARTMENT_MEDICAL = 50), TRUE),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, -30, list(DEPARTMENT_SECURITY = 25, JOB_HEAD_OF_SECURITY = 35, JOB_WARDEN = 35), min_jobs = list(DEPARTMENT_SECURITY = 2)),
|
||||
// Radiation, but only in space.
|
||||
|
||||
Reference in New Issue
Block a user