From d9dc91db1aa99931e5d95146d28ddc01ed1a0efa Mon Sep 17 00:00:00 2001 From: Putnam3145 Date: Fri, 13 Mar 2020 18:49:25 -0700 Subject: [PATCH] More dynamic fixes (#11451) * Fixed wizard, malf AI * changed memes typename to story * Fixed a bunch of really weird execute/ready confusion * Added dynamic requirement to wands. --- .../dynamic/dynamic_rulesets_midround.dm | 25 ++++++++++++------- .../gamemodes/dynamic/dynamic_storytellers.dm | 2 +- .../antagonists/wizard/equipment/spellbook.dm | 2 ++ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index a2639a7ece..36b81afc26 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -273,10 +273,14 @@ var/ion_announce = 33 var/removeDontImproveChance = 10 +/datum/dynamic_ruleset/midround/malf/ready() + if(!candidates || !candidates.len) + return FALSE + return ..() + /datum/dynamic_ruleset/midround/malf/trim_candidates() ..() - living_players = candidates[CURRENT_LIVING_PLAYERS] - for(var/mob/living/player in candidates) + for(var/mob/living/player in living_players) if(!isAI(player)) candidates -= player continue @@ -287,8 +291,6 @@ candidates -= player /datum/dynamic_ruleset/midround/malf/execute() - if(!candidates || !candidates.len) - return FALSE var/mob/living/silicon/ai/M = pick_n_take(candidates) assigned += M.mind var/datum/antagonist/traitor/AI = new @@ -337,6 +339,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/wizard/finish_setup(mob/new_character, index) ..() new_character.forceMove(pick(GLOB.wizardstart)) + wizard = new_character.mind /datum/dynamic_ruleset/midround/from_ghosts/wizard/rule_process() // i can literally copy this from are_special_antags_dead it's great if(isliving(wizard.current) && wizard.current.stat!=DEAD) @@ -447,9 +450,7 @@ property_weights = list("story_potential" = -1, "trust" = 1, "chaos" = 2, "extended" = -2, "valid" = 2) var/list/vents = list() -/datum/dynamic_ruleset/midround/from_ghosts/xenomorph/execute() - // 50% chance of being incremented by one - required_candidates += prob(50) +/datum/dynamic_ruleset/midround/from_ghosts/xenomorph/ready() for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in GLOB.machines) if(QDELETED(temp_vent)) continue @@ -463,6 +464,12 @@ vents += temp_vent if(!vents.len) return FALSE + return ..() + + +/datum/dynamic_ruleset/midround/from_ghosts/xenomorph/execute() + // 50% chance of being incremented by one + required_candidates += prob(50) . = ..() /datum/dynamic_ruleset/midround/from_ghosts/xenomorph/generate_ruleset_body(mob/applicant) @@ -497,7 +504,7 @@ property_weights = list("story_potential" = 1, "trust" = 1, "extended" = 1, "valid" = 2, "integrity" = 1) var/list/spawn_locs = list() -/datum/dynamic_ruleset/midround/from_ghosts/nightmare/execute() +/datum/dynamic_ruleset/midround/from_ghosts/nightmare/ready() for(var/X in GLOB.xeno_spawn) var/turf/T = X var/light_amount = T.get_lumcount() @@ -505,7 +512,7 @@ spawn_locs += T if(!spawn_locs.len) return FALSE - . = ..() + return ..() /datum/dynamic_ruleset/midround/from_ghosts/nightmare/generate_ruleset_body(mob/applicant) var/datum/mind/player_mind = new /datum/mind(applicant.key) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index dec7b921db..d25416a4d1 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -232,7 +232,7 @@ Property weights are: pop_antag_ratio = 7 flags = USE_PREF_WEIGHTS -/datum/dynamic_storyteller/memes +/datum/dynamic_storyteller/story name = "Story" config_tag = "story" desc = "Antags with options for loadouts and gimmicks. Traitor, wizard, nukies." diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 70cb29e7a3..5ef3f24bd6 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -375,6 +375,8 @@ desc = "A collection of wands that allow for a wide variety of utility. Wands have a limited number of charges, so be conservative in use. Comes in a handy belt." item_path = /obj/item/storage/belt/wands/full category = "Defensive" + dynamic_requirement = 60 + dynamic_cost = 10 /datum/spellbook_entry/item/armor name = "Mastercrafted Armor Set"