From 4855bfed6db4d8bc6fd94e4859670c30f9b33f59 Mon Sep 17 00:00:00 2001 From: Dimach Date: Sun, 17 Dec 2023 10:03:49 +0200 Subject: [PATCH] tweak: antag paradise special antag scaling, improve configuration (#4070) --- .../configuration/entries/config.dm | 20 +- .../antag_paradise/antag_paradise.dm | 347 +++++++++--------- code/modules/admin/topic.dm | 22 +- config/example/config.txt | 20 +- 4 files changed, 213 insertions(+), 196 deletions(-) diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index 1d3c82073df..5291f9523aa 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -414,30 +414,28 @@ /datum/config_entry/number/antag_paradise_double_antag_chance - default = 10 + default = 33 max_val = 100 min_val = 0 -/datum/config_entry/keyed_list/antag_paradise_weights - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_NUM +/datum/config_entry/str_list/antag_paradise_main_antags default = list( - ROLE_TRAITOR = 0, - ROLE_THIEF = 0, - ROLE_VAMPIRE = 0, - ROLE_CHANGELING = 0, + ROLE_TRAITOR, + ROLE_VAMPIRE, + ROLE_CHANGELING, ) + lowercase = TRUE - -/datum/config_entry/keyed_list/antag_paradise_special_weights +/datum/config_entry/keyed_list/antag_paradise_special_antags_weights key_mode = KEY_MODE_TEXT value_mode = VALUE_MODE_NUM default = list( "hijacker" = 10, "malfai" = 10, "ninja" = 10, - "nothing" = 30, + "thief" = 10, + "nothing" = 20, ) diff --git a/code/game/gamemodes/antag_paradise/antag_paradise.dm b/code/game/gamemodes/antag_paradise/antag_paradise.dm index 556559481df..8ef25bb18c0 100644 --- a/code/game/gamemodes/antag_paradise/antag_paradise.dm +++ b/code/game/gamemodes/antag_paradise/antag_paradise.dm @@ -11,35 +11,23 @@ var/list/protected_jobs_AI = list("Civilian","Chief Engineer","Station Engineer","Trainee Engineer","Life Support Specialist","Mechanic","Chief Medical Officer","Medical Doctor","Intern","Coroner","Chemist","Geneticist","Virologist","Psychiatrist","Paramedic","Research Director","Scientist","Student Scientist","Roboticist","Head of Personnel","Chaplain","Bartender","Chef","Botanist","Quartermaster","Cargo Technician","Shaft Miner","Clown","Mime","Janitor","Librarian","Barber","Explorer") // Basically all jobs, except AI. var/secondary_protected_species = list("Machine") var/vampire_restricted_jobs = list("Chaplain") - var/list/datum/mind/pre_traitors = list() - var/list/datum/mind/pre_thieves = list() - var/list/datum/mind/pre_changelings = list() - var/list/datum/mind/pre_vampires = list() - var/list/datum/mind/traitor_vampires = list() - var/list/datum/mind/traitor_changelings = list() + /// Chosen antags if any. Key - mind, value - antag type + var/list/datum/mind/pre_antags = list() + var/list/datum/mind/pre_double_antags = list() + var/list/antag_required_players = list( ROLE_TRAITOR = 10, ROLE_THIEF = 10, ROLE_VAMPIRE = 15, ROLE_CHANGELING = 15, + ROLE_HIJACKER = 40, + ROLE_MALF_AI = 40, + ROLE_NINJA = 40, ) - var/list/special_antag_required_players = list( - ROLE_HIJACKER = 30, - ROLE_MALF_AI = 30, - ROLE_NINJA = 30, - ROLE_NONE = 0, - ) - var/list/antag_amount = list( - ROLE_TRAITOR = 0, - ROLE_THIEF = 0, - ROLE_VAMPIRE = 0, - ROLE_CHANGELING = 0, - ) - - /// Chosen antag type. - var/special_antag_type - /// Chosen special antag if any. - var/datum/mind/special_antag + /// Antag weights for main antags + var/list/antags_weights + /// Chosen speciaal antag type. + var/special_antag_type = ROLE_NONE /datum/game_mode/antag_paradise/announce() @@ -48,214 +36,230 @@ /datum/game_mode/antag_paradise/pre_setup() - . = FALSE - - calculate_antags() + var/players = num_players() + calculate_antags(players) if(CONFIG_GET(flag/protect_roles_from_antagonist)) restricted_jobs += protected_jobs + var/scale = CONFIG_GET(number/traitor_scaling) ? CONFIG_GET(number/traitor_scaling) : 10 + var/antags_amount = 1 + round(players / scale) + var/special_antag_amount = 1 + round(players / 50) + + var/list/datum/mind/possible_vampires = get_players_for_role(ROLE_VAMPIRE) + var/list/datum/mind/possible_changelings = get_players_for_role(ROLE_CHANGELING) + var/list/datum/mind/possible_traitors = get_players_for_role(ROLE_TRAITOR) + var/list/datum/mind/possible_thieves = get_players_for_role(ROLE_THIEF, list("Vox" = 4)) + switch(special_antag_type) if(ROLE_HIJACKER) - special_antag = safepick(get_players_for_role(ROLE_TRAITOR)) - if(special_antag) - special_antag.restricted_roles = restricted_jobs - special_antag.special_role = SPECIAL_ROLE_TRAITOR - else - special_antag_type = null + for(var/i in 1 to special_antag_amount) + var/datum/mind/special_antag = pick_n_take(possible_traitors) + if(special_antag) + special_antag.restricted_roles = restricted_jobs + special_antag.special_role = SPECIAL_ROLE_TRAITOR + pre_antags[special_antag] = ROLE_HIJACKER + antags_amount-- + + if(ROLE_THIEF) + for(var/i in 1 to special_antag_amount) + var/datum/mind/special_antag = pick_n_take(possible_thieves) + if(special_antag) + listclearduplicates(special_antag, possible_thieves) + special_antag.special_role = SPECIAL_ROLE_THIEF + special_antag.restricted_roles = restricted_jobs + pre_antags[special_antag] = ROLE_THIEF + antags_amount-- if(ROLE_MALF_AI) - special_antag = safepick(get_players_for_role(ROLE_MALF_AI)) + var/datum/mind/special_antag = safepick(get_players_for_role(ROLE_MALF_AI)) if(special_antag) special_antag.restricted_roles = (restricted_jobs|protected_jobs|protected_jobs_AI) special_antag.restricted_roles -= "AI" special_antag.special_role = SPECIAL_ROLE_TRAITOR SSjobs.new_malf = special_antag.current - else - special_antag_type = null + pre_antags[special_antag] = ROLE_MALF_AI + antags_amount-- if(ROLE_NINJA) if(length(GLOB.ninjastart)) - special_antag = safepick(get_players_for_role(ROLE_NINJA)) + var/datum/mind/special_antag = safepick(get_players_for_role(ROLE_NINJA)) if(special_antag) special_antag.current.loc = pick(GLOB.ninjastart) special_antag.assigned_role = SPECIAL_ROLE_SPACE_NINJA // assigned role and special role must be the same so they aren't chosen for other jobs. special_antag.special_role = SPECIAL_ROLE_SPACE_NINJA special_antag.offstation_role = TRUE // ninja can't be targeted as a victim for some pity traitors - else - special_antag_type = null + pre_antags[special_antag] = ROLE_NINJA + antags_amount-- else log_and_message_admins("No positions are found to spawn space ninja antag. Report this to coders.") - special_antag_type = null - - if(antag_amount[ROLE_VAMPIRE]) - var/list/datum/mind/possible_vampires = get_players_for_role(ROLE_VAMPIRE) - while(length(possible_vampires) && length(pre_vampires) < antag_amount[ROLE_VAMPIRE]) - var/datum/mind/vampire = pick_n_take(possible_vampires) - if(vampire.current.client.prefs.species in secondary_protected_species) - continue - if(vampire.special_role) - continue - pre_vampires += vampire - vampire.special_role = SPECIAL_ROLE_VAMPIRE - vampire.restricted_roles = (restricted_jobs|vampire_restricted_jobs) - - if(antag_amount[ROLE_CHANGELING]) - var/list/datum/mind/possible_changelings = get_players_for_role(ROLE_CHANGELING) - while(length(possible_changelings) && length(pre_changelings) < antag_amount[ROLE_CHANGELING]) - var/datum/mind/changeling = pick_n_take(possible_changelings) - if(changeling.current.client.prefs.species in secondary_protected_species) - continue - if(changeling.special_role) - continue - pre_changelings += changeling - changeling.special_role = SPECIAL_ROLE_CHANGELING - changeling.restricted_roles = restricted_jobs - - if(antag_amount[ROLE_TRAITOR]) - var/list/datum/mind/possible_traitors = get_players_for_role(ROLE_TRAITOR) - while(length(possible_traitors) && length(pre_traitors) < antag_amount[ROLE_TRAITOR]) - var/datum/mind/traitor = pick_n_take(possible_traitors) - if(traitor.special_role) - continue - pre_traitors += traitor - traitor.special_role = SPECIAL_ROLE_TRAITOR - traitor.restricted_roles = restricted_jobs - - if(antag_amount[ROLE_THIEF]) - var/list/datum/mind/possible_thieves = get_players_for_role(ROLE_THIEF, list("Vox" = 4)) - while(length(possible_thieves) && length(pre_thieves) < antag_amount[ROLE_THIEF]) - var/datum/mind/thief = pick_n_take(possible_thieves) - listclearduplicates(thief, possible_thieves) - if(thief.special_role) - continue - pre_thieves += thief - thief.special_role = SPECIAL_ROLE_THIEF - thief.restricted_roles = restricted_jobs - - if(!(length(pre_vampires) + length(pre_changelings) + length(pre_traitors) + length(pre_thieves)) && !special_antag) - return + + if(antags_amount) + for(var/i in 1 to antags_amount) + var/antag_type = pick_weight_classic(antags_weights) + switch(antag_type) + if(ROLE_VAMPIRE) + var/datum/mind/vampire = pick_n_take(possible_vampires) + if(!vampire) + continue + if(vampire.current.client.prefs.species in secondary_protected_species) + continue + if(vampire.special_role) + continue + vampire.special_role = SPECIAL_ROLE_VAMPIRE + vampire.restricted_roles = (restricted_jobs|vampire_restricted_jobs) + pre_antags[vampire] = ROLE_VAMPIRE + if(ROLE_CHANGELING) + var/datum/mind/changeling = pick_n_take(possible_changelings) + if(!changeling) + continue + if(changeling.current.client.prefs.species in secondary_protected_species) + continue + if(changeling.special_role) + continue + changeling.special_role = SPECIAL_ROLE_CHANGELING + changeling.restricted_roles = restricted_jobs + pre_antags[changeling] = ROLE_CHANGELING + if(ROLE_TRAITOR) + var/datum/mind/traitor = pick_n_take(possible_traitors) + if(!traitor) + continue + if(traitor.special_role) + continue + traitor.special_role = SPECIAL_ROLE_TRAITOR + traitor.restricted_roles = restricted_jobs + pre_antags[traitor] = ROLE_TRAITOR + if(ROLE_THIEF) + var/datum/mind/thief = pick_n_take(possible_thieves) + if(!thief) + continue + listclearduplicates(thief, possible_thieves) + if(thief.special_role) + continue + thief.special_role = SPECIAL_ROLE_THIEF + thief.restricted_roles = restricted_jobs + pre_antags[thief] = ROLE_THIEF + + if(!length(pre_antags)) + return FALSE . = TRUE var/chance_double_antag = isnull(GLOB.antag_paradise_double_antag_chance) ? CONFIG_GET(number/antag_paradise_double_antag_chance) : GLOB.antag_paradise_double_antag_chance - if(!chance_double_antag || !length(pre_traitors)) + if(!chance_double_antag) return - for(var/T in pre_traitors) - if(!prob(chance_double_antag)) + for(var/datum/mind/antag as anything in pre_antags) + if(antag.special_role != SPECIAL_ROLE_TRAITOR || !prob(chance_double_antag)) continue - var/datum/mind/traitor = T var/list/available_roles = list(ROLE_VAMPIRE, ROLE_CHANGELING) while(length(available_roles)) var/second_role = pick_n_take(available_roles) if(second_role == ROLE_VAMPIRE && \ - !jobban_isbanned(traitor.current, second_role) && \ - player_old_enough_antag(traitor.current.client, second_role) && \ - (second_role in traitor.current.client.prefs.be_special) && \ - !(traitor.current.client.prefs.species in secondary_protected_species)) + !jobban_isbanned(antag.current, second_role) && \ + player_old_enough_antag(antag.current.client, second_role) && \ + !(antag.current.client.prefs.species in secondary_protected_species)) - traitor_vampires += traitor - traitor.restricted_roles |= vampire_restricted_jobs + antag.restricted_roles |= vampire_restricted_jobs + pre_double_antags[antag] = ROLE_VAMPIRE break if(second_role == ROLE_CHANGELING && \ - !jobban_isbanned(traitor.current, second_role) && \ - player_old_enough_antag(traitor.current.client, second_role) && \ - (second_role in traitor.current.client.prefs.be_special) && \ - !(traitor.current.client.prefs.species in secondary_protected_species)) + !jobban_isbanned(antag.current, second_role) && \ + player_old_enough_antag(antag.current.client, second_role) && \ + !(antag.current.client.prefs.species in secondary_protected_species)) - traitor_changelings += traitor + pre_double_antags[antag] = ROLE_CHANGELING break -/datum/game_mode/antag_paradise/proc/calculate_antags() - var/players = num_players() - var/scale = CONFIG_GET(number/traitor_scaling) ? CONFIG_GET(number/traitor_scaling) : 10 - var/antags_amount = 1 + round(players / scale) - - var/list/special_antags_list = GLOB.antag_paradise_special_weights ? GLOB.antag_paradise_special_weights.Copy() : config_to_roles(CONFIG_GET(keyed_list/antag_paradise_special_weights)) - for(var/antag in special_antag_required_players) - if(players < special_antag_required_players[antag]) - special_antags_list -= antag +/datum/game_mode/antag_paradise/proc/calculate_antags(players) + var/list/special_antags_list + if(GLOB.antag_paradise_special_weights) + special_antags_list = GLOB.antag_paradise_special_weights + else + special_antags_list = config_to_roles(CONFIG_GET(keyed_list/antag_paradise_special_antags_weights)) + for(var/antag in special_antags_list) + if(players < antag_required_players[antag]) + special_antags_list -= antag if(length(special_antags_list)) special_antag_type = pick_weight_classic(special_antags_list) - if(special_antag_type && special_antag_type != ROLE_NONE) - antags_amount-- - var/list/antags_list = GLOB.antag_paradise_weights ? GLOB.antag_paradise_weights.Copy() : config_to_roles(CONFIG_GET(keyed_list/antag_paradise_weights)) - for(var/antag in antag_required_players) + if(GLOB.antag_paradise_weights) + antags_weights = GLOB.antag_paradise_weights + return + + antags_weights = list() + + var/list/antag_weight_config = CONFIG_GET(str_list/antag_paradise_main_antags) + antag_weight_config = antag_weight_config.Copy() + + for(var/antag in antag_weight_config) if(players < antag_required_players[antag]) - antags_list -= antag - - var/modified_weights = FALSE - for(var/antag in antags_list) - if(antags_list[antag]) - modified_weights = TRUE - - if(!modified_weights) - var/mode_type = pick_weight_classic(CONFIG_GET(keyed_list/antag_paradise_mode_subtypes)) - if(mode_type == ANTAG_RANDOM) - for(var/antag in antags_list) - antags_list[antag] = rand(1, 100) - else - var/list/available_antags = antags_list.Copy() - var/list/subtype_weights = CONFIG_GET(keyed_list/antag_paradise_subtype_weights) - while(length(available_antags)) - antags_list[pick_n_take(available_antags)] = subtype_weights[ANTAG_SINGLE] - if(!length(available_antags) || mode_type == ANTAG_SINGLE) - break - antags_list[pick_n_take(available_antags)] = subtype_weights[ANTAG_DOUBLE] - if(!length(available_antags) || mode_type == ANTAG_DOUBLE) - break - antags_list[pick_n_take(available_antags)] = subtype_weights[ANTAG_TRIPPLE] - break + antag_weight_config -= antag - for(var/i in 1 to antags_amount) - antag_amount[pick_weight_classic(antags_list)]++ + if(!length(antag_weight_config)) + return + var/mode_type = pick_weight_classic(CONFIG_GET(keyed_list/antag_paradise_mode_subtypes)) + if(mode_type == ANTAG_RANDOM) + for(var/antag in antag_weight_config) + antags_weights[antag] = rand(1, 100) + return -/datum/game_mode/antag_paradise/post_setup() - switch(special_antag_type) - if(ROLE_HIJACKER) - var/datum/antagonist/traitor/hijacker_datum = new - hijacker_datum.is_hijacker = TRUE - addtimer(CALLBACK(special_antag, TYPE_PROC_REF(/datum/mind, add_antag_datum), hijacker_datum), rand(1 SECONDS, 10 SECONDS)) + var/list/subtype_weights = CONFIG_GET(keyed_list/antag_paradise_subtype_weights) + antags_weights[pick_n_take(antag_weight_config)] = subtype_weights[ANTAG_SINGLE] + if(!length(antag_weight_config) || mode_type == ANTAG_SINGLE) + return + antags_weights[pick_n_take(antag_weight_config)] = subtype_weights[ANTAG_DOUBLE] + if(!length(antag_weight_config) || mode_type == ANTAG_DOUBLE) + return + antags_weights[pick_n_take(antag_weight_config)] = subtype_weights[ANTAG_TRIPPLE] - if(ROLE_MALF_AI) - if(isAI(special_antag.current)) - addtimer(CALLBACK(special_antag, TYPE_PROC_REF(/datum/mind, add_antag_datum), /datum/antagonist/malf_ai), rand(1 SECONDS, 10 SECONDS)) - else - log_and_message_admins("[special_antag] was not assigned for AI role. Report this to coders.") - if(ROLE_NINJA) +/datum/game_mode/antag_paradise/post_setup() + for(var/datum/mind/antag as anything in pre_antags) + if(pre_antags[antag] == ROLE_NINJA) var/datum/antagonist/ninja/ninja_datum = new ninja_datum.antag_paradise_mode_chosen = TRUE - special_antag.add_antag_datum(ninja_datum) + antag.add_antag_datum(ninja_datum) - addtimer(CALLBACK(src, PROC_REF(initiate_minor_antags)), rand(1 SECONDS, 10 SECONDS)) + addtimer(CALLBACK(src, PROC_REF(initiate_antags)), rand(1 SECONDS, 10 SECONDS)) ..() -/datum/game_mode/antag_paradise/proc/initiate_minor_antags() - for(var/datum/mind/vampire in pre_vampires) - vampire.add_antag_datum(/datum/antagonist/vampire) - for(var/datum/mind/changeling in pre_changelings) - changeling.add_antag_datum(/datum/antagonist/changeling) - for(var/datum/mind/traitor in pre_traitors) - traitor.add_antag_datum(/datum/antagonist/traitor) - for(var/datum/mind/thief in pre_thieves) - thief.add_antag_datum(/datum/antagonist/thief) - - // traitor double antags - for(var/datum/mind/vampire in traitor_vampires) - vampire.add_antag_datum(/datum/antagonist/vampire) - for(var/datum/mind/changeling in traitor_changelings) - changeling.add_antag_datum(/datum/antagonist/changeling) +/datum/game_mode/antag_paradise/proc/initiate_antags() + for(var/datum/mind/antag as anything in pre_antags) + switch(pre_antags[antag]) + if(ROLE_HIJACKER) + var/datum/antagonist/traitor/hijacker_datum = new + hijacker_datum.is_hijacker = TRUE + antag.add_antag_datum(hijacker_datum) + if(ROLE_MALF_AI) + if(isAI(antag.current)) + antag.add_antag_datum(/datum/antagonist/malf_ai) + else + log_and_message_admins("[antag] was not assigned for AI role. Report this to coders.") + + if(ROLE_VAMPIRE) + antag.add_antag_datum(/datum/antagonist/vampire) + if(ROLE_CHANGELING) + antag.add_antag_datum(/datum/antagonist/changeling) + if(ROLE_TRAITOR) + antag.add_antag_datum(/datum/antagonist/traitor) + if(ROLE_THIEF) + antag.add_antag_datum(/datum/antagonist/thief) + + for(var/datum/mind/antag as anything in pre_double_antags) + switch(pre_antags[antag]) + if(ROLE_VAMPIRE) + antag.add_antag_datum(/datum/antagonist/vampire) + if(ROLE_CHANGELING) + antag.add_antag_datum(/datum/antagonist/changeling) /proc/config_to_roles(list/check_list) var/list/new_list = list() @@ -270,6 +274,9 @@ if("ninja") new_list += ROLE_NINJA new_list[ROLE_NINJA] = check_list[index] + if("thief") + new_list += ROLE_THIEF + new_list[ROLE_THIEF] = check_list[index] if("nothing") new_list += ROLE_NONE new_list[ROLE_NONE] = check_list[index] diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 954485ae7e0..aa794413fb9 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1247,15 +1247,23 @@ if(GLOB.master_mode != "antag-paradise" && GLOB.secret_force_mode != "antag-paradise") return alert(usr, "The game mode has to be Antag Paradise!", null, null, null, null) - var/dat = {"Edit the antag weights for minor antagonists. Higher the weight higher the chance for antag to roll. Leave everything at zero (reset) if you want default behavior.
"} + var/dat = {"Edit the antag weights for minor antagonists. Higher the weight higher the chance for antag to roll. Press reset if you want default behavior.
"} dat += {""} - var/list/antags_list = GLOB.antag_paradise_weights ? GLOB.antag_paradise_weights : config_to_roles(CONFIG_GET(keyed_list/antag_paradise_weights)) + var/list/antags_list + if(GLOB.antag_paradise_weights) + antags_list = GLOB.antag_paradise_weights + else + antags_list = CONFIG_GET(str_list/antag_paradise_main_antags) + antags_list = antags_list.Copy() + for(var/key in list(ROLE_TRAITOR, ROLE_VAMPIRE, ROLE_CHANGELING, ROLE_THIEF)) + antags_list[key] = !!(key in antags_list) + for(var/antag in antags_list) dat += {""} dat += {"
AntagWeight
[capitalize(antag)]\[[antags_list[antag]]\]

Edit the antag weights for special antag. Only one antag from below will be chosen for the mode. Rolling NOTHING means no special antag at all.
"} dat += {""} - var/list/special_antags_list = GLOB.antag_paradise_special_weights ? GLOB.antag_paradise_special_weights : config_to_roles(CONFIG_GET(keyed_list/antag_paradise_special_weights)) + var/list/special_antags_list = GLOB.antag_paradise_special_weights ? GLOB.antag_paradise_special_weights : config_to_roles(CONFIG_GET(keyed_list/antag_paradise_special_antags_weights)) for(var/antag in special_antags_list) dat += {""} @@ -1291,7 +1299,11 @@ else if(findtext(command, "weights_normal_")) if(!GLOB.antag_paradise_weights) - GLOB.antag_paradise_weights = config_to_roles(CONFIG_GET(keyed_list/antag_paradise_weights)) + var/list/antags_list = CONFIG_GET(str_list/antag_paradise_main_antags) + antags_list = antags_list.Copy() + for(var/key in list(ROLE_TRAITOR, ROLE_VAMPIRE, ROLE_CHANGELING, ROLE_THIEF)) + antags_list[key] = !!(key in antags_list) + GLOB.antag_paradise_weights = antags_list var/antag = replacetext(command, "weights_normal_", "") var/choice = input(usr, "Adjust the weight for [capitalize(antag)]", "Antag Weight Adjustment", 0) as null|num if(isnull(choice)) @@ -1302,7 +1314,7 @@ else if(findtext(command, "weights_special_")) if(!GLOB.antag_paradise_special_weights) - GLOB.antag_paradise_special_weights = config_to_roles(CONFIG_GET(keyed_list/antag_paradise_special_weights)) + GLOB.antag_paradise_special_weights = config_to_roles(CONFIG_GET(keyed_list/antag_paradise_special_antags_weights)) var/antag = replacetext(command, "weights_special_", "") var/choice = input(usr, "Adjust the weight for [capitalize(antag)]", "Antag Weight Adjustment", 0) as null|num if(isnull(choice)) diff --git a/config/example/config.txt b/config/example/config.txt index d2b0b9277a7..ea5aa633116 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -168,13 +168,13 @@ MINPLAYERS ABDUCTION 15 MINPLAYERS DEVIL 2 MINPLAYERS DEVILAGENTS 25 -## Weights for all minor antags in ANTAG-PARADISE gamemode. Highter the weight higher the chance for antag to roll. Leave it commented if you prefer mode subtypes below. -#ANTAG_PARADISE_WEIGHT TRAITOR 10 -#ANTAG_PARADISE_WEIGHT THIEF 10 -#ANTAG_PARADISE_WEIGHT VAMPIRE 10 -#ANTAG_PARADISE_WEIGHT CHANGELING 10 +## List of minor antags in ANTAG-PARADISE gamemode. Only listed here antags will be spawned as main antags +#ANTAG_PARADISE_MAIN_ANTAGS TRAITOR +#ANTAG_PARADISE_MAIN_ANTAGS THIEF +#ANTAG_PARADISE_MAIN_ANTAGS VAMPIRE +#ANTAG_PARADISE_MAIN_ANTAGS CHANGELING -## Chances for ANTAG-PARADISE gamemode subtypes. This will NOT work if you are modifying antag weights directly in config above. +## Chances for ANTAG-PARADISE gamemode subtypes. #ANTAG_PARADISE_MODE_SUBTYPES ANTAG_SINGLE 10 #ANTAG_PARADISE_MODE_SUBTYPES ANTAG_DOUBLE 10 #ANTAG_PARADISE_MODE_SUBTYPES ANTAG_TRIPPLE 10 @@ -186,10 +186,10 @@ MINPLAYERS DEVILAGENTS 25 #ANTAG_PARADISE_SUBTYPE_WEIGHTS ANTAG_TRIPPLE 2 ## Weights for all special antags in ANTAG-PARADISE gamemode. Traitor Hijacker, Malfunctioning AI and Space Ninja currently. If Nothing is chosen special antag will not spawn. -#ANTAG_PARADISE_SPECIAL_WEIGHTS HIJACKER 10 -#ANTAG_PARADISE_SPECIAL_WEIGHTS MALFAI 10 -#ANTAG_PARADISE_SPECIAL_WEIGHTS NINJA 10 -#ANTAG_PARADISE_SPECIAL_WEIGHTS NOTHING 30 +#ANTAG_PARADISE_SPECIAL_ANTAGS_WEIGHTS HIJACKER 10 +#ANTAG_PARADISE_SPECIAL_ANTAGS_WEIGHTS MALFAI 10 +#ANTAG_PARADISE_SPECIAL_ANTAGS_WEIGHTS NINJA 10 +#ANTAG_PARADISE_SPECIAL_ANTAGS_WEIGHTS NOTHING 30 ## Chance for traitors to roll additional antag role in ANTAG-PARADISE gamemode. Leave it commented for default 10% chance. #ANTAG_PARADISE_DOUBLE_ANTAG_CHANCE 10
AntagWeight
[capitalize(antag)]\[[special_antags_list[antag]]\]