From 01c945d6907bdc889f5a1f4a28a1c188082e34d3 Mon Sep 17 00:00:00 2001 From: Putnam3145 Date: Thu, 28 Jul 2022 16:18:35 -0700 Subject: [PATCH 1/2] Rebalances some event player counts --- code/modules/events/anomaly_flux.dm | 1 - code/modules/events/anomaly_pyro.dm | 1 + code/modules/events/atmos_speed.dm | 4 ++-- code/modules/events/brain_trauma.dm | 2 +- code/modules/events/cat_surgeon.dm | 2 +- code/modules/events/disease_outbreak.dm | 14 ++++++++++++-- code/modules/events/dust.dm | 7 ++++--- code/modules/events/heart_attack.dm | 12 ++++++++++-- code/modules/events/mass_hallucination.dm | 2 +- code/modules/events/supermatter_surge.dm | 4 ++-- code/modules/events/supernova.dm | 4 ++-- code/modules/events/vent_clog.dm | 9 ++++----- tgstation.dme | 1 + 13 files changed, 41 insertions(+), 22 deletions(-) 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..96832ce8bc 100644 --- a/code/modules/events/atmos_speed.dm +++ b/code/modules/events/atmos_speed.dm @@ -1,8 +1,8 @@ /datum/round_event_control/atmos_flux name = "Atmospheric Flux" typepath = /datum/round_event/atmos_flux - max_occurrences = 1 - weight = 5 + max_occurrences = 5 + weight = 10 endWhen = 600 var/original_speed 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 5e513c6b9a..e969afcbe9 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" From 70ff90adcf2d65a842fb096b46ba152f7d363237 Mon Sep 17 00:00:00 2001 From: Putnam3145 Date: Thu, 28 Jul 2022 16:56:12 -0700 Subject: [PATCH 2/2] the risks of having disabled code --- code/modules/events/atmos_speed.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/events/atmos_speed.dm b/code/modules/events/atmos_speed.dm index 96832ce8bc..17a02d3dd1 100644 --- a/code/modules/events/atmos_speed.dm +++ b/code/modules/events/atmos_speed.dm @@ -3,11 +3,11 @@ typepath = /datum/round_event/atmos_flux max_occurrences = 5 weight = 10 - endWhen = 600 - var/original_speed /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")