From 93ac826f02638b67308ee9f32105a47053dbe0b4 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 31 Mar 2015 11:02:17 +0200 Subject: [PATCH] Adds more events, misc event changes. Only two more this time: Random space dust attack. Random gravity failure. Moves space vines from moderate to major events, due to its now more dangerous nature. Removes now irrelevant alien/ninja customized event handlers. Adds Excel sheet for aiding in event probability calculations. --- baystation12.dme | 2 + code/game/gamemodes/events/dust.dm | 5 +- code/modules/events/dust.dm | 22 +++++++++ code/modules/events/event.dm | 10 ---- code/modules/events/event_container.dm | 45 ++++++++++-------- code/modules/events/event_dynamic.dm | 2 +- code/modules/events/gravity.dm | 24 ++++++++++ code/modules/events/meteors.dm | 6 +-- code/modules/events/random_antagonist.dm | 2 +- .../Event Probabilities.xls | Bin 0 -> 44544 bytes 10 files changed, 79 insertions(+), 39 deletions(-) create mode 100644 code/modules/events/dust.dm create mode 100644 code/modules/events/gravity.dm create mode 100644 tools/Event Probabilities/Event Probabilities.xls diff --git a/baystation12.dme b/baystation12.dme index 9ad0f589c33..9a806182266 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -943,11 +943,13 @@ #include "code\modules\events\comms_blackout.dm" #include "code\modules\events\communications_blackout.dm" #include "code\modules\events\disease_outbreak.dm" +#include "code\modules\events\dust.dm" #include "code\modules\events\electrical_storm.dm" #include "code\modules\events\event.dm" #include "code\modules\events\event_container.dm" #include "code\modules\events\event_dynamic.dm" #include "code\modules\events\event_manager.dm" +#include "code\modules\events\gravity.dm" #include "code\modules\events\grid_check.dm" #include "code\modules\events\infestation.dm" #include "code\modules\events\ion_storm.dm" diff --git a/code/game/gamemodes/events/dust.dm b/code/game/gamemodes/events/dust.dm index f2c510b9b98..2e8b3b13289 100644 --- a/code/game/gamemodes/events/dust.dm +++ b/code/game/gamemodes/events/dust.dm @@ -80,10 +80,11 @@ The "dust" will damage the hull of the station causin minor hull breaches. startx = (TRANSITIONEDGE+1) endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE) endx = world.maxx-TRANSITIONEDGE - var/goal = locate(endx, endy, 1) + var/z_level = pick(config.station_levels) + var/goal = locate(endx, endy, z_level) src.x = startx src.y = starty - src.z = pick(config.station_levels) + src.z = z_level spawn(0) walk_towards(src, goal, 1) return diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm new file mode 100644 index 00000000000..12be475fc82 --- /dev/null +++ b/code/modules/events/dust.dm @@ -0,0 +1,22 @@ +/datum/event/dust + startWhen = 10 + endWhen = 30 + +/datum/event/dust/announce() + command_announcement.Announce("The station is now passing through a belt of space dust.", "Dust Alert") + +/datum/event/dust/start() + dust_swarm(get_severity()) + +/datum/event/dust/end() + command_announcement.Announce("The station has now passed through the belt of space dust.", "Dust Notice") + +/datum/event/dust/proc/get_severity() + switch(severity) + if(EVENT_LEVEL_MUNDANE) + return "weak" + if(EVENT_LEVEL_MODERATE) + return prob(80) ? "norm" : "strong" + if(EVENT_LEVEL_MAJOR) + return "super" + return "weak" diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm index 408c85900e6..0b69dc89bb4 100644 --- a/code/modules/events/event.dm +++ b/code/modules/events/event.dm @@ -37,16 +37,6 @@ return total_weight -/datum/event_meta/alien/get_weight(var/list/active_with_role) - if(config.aliens_allowed) - return ..(active_with_role) - return 0 - -/datum/event_meta/ninja/get_weight(var/list/active_with_role) - if(config.ninjas_allowed) - return ..(active_with_role) - return 0 - /datum/event //NOTE: Times are measured in master controller ticks! var/startWhen = 0 //When in the lifetime to call start(). var/announceWhen = 0 //When in the lifetime to call announce(). diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index df392cfada4..54e2da314e1 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -124,14 +124,15 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT available_events = list( // Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 100), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 0, 25, 50), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence,20, list(ASSIGNMENT_JANITOR = 25), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 0, 25, 50), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust , 30, list(ASSIGNMENT_ENGINEER = 5), 0, 0, 50), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)), ) @@ -140,30 +141,32 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT severity = EVENT_LEVEL_MODERATE available_events = list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1230), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 100, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_SECURITY = 20), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 20, list(ASSIGNMENT_SECURITY = 20)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space vines", /datum/event/spacevine, 200, list(ASSIGNMENT_ENGINEER = 10)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_shower, 0, list(ASSIGNMENT_ENGINEER = 20)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 10), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 150)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 100, list(ASSIGNMENT_SECURITY = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 100, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_SECURITY = 20), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(ASSIGNMENT_ENGINEER = 60)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_SCIENTIST = 10)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 50, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5)), - new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_shower, 0, list(ASSIGNMENT_ENGINEER = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 20, list(ASSIGNMENT_SECURITY = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 30, list(ASSIGNMENT_ENGINEER = 5)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 100, list(ASSIGNMENT_SECURITY = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 150)), ) /datum/event_container/major severity = EVENT_LEVEL_MAJOR available_events = list( new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 1320), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 3), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 30), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 60), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 3), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 3), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 0, list(ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 30), 1), ) diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index 2cc225eaf6a..0dbe3a5017c 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -201,7 +201,7 @@ var/list/event_last_fired = list() if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "medical robot module") active_with_role["Medical"]++ - if(M.mind.assigned_role in list("Chief Medical Officer", "Medical Doctor")) + if(M.mind.assigned_role in medical_positions) active_with_role["Medical"]++ if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "security robot module") diff --git a/code/modules/events/gravity.dm b/code/modules/events/gravity.dm new file mode 100644 index 00000000000..078e632842a --- /dev/null +++ b/code/modules/events/gravity.dm @@ -0,0 +1,24 @@ +/datum/event/gravity + announceWhen = 5 + +/datum/event/gravity/setup() + endWhen = rand(15, 60) + +/datum/event/gravity/announce() + command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artificial gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes.", "Gravity Failure") + +/datum/event/gravity/start() + gravity_is_on = 0 + for(var/area/A in world) + if(A.z in config.station_levels) + A.gravitychange(gravity_is_on, A) + +/datum/event/gravity/end() + if(!gravity_is_on) + gravity_is_on = 1 + + for(var/area/A in world) + if(A.z in config.station_levels) + A.gravitychange(gravity_is_on, A) + + command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.", "Gravity Restored") diff --git a/code/modules/events/meteors.dm b/code/modules/events/meteors.dm index 33bee714ffb..45d59ca8cd0 100644 --- a/code/modules/events/meteors.dm +++ b/code/modules/events/meteors.dm @@ -1,12 +1,10 @@ -//cael - two events here - //meteor storms are much heavier /datum/event/meteor_wave startWhen = 6 endWhen = 33 /datum/event/meteor_wave/setup() - endWhen = rand(10,25) * 3 + endWhen = rand(15,30) * 3 /datum/event/meteor_wave/announce() command_announcement.Announce("Meteors have been detected on collision course with the station.", "Meteor Alert", new_sound = 'sound/AI/meteors.ogg') @@ -26,7 +24,7 @@ var/waves = 1 /datum/event/meteor_shower/setup() - waves = rand(1,4) + waves = rand(2,5) /datum/event/meteor_shower/announce() command_announcement.Announce("The station is now in a meteor shower.", "Meteor Alert") diff --git a/code/modules/events/random_antagonist.dm b/code/modules/events/random_antagonist.dm index dbdaa70983c..10f8778b3b3 100644 --- a/code/modules/events/random_antagonist.dm +++ b/code/modules/events/random_antagonist.dm @@ -10,4 +10,4 @@ valid_types |= antag if(valid_types.len) var/datum/antagonist/antag = pick(valid_types) - antag.random_spawn() \ No newline at end of file + antag.random_spawn() diff --git a/tools/Event Probabilities/Event Probabilities.xls b/tools/Event Probabilities/Event Probabilities.xls new file mode 100644 index 0000000000000000000000000000000000000000..e8085e8d9dfd71057ad2afe300ac4dada9310b9a GIT binary patch literal 44544 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 literal 0 HcmV?d00001