diff --git a/code/game/gamemodes/objective_sabotage.dm b/code/game/gamemodes/objective_sabotage.dm
index f08d84eae2..c8f1ef4713 100644
--- a/code/game/gamemodes/objective_sabotage.dm
+++ b/code/game/gamemodes/objective_sabotage.dm
@@ -56,7 +56,7 @@
There are many other ways; be creative!\
"
-/datum/sabotage_objective/processing/supermatter
+/*/datum/sabotage_objective/processing/supermatter
name = "Sabotage the supermatter so that it goes under 50% integrity. If it is delaminated, you will fail."
sabotage_type = "supermatter"
special_equipment = list(/obj/item/paper/guides/antag/supermatter_sabotage)
@@ -77,7 +77,7 @@
/datum/sabotage_objective/processing/supermatter/can_run()
return (locate(/obj/machinery/power/supermatter_crystal) in GLOB.machines)
-/*
+
/datum/sabotage_objective/station_integrity
name = "Make sure the station is at less than 80% integrity by the end. Smash walls, windows etc. to reach this goal."
sabotage_type = "integrity"
diff --git a/code/modules/antagonists/traitor/classes/subterfuge.dm b/code/modules/antagonists/traitor/classes/subterfuge.dm
index ad049f3264..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(70)) // cum. not counting download: 40%.
- 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)