diff --git a/code/modules/antagonists/traitor/classes/hijack.dm b/code/modules/antagonists/traitor/classes/hijack.dm index dbfa78eb96..bbfb0cb11d 100644 --- a/code/modules/antagonists/traitor/classes/hijack.dm +++ b/code/modules/antagonists/traitor/classes/hijack.dm @@ -4,6 +4,7 @@ weight = 3 chaos = 5 threat = 3 + min_players = 25 uplink_filters = list(/datum/uplink_item/stealthy_weapons/romerol_kit) /datum/traitor_class/human/hijack/forge_objectives(datum/antagonist/traitor/T) diff --git a/code/modules/antagonists/traitor/classes/martyr.dm b/code/modules/antagonists/traitor/classes/martyr.dm index 72f9ac86fc..5c407b70fd 100644 --- a/code/modules/antagonists/traitor/classes/martyr.dm +++ b/code/modules/antagonists/traitor/classes/martyr.dm @@ -4,6 +4,7 @@ weight = 2 chaos = 5 threat = 5 + min_players = 20 uplink_filters = list(/datum/uplink_item/stealthy_weapons/romerol_kit,/datum/uplink_item/bundles_TC/contract_kit) /datum/traitor_class/human/martyr/forge_objectives(datum/antagonist/traitor/T) diff --git a/code/modules/antagonists/traitor/classes/traitor_class.dm b/code/modules/antagonists/traitor/classes/traitor_class.dm index 260e978bec..568619f59d 100644 --- a/code/modules/antagonists/traitor/classes/traitor_class.dm +++ b/code/modules/antagonists/traitor/classes/traitor_class.dm @@ -7,6 +7,8 @@ GLOBAL_LIST_EMPTY(traitor_classes) var/chaos = 0 var/threat = 0 var/TC = 20 + /// Minimum players for this to randomly roll via get_random_traitor_class(). + var/min_players = 0 var/list/uplink_filters /datum/traitor_class/New() @@ -41,4 +43,4 @@ GLOBAL_LIST_EMPTY(traitor_classes) /datum/traitor_class/proc/clean_up_traitor(datum/antagonist/traitor/T) // Any effects that need to be cleaned up if traitor class is being swapped. - \ No newline at end of file + diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 4422f2f174..0309b7e826 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -47,6 +47,8 @@ for(var/C in GLOB.traitor_classes) if(!(C in blacklist)) var/datum/traitor_class/class = GLOB.traitor_classes[C] + if(class.min_players > length(GLOB.joined_player_list)) + continue var/weight = LOGISTIC_FUNCTION(1.5*class.weight,chaos_weight,class.chaos,0) weights[C] = weight * 1000 var/choice = pickweight(weights, 0)