From 63b0d61c5b8174627c74f5a7443abea6cf59da32 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 19 Sep 2020 23:35:04 -0700 Subject: [PATCH] Reworked the selection to scale automatically with objective counts. --- .../antagonists/traitor/classes/subterfuge.dm | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/code/modules/antagonists/traitor/classes/subterfuge.dm b/code/modules/antagonists/traitor/classes/subterfuge.dm index 5c6d69b768..07707b69e1 100644 --- a/code/modules/antagonists/traitor/classes/subterfuge.dm +++ b/code/modules/antagonists/traitor/classes/subterfuge.dm @@ -23,18 +23,23 @@ maroon_objective.find_target() T.add_objective(maroon_objective) else - if(prob(15) && !(locate(/datum/objective/download) in T.objectives) && !(T.owner.assigned_role in list("Research Director", "Scientist", "Roboticist"))) - var/datum/objective/download/download_objective = new - download_objective.owner = T.owner - download_objective.gen_amount_goal() - T.add_objective(download_objective) - else if(prob(90)) - var/datum/objective/steal/steal_objective = new - steal_objective.owner = T.owner - steal_objective.find_target() - T.add_objective(steal_objective) - else - var/datum/objective/sabotage/sabotage_objective = new - sabotage_objective.owner = T.owner - sabotage_objective.find_target() - T.add_objective(sabotage_objective) + var/list/weights = list() + weights["sabo"] = length(subtypesof(/datum/sabotage_objective)) + weights["steal"] = length(subtypesof(/datum/objective_item/steal)) + weights["download"] = !(locate(/datum/objective/download) in T.objectives || (T.owner.assigned_role in list("Research Director", "Scientist", "Roboticist"))) + switch(pickweight(weights)) + if("sabo") + var/datum/objective/sabotage/sabotage_objective = new + sabotage_objective.owner = T.owner + sabotage_objective.find_target() + T.add_objective(sabotage_objective) + if("steal") + var/datum/objective/steal/steal_objective = new + steal_objective.owner = T.owner + steal_objective.find_target() + T.add_objective(steal_objective) + if("download") + var/datum/objective/download/download_objective = new + download_objective.owner = T.owner + download_objective.gen_amount_goal() + T.add_objective(download_objective)