diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index 0ba347af57..4dd8dd87c5 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -2,7 +2,6 @@ name = "Anomaly: Hyper-Energetic Flux" typepath = /datum/round_event/anomaly/anomaly_flux - min_players = 10 max_occurrences = 5 weight = 20 diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index 29c6e15d28..1ac010344e 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -2,6 +2,7 @@ name = "Anomaly: Pyroclastic" typepath = /datum/round_event/anomaly/anomaly_pyro + min_players = 5 max_occurrences = 5 weight = 20 diff --git a/code/modules/events/atmos_speed.dm b/code/modules/events/atmos_speed.dm index 9b248e2775..17a02d3dd1 100644 --- a/code/modules/events/atmos_speed.dm +++ b/code/modules/events/atmos_speed.dm @@ -1,13 +1,13 @@ /datum/round_event_control/atmos_flux name = "Atmospheric Flux" typepath = /datum/round_event/atmos_flux - max_occurrences = 1 - weight = 5 - endWhen = 600 - var/original_speed + max_occurrences = 5 + weight = 10 /datum/round_event/atmos_flux announceWhen = 1 + endWhen = 600 + var/original_speed /datum/round_event/atmos_flux/announce(fake) priority_announce("Atmospheric flux in your sector detected. Sensors show that air may move [(SSair.share_max_steps_target > original_speed) ? "faster" : "slower"] than usual for some time.", "Atmos Alert") diff --git a/code/modules/events/brain_trauma.dm b/code/modules/events/brain_trauma.dm index 34d8e86dcf..0529d102dc 100644 --- a/code/modules/events/brain_trauma.dm +++ b/code/modules/events/brain_trauma.dm @@ -6,7 +6,7 @@ /datum/round_event_control/brain_trauma/canSpawnEvent(var/players_amt, var/gamemode) if(!..()) return FALSE - var/list/enemy_roles = list("Medical Doctor","Chief Medical Officer","Paramedic") + var/list/enemy_roles = list("Medical Doctor","Chief Medical Officer","Paramedic","AI","Chemist","Virologist","Captain","Head of Personnel","Roboticist") for (var/mob/M in GLOB.alive_mob_list) if(M.stat != DEAD && (M.mind?.assigned_role in enemy_roles)) return TRUE diff --git a/code/modules/events/cat_surgeon.dm b/code/modules/events/cat_surgeon.dm index 76c72a7ec2..cf6e34fd65 100644 --- a/code/modules/events/cat_surgeon.dm +++ b/code/modules/events/cat_surgeon.dm @@ -2,7 +2,7 @@ name = "Cat Surgeon" typepath = /datum/round_event/cat_surgeon max_occurrences = 1 - weight = 8 + weight = 5 /datum/round_event/cat_surgeon/announce(fake) priority_announce("One of our... ahem... 'special' cases has escaped. As it happens their last known location before their tracker went dead is your station so keep an eye out for them. On an unrelated note, has anyone seen our cats?", diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 490cd0ff21..517cf33b82 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -2,7 +2,7 @@ name = "Disease Outbreak" typepath = /datum/round_event/disease_outbreak max_occurrences = 1 - min_players = 10 + min_players = 3 weight = 5 /datum/round_event/disease_outbreak @@ -12,6 +12,13 @@ var/max_severity = 3 +/datum/round_event_control/disease_outbreak/canSpawnEvent(var/players_amt, var/gamemode) + if(!..()) return FALSE + var/list/enemy_roles = list("Medical Doctor","Chief Medical Officer","Paramedic","AI","Chemist","Virologist","Captain","Head of Personnel", "Geneticist") + for (var/mob/M in GLOB.alive_mob_list) + if(M.stat != DEAD && (M.mind?.assigned_role in enemy_roles)) + return TRUE + return FALSE /datum/round_event/disease_outbreak/announce(fake) priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", "outbreak7") @@ -22,7 +29,10 @@ /datum/round_event/disease_outbreak/start() var/advanced_virus = FALSE - max_severity = 3 + max(FLOOR((world.time - control.earliest_start)/6000, 1),0) //3 symptoms at 20 minutes, plus 1 per 10 minutes + var/player_count = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE) + max_severity = 1 + max(FLOOR((world.time - control.earliest_start)/6000, 1),0) //3 symptoms at 20 minutes, plus 1 per 10 minutes + max_severity += player_count > 5 + max_severity += player_count > 10 if(prob(20 + (10 * max_severity))) advanced_virus = TRUE diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index eb7edcafbf..3bece46dcd 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -17,9 +17,10 @@ /datum/round_event_control/sandstorm name = "Sandstorm" typepath = /datum/round_event/sandstorm - weight = 0 - max_occurrences = 0 - earliest_start = 0 MINUTES + weight = 5 + max_occurrences = 1 + min_players = 5 + earliest_start = 20 MINUTES /datum/round_event/sandstorm startWhen = 1 diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index 8c33e69107..930a2b884f 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -1,9 +1,17 @@ /datum/round_event_control/heart_attack name = "Random Heart Attack" typepath = /datum/round_event/heart_attack - weight = 20 + weight = 10 max_occurrences = 2 - min_players = 40 // To avoid shafting lowpop + min_players = 10 // To avoid shafting lowpop + +/datum/round_event_control/heart_attack/canSpawnEvent(var/players_amt, var/gamemode) + if(!..()) return FALSE + var/list/enemy_roles = list("Medical Doctor","Chief Medical Officer","Paramedic","Chemist") + for (var/mob/M in GLOB.alive_mob_list) + if(M.stat != DEAD && (M.mind?.assigned_role in enemy_roles)) + return TRUE + return FALSE /datum/round_event/heart_attack/start() var/list/heart_attack_contestants = list() diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index 0801e38507..d8e52cf46d 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -2,7 +2,7 @@ name = "Mass Hallucination" typepath = /datum/round_event/mass_hallucination weight = 10 - max_occurrences = 2 + max_occurrences = 5 min_players = 1 var/forced_hallucination diff --git a/code/modules/events/supermatter_surge.dm b/code/modules/events/supermatter_surge.dm index 78b5c9e70c..dd78e379ca 100644 --- a/code/modules/events/supermatter_surge.dm +++ b/code/modules/events/supermatter_surge.dm @@ -2,7 +2,7 @@ name = "Supermatter Surge" typepath = /datum/round_event/supermatter_surge weight = 20 - max_occurrences = 4 + max_occurrences = 5 earliest_start = 10 MINUTES /datum/round_event_control/supermatter_surge/canSpawnEvent() @@ -37,7 +37,7 @@ /datum/round_event/supermatter_surge/start() var/obj/machinery/power/supermatter_crystal/supermatter = GLOB.main_supermatter_engine - var/power_proportion = supermatter.powerloss_inhibitor/2 // what % of the power goes into matter power, at most 50% + var/power_proportion = supermatter.powerloss_inhibitor * 0.75 // what % of the power goes into matter power, at most 50% // we reduce the proportion that goes into actual matter power based on powerloss inhibitor // primarily so the supermatter doesn't tesla the instant these happen supermatter.matter_power += power * power_proportion diff --git a/code/modules/events/supernova.dm b/code/modules/events/supernova.dm index b6a389f345..1b45cbf831 100644 --- a/code/modules/events/supernova.dm +++ b/code/modules/events/supernova.dm @@ -1,8 +1,8 @@ /datum/round_event_control/supernova name = "Supernova" typepath = /datum/round_event/supernova - weight = 10 - max_occurrences = 2 + weight = 5 + max_occurrences = 1 min_players = 2 /datum/round_event/supernova diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index cd7b23a577..57f2648573 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -3,7 +3,6 @@ typepath = /datum/round_event/vent_clog weight = 10 max_occurrences = 3 - min_players = 25 /datum/round_event/vent_clog announceWhen = 1 @@ -11,7 +10,7 @@ endWhen = 35 var/interval = 2 var/list/vents = list() - var/randomProbability = 1 + var/randomProbability = 0 var/reagentsAmount = 100 var/list/saferChems = list( /datum/reagent/water, @@ -92,7 +91,7 @@ var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - if (prob(randomProbability)) + if (randomProbability && prob(randomProbability)) R.add_reagent(get_random_reagent_id(), reagentsAmount) else R.add_reagent(pick(saferChems), reagentsAmount) @@ -106,7 +105,7 @@ name = "Clogged Vents: Threatening" typepath = /datum/round_event/vent_clog/threatening weight = 4 - min_players = 35 + min_players = 15 max_occurrences = 1 earliest_start = 35 MINUTES @@ -118,7 +117,7 @@ name = "Clogged Vents: Catastrophic" typepath = /datum/round_event/vent_clog/catastrophic weight = 2 - min_players = 45 + min_players = 25 max_occurrences = 1 earliest_start = 45 MINUTES diff --git a/tgstation.dme b/tgstation.dme index b22af21627..4f01d37497 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2109,6 +2109,7 @@ #include "code\modules\events\anomaly_grav.dm" #include "code\modules\events\anomaly_pyro.dm" #include "code\modules\events\anomaly_vortex.dm" +#include "code\modules\events\atmos_speed.dm" #include "code\modules\events\aurora_caelus.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brain_trauma.dm"