From 621ea62d64d4a8aaa479605184dec40fc1546c20 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 10 Mar 2020 23:21:47 -0700 Subject: [PATCH] Added swarmers, portal storm, wormholes to dynamic. --- .../dynamic/dynamic_rulesets_events.dm | 51 +++++++++++++++++-- .../antagonists/swarmer/swarmer_event.dm | 1 + code/modules/events/portal_storm.dm | 1 + code/modules/events/wormholes.dm | 1 + 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm index 23e94c4065..bb8550b8b7 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm @@ -2,6 +2,7 @@ ruletype = "Event" var/typepath // typepath of the event var/triggering + var/earliest_start = 20 MINUTES /datum/dynamic_ruleset/event/get_blackbox_info() var/list/ruleset_data = list() @@ -25,8 +26,10 @@ return E -/datum/dynamic_ruleset/event/ready(forced = FALSE) // same as midround cause we're still using enemy system +/datum/dynamic_ruleset/event/ready(forced = FALSE) if (!forced) + if(earliest_start >= world.time-SSticker.round_start_time) + return FALSE var/job_check = 0 if (enemy_roles.len > 0) for (var/mob/M in mode.current_players[CURRENT_LIVING_PLAYERS]) @@ -56,6 +59,7 @@ required_enemies = list(2,2,1,1,0,0,0,0,0,0) weight = 5 cost = 10 + earliest_start = 30 MINUTES blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear) requirements = list(70,60,50,50,40,40,40,30,20,15) property_weights = list("story_potential" = 1, "trust" = 1, "chaos" = 1) @@ -157,17 +161,18 @@ required_enemies = list(3,3,3,3,3,3,3,3,3,3) cost = 15 weight = 3 + earliest_start = 25 MINUTES repeatable_weight_decrease = 2 requirements = list(60,50,40,30,30,30,30,30,30,30) high_population_requirement = 30 property_weights = list("extended" = -2) /datum/dynamic_ruleset/event/meteor_wave/ready() - if(mode.threat_level > 40 && mode.threat >= 25 && prob(20)) + if(world.time-SSticker.round_start_time > 35 MINUTES && mode.threat_level > 40 && mode.threat >= 25 && prob(20)) name = "Meteor Wave: Threatening" cost = 25 typepath = /datum/round_event/meteor_wave/threatening - else if(mode.threat_level > 50 && mode.threat >= 40 && prob(30)) + else if(world.time-SSticker.round_start_time > 45 MINUTES && mode.threat_level > 50 && mode.threat >= 40 && prob(30)) name = "Meteor Wave: Catastrophic" cost = 40 typepath = /datum/round_event/meteor_wave/catastrophic @@ -280,6 +285,7 @@ cost = 4 requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 + earliest_start = 10 MINUTES repeatable = TRUE property_weights = list("extended" = 1) @@ -324,6 +330,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + earliest_start = 0 MINUTES property_weights = list("extended" = 1) always_max_weight = TRUE @@ -381,3 +388,41 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 property_weights = list("extended" = 1,"chaos" = 1) + +/datum/dynamic_ruleset/event/portal_storm_syndicate + name = "Portal Storm" + config_tag = "portal_storm" + typepath = /datum/round_event/portal_storm/syndicate_shocktroop + cost = 10 + weight = 1 + enemy_roles = list("Head of Security","Security Officer","AI","Captain","Shaft Miner") + required_enemies = list(2,2,2,2,2,2,2,2,2,2) + requirements = list(101,101,101,30,30,30,30,30,30,30) + high_population_requirement = 30 + earliest_start = 30 MINUTES + property_weights = list("teamwork" = 1,"chaos" = 1, "extended" = -1) + +/datum/dynamic_ruleset/event/wormholes + name = "Wormholes" + config_tag = "wormhole" + typepath = /datum/round_event/wormholes + cost = 3 + weight = 4 + enemy_roles = list("AI","Medical Doctor","Station Engineer","Head of Personnel","Captain") + required_enemies = list(2,2,2,2,2,2,2,2,2,2) + requirements = list(5,5,5,5,5,5,5,5,5,5) + high_population_requirement = 5 + property_weights = list("extended" = 1) + +/datum/dynamic_ruleset/event/swarmers + name = "Swarmers" + config_tag = "swarmer" + typepath = /datum/round_event/spawn_swarmer + cost = 10 + weight = 1 + earliest_start = 30 MINUTES + enemy_roles = list("AI","Security Officer","Head of Security","Captain","Station Engineer","Atmos Technician","Chief Engineer") + required_enemies = list(4,4,4,4,3,3,2,2,1,1) + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 5 + property_weights = list("extended" = -2) diff --git a/code/modules/antagonists/swarmer/swarmer_event.dm b/code/modules/antagonists/swarmer/swarmer_event.dm index 8e385f6674..6ef35fdbaa 100644 --- a/code/modules/antagonists/swarmer/swarmer_event.dm +++ b/code/modules/antagonists/swarmer/swarmer_event.dm @@ -5,6 +5,7 @@ max_occurrences = 0 earliest_start = 30 MINUTES min_players = 15 + gamemode_blacklist = list("dynamic") /datum/round_event/spawn_swarmer diff --git a/code/modules/events/portal_storm.dm b/code/modules/events/portal_storm.dm index 5ef30d0030..457b5bd4ec 100644 --- a/code/modules/events/portal_storm.dm +++ b/code/modules/events/portal_storm.dm @@ -4,6 +4,7 @@ weight = 2 min_players = 15 earliest_start = 30 MINUTES + gamemode_blacklist = list("dynamic") /datum/round_event/portal_storm/syndicate_shocktroop boss_types = list(/mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper = 2) diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 9dbe1443d1..b7f8b8f911 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -4,6 +4,7 @@ max_occurrences = 3 weight = 2 min_players = 2 + gamemode_blacklist = list("dynamic") /datum/round_event/wormholes