mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:19:02 +00:00
Fixes everything????
This commit is contained in:
@@ -370,7 +370,7 @@ Example config:
|
||||
var/ct = initial(M.config_tag)
|
||||
if(ct && ct == mode_name)
|
||||
return new T
|
||||
return new /datum/game_mode/extended()
|
||||
return new /datum/game_mode/dynamic
|
||||
|
||||
/datum/controller/configuration/proc/get_runnable_modes()
|
||||
var/list/datum/game_mode/runnable_modes = new
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/datum/config_entry/flag/allow_vote_restart // allow votes to restart
|
||||
|
||||
/datum/config_entry/flag/allow_vote_mode // allow votes to change mode
|
||||
|
||||
/datum/config_entry/number/vote_delay // minimum time between voting sessions (deciseconds, 10 minute default)
|
||||
config_entry_value = 6000
|
||||
min_val = 0
|
||||
|
||||
@@ -68,10 +68,6 @@ SUBSYSTEM_DEF(vote)
|
||||
//get the highest number of votes
|
||||
var/greatest_votes = 0
|
||||
var/total_votes = 0
|
||||
if((mode == "gamemode" || mode == "roundtype") && CONFIG_GET(flag/must_be_readied_to_vote_gamemode))
|
||||
for(var/mob/dead/new_player/P in GLOB.player_list)
|
||||
if(P.ready != PLAYER_READY_TO_PLAY && voted[P.ckey])
|
||||
choices[choices[voted[P.ckey]]]--
|
||||
for(var/option in choices)
|
||||
var/votes = choices[option]
|
||||
total_votes += votes
|
||||
@@ -90,11 +86,6 @@ SUBSYSTEM_DEF(vote)
|
||||
choices["Continue Playing"] += non_voters.len
|
||||
if(choices["Continue Playing"] >= greatest_votes)
|
||||
greatest_votes = choices["Continue Playing"]
|
||||
else if(mode == "gamemode")
|
||||
if(GLOB.master_mode in choices)
|
||||
choices[GLOB.master_mode] += non_voters.len
|
||||
if(choices[GLOB.master_mode] >= greatest_votes)
|
||||
greatest_votes = choices[GLOB.master_mode]
|
||||
//get all options with that many votes and return them in a list
|
||||
. = list()
|
||||
if(greatest_votes)
|
||||
@@ -104,11 +95,6 @@ SUBSYSTEM_DEF(vote)
|
||||
return .
|
||||
|
||||
/datum/controller/subsystem/vote/proc/calculate_condorcet_votes(var/blackbox_text)
|
||||
// https://en.wikipedia.org/wiki/Schulze_method#Implementation
|
||||
if((mode == "gamemode" || mode == "dynamic" || mode == "roundtype") && CONFIG_GET(flag/must_be_readied_to_vote_gamemode))
|
||||
for(var/mob/dead/new_player/P in GLOB.player_list)
|
||||
if(P.ready != PLAYER_READY_TO_PLAY && voted[P.ckey])
|
||||
voted -= P.ckey
|
||||
var/list/d[][] = new/list(choices.len,choices.len) // the basic vote matrix, how many times a beats b
|
||||
for(var/ckey in voted)
|
||||
var/list/this_vote = voted[ckey]
|
||||
@@ -155,10 +141,6 @@ SUBSYSTEM_DEF(vote)
|
||||
for(var/choice in choices)
|
||||
scores_by_choice += "[choice]"
|
||||
scores_by_choice["[choice]"] = list()
|
||||
if((mode == "gamemode" || mode == "dynamic" || mode == "roundtype") && CONFIG_GET(flag/must_be_readied_to_vote_gamemode))
|
||||
for(var/mob/dead/new_player/P in GLOB.player_list)
|
||||
if(P.ready != PLAYER_READY_TO_PLAY && voted[P.ckey])
|
||||
voted -= P.ckey
|
||||
for(var/ckey in voted)
|
||||
var/list/this_vote = voted[ckey]
|
||||
var/list/pretty_vote = list()
|
||||
@@ -251,7 +233,7 @@ SUBSYSTEM_DEF(vote)
|
||||
if(vote_system == HIGHEST_MEDIAN_VOTING)
|
||||
calculate_highest_median(vote_title_text) // nothing uses this at the moment
|
||||
var/list/winners = vote_system == INSTANT_RUNOFF_VOTING ? get_runoff_results() : get_result()
|
||||
var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic"
|
||||
var/was_roundtype_vote = mode == "dynamic"
|
||||
if(winners.len > 0)
|
||||
if(was_roundtype_vote)
|
||||
stored_gamemode_votes = list()
|
||||
@@ -322,38 +304,9 @@ SUBSYSTEM_DEF(vote)
|
||||
var/restart = 0
|
||||
if(.)
|
||||
switch(mode)
|
||||
if("roundtype") //CIT CHANGE - adds the roundstart extended/secret vote
|
||||
if(SSticker.current_state > GAME_STATE_PREGAME)//Don't change the mode if the round already started.
|
||||
return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.")
|
||||
GLOB.master_mode = .
|
||||
SSticker.save_mode(.)
|
||||
message_admins("The gamemode has been voted for, and has been changed to: [GLOB.master_mode]")
|
||||
log_admin("Gamemode has been voted for and switched to: [GLOB.master_mode].")
|
||||
if(CONFIG_GET(flag/modetier_voting))
|
||||
reset()
|
||||
started_time = 0
|
||||
initiate_vote("mode tiers","server", votesystem=SCORE_VOTING, forced=TRUE, vote_time = 30 MINUTES)
|
||||
to_chat(world,"<b>The vote will end right as the round starts.</b>")
|
||||
return .
|
||||
if("restart")
|
||||
if(. == "Restart Round")
|
||||
restart = 1
|
||||
if("gamemode")
|
||||
if(GLOB.master_mode != .)
|
||||
SSticker.save_mode(.)
|
||||
if(SSticker.HasRoundStarted())
|
||||
restart = 1
|
||||
else
|
||||
GLOB.master_mode = .
|
||||
if("mode tiers")
|
||||
var/list/raw_score_numbers = list()
|
||||
for(var/score_name in scores)
|
||||
sorted_insert(raw_score_numbers,scores[score_name],/proc/cmp_numeric_asc)
|
||||
stored_modetier_results = scores.Copy()
|
||||
for(var/score_name in stored_modetier_results)
|
||||
if(stored_modetier_results[score_name] <= raw_score_numbers[CONFIG_GET(number/dropped_modes)])
|
||||
stored_modetier_results -= score_name
|
||||
stored_modetier_results += "traitor"
|
||||
if("map")
|
||||
var/datum/map_config/VM = config.maplist[.]
|
||||
message_admins("The map has been voted for and will change to: [VM.map_name]")
|
||||
@@ -451,8 +404,6 @@ SUBSYSTEM_DEF(vote)
|
||||
switch(vote_type)
|
||||
if("restart")
|
||||
choices.Add("Restart Round","Continue Playing")
|
||||
if("gamemode")
|
||||
choices.Add(config.votable_modes)
|
||||
if("map")
|
||||
var/players = GLOB.clients.len
|
||||
var/list/lastmaps = SSpersistence.saved_maps?.len ? list("[SSmapping.config.map_name]") | SSpersistence.saved_maps : list("[SSmapping.config.map_name]")
|
||||
@@ -469,16 +420,6 @@ SUBSYSTEM_DEF(vote)
|
||||
choices |= M
|
||||
if("transfer") // austation begin -- Crew autotranfer vote
|
||||
choices.Add("Initiate Crew Transfer","Continue Playing") // austation end
|
||||
if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote
|
||||
choices.Add("secret", "extended")
|
||||
if("mode tiers")
|
||||
var/list/modes_to_add = config.votable_modes
|
||||
var/list/probabilities = CONFIG_GET(keyed_list/probability)
|
||||
for(var/tag in modes_to_add)
|
||||
if(probabilities[tag] <= 0)
|
||||
modes_to_add -= tag
|
||||
modes_to_add -= "traitor" // makes it so that traitor is always available
|
||||
choices.Add(modes_to_add)
|
||||
if("custom")
|
||||
question = stripped_input(usr,"What is the vote for?")
|
||||
if(!question)
|
||||
@@ -636,16 +577,6 @@ SUBSYSTEM_DEF(vote)
|
||||
if(trialmin)
|
||||
. += "\t(<a href='?src=[REF(src)];vote=toggle_restart'>[avr ? "Allowed" : "Disallowed"]</a>)"
|
||||
. += "</li><li>"
|
||||
//gamemode
|
||||
var/avm = CONFIG_GET(flag/allow_vote_mode)
|
||||
if(trialmin || avm)
|
||||
. += "<a href='?src=[REF(src)];vote=gamemode'>GameMode</a>"
|
||||
else
|
||||
. += "<font color='grey'>GameMode (Disallowed)</font>"
|
||||
if(trialmin)
|
||||
. += "\t(<a href='?src=[REF(src)];vote=toggle_gamemode'>[avm ? "Allowed" : "Disallowed"]</a>)"
|
||||
|
||||
. += "</li>"
|
||||
//custom
|
||||
if(trialmin)
|
||||
. += "<li><a href='?src=[REF(src)];vote=custom'>Custom</a></li>"
|
||||
@@ -668,15 +599,9 @@ SUBSYSTEM_DEF(vote)
|
||||
if("toggle_restart")
|
||||
if(usr.client.holder)
|
||||
CONFIG_SET(flag/allow_vote_restart, !CONFIG_GET(flag/allow_vote_restart))
|
||||
if("toggle_gamemode")
|
||||
if(usr.client.holder)
|
||||
CONFIG_SET(flag/allow_vote_mode, !CONFIG_GET(flag/allow_vote_mode))
|
||||
if("restart")
|
||||
if(CONFIG_GET(flag/allow_vote_restart) || usr.client.holder)
|
||||
initiate_vote("restart",usr.key)
|
||||
if("gamemode")
|
||||
if(CONFIG_GET(flag/allow_vote_mode) || usr.client.holder)
|
||||
initiate_vote("gamemode",usr.key)
|
||||
if("custom")
|
||||
if(usr.client.holder)
|
||||
initiate_vote("custom",usr.key)
|
||||
|
||||
@@ -166,7 +166,6 @@
|
||||
.["mode"] = "hidden" //CIT CHANGE - hides the gamemode in topic() calls to prevent meta'ing the gamemode
|
||||
.["respawn"] = config ? CONFIG_GET(flag/respawns_enabled) : FALSE
|
||||
.["enter"] = GLOB.enter_allowed
|
||||
.["vote"] = CONFIG_GET(flag/allow_vote_mode)
|
||||
.["ai"] = CONFIG_GET(flag/allow_ai)
|
||||
.["host"] = world.host ? world.host : null
|
||||
.["round_id"] = GLOB.round_id
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
/datum/dynamic_ruleset/latejoin/infiltrator
|
||||
name = "Syndicate Infiltrator"
|
||||
antag_datum = /datum/antagonist/traitor
|
||||
antag_flag = ROLE_TRAITOR
|
||||
antag_flag = "traitor late"
|
||||
protected_roles = list("Security Officer", "Warden", "Head of Personnel", "Detective", "Head of Security", "Captain")
|
||||
restricted_roles = list("AI","Cyborg")
|
||||
required_candidates = 1
|
||||
@@ -72,8 +72,8 @@
|
||||
name = "Provocateur"
|
||||
persistent = TRUE
|
||||
antag_datum = /datum/antagonist/rev/head
|
||||
antag_flag = ROLE_REV_HEAD
|
||||
antag_flag_override = ROLE_REV
|
||||
antag_flag = "rev head late"
|
||||
antag_flag_override = "rev late"
|
||||
restricted_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director")
|
||||
enemy_roles = list("AI", "Cyborg", "Security Officer","Detective","Head of Security", "Captain", "Warden")
|
||||
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
|
||||
@@ -148,7 +148,7 @@
|
||||
/datum/dynamic_ruleset/latejoin/heretic_smuggler
|
||||
name = "Heretic Smuggler"
|
||||
antag_datum = /datum/antagonist/heretic
|
||||
antag_flag = ROLE_HERETIC
|
||||
antag_flag = "heretic late"
|
||||
protected_roles = list("Security Officer", "Warden", "Head of Personnel", "Detective", "Head of Security", "Captain","Prisoner")
|
||||
restricted_roles = list("AI","Cyborg")
|
||||
required_candidates = 1
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
/datum/dynamic_ruleset/midround/autotraitor
|
||||
name = "Syndicate Sleeper Agent"
|
||||
antag_datum = /datum/antagonist/traitor
|
||||
antag_flag = ROLE_TRAITOR
|
||||
antag_flag = "traitor mid"
|
||||
protected_roles = list("Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain")
|
||||
restricted_roles = list("Cyborg", "AI", "Positronic Brain")
|
||||
required_candidates = 1
|
||||
@@ -298,7 +298,7 @@
|
||||
/datum/dynamic_ruleset/midround/from_ghosts/wizard
|
||||
name = "Wizard"
|
||||
antag_datum = /datum/antagonist/wizard
|
||||
antag_flag = ROLE_WIZARD
|
||||
antag_flag = "wizard mid"
|
||||
enemy_roles = list("Security Officer","Detective","Head of Security", "Captain")
|
||||
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
|
||||
required_candidates = 1
|
||||
@@ -328,7 +328,7 @@
|
||||
|
||||
/datum/dynamic_ruleset/midround/from_ghosts/nuclear
|
||||
name = "Nuclear Assault"
|
||||
antag_flag = ROLE_OPERATIVE
|
||||
antag_flag = "nukie mid"
|
||||
antag_datum = /datum/antagonist/nukeop
|
||||
enemy_roles = list("AI", "Cyborg", "Security Officer", "Warden","Detective","Head of Security", "Captain")
|
||||
required_enemies = list(3,3,3,3,3,2,1,1,0,0)
|
||||
@@ -388,7 +388,7 @@
|
||||
/datum/dynamic_ruleset/midround/blob_infection
|
||||
name = "Blob Infection"
|
||||
antag_datum = /datum/antagonist/blob
|
||||
antag_flag = ROLE_BLOB
|
||||
antag_flag = "blob mid"
|
||||
protected_roles = list("Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain")
|
||||
restricted_roles = list("Cyborg", "AI", "Positronic Brain")
|
||||
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
|
||||
|
||||
@@ -520,6 +520,7 @@
|
||||
|
||||
/datum/dynamic_ruleset/roundstart/nuclear/clown_ops
|
||||
name = "Clown Ops"
|
||||
antag_flag = "clown ops"
|
||||
antag_datum = /datum/antagonist/nukeop/clownop
|
||||
antag_leader_datum = /datum/antagonist/nukeop/leader/clownop
|
||||
requirements = list(101,101,101,101,101,101,101,101,101,101)
|
||||
|
||||
@@ -1,318 +0,0 @@
|
||||
## Dynamic storytellers weights: how likely each storyteller is to show up. This is adjusted by voting and recency.
|
||||
STORYTELLER_WEIGHT CHAOTIC 2
|
||||
STORYTELLER_WEIGHT TEAMWORK 4
|
||||
STORYTELLER_WEIGHT CONVERSION 0
|
||||
STORYTELLER_WEIGHT RANDOM 2
|
||||
STORYTELLER_WEIGHT CLASSIC 6
|
||||
STORYTELLER_WEIGHT INTRIGUE 6
|
||||
STORYTELLER_WEIGHT STORY 6
|
||||
STORYTELLER_WEIGHT CALM 6
|
||||
STORYTELLER_WEIGHT EXTENDED 0
|
||||
|
||||
## Dynamic storyteller minimum player coutns: how many players before this storyteller can be rolled.
|
||||
STORYTELLER_MIN_PLAYERS CHAOTIC 30
|
||||
STORYTELLER_MIN_PLAYERS TEAMWORK 30
|
||||
|
||||
## If this is uncommented, Dynamic won't disable certain storytellers based on recent round threats
|
||||
#NO_STORYTELLER_THREAT_REMOVAL
|
||||
|
||||
## Injection delays: how long (in minutes) will pass before a midround or latejoin antag is injected.
|
||||
DYNAMIC_MIDROUND_DELAY_MIN 5
|
||||
DYNAMIC_MIDROUND_DELAY_MAX 15
|
||||
DYNAMIC_LATEJOIN_DELAY_MIN 10
|
||||
DYNAMIC_LATEJOIN_DELAY_MAX 30
|
||||
|
||||
DYNAMIC_FIRST_MIDROUND_DELAY_MIN 20
|
||||
DYNAMIC_FIRST_MIDROUND_DELAY_MAX 30
|
||||
DYNAMIC_FIRST_LATEJOIN_DELAY_MIN 2
|
||||
DYNAMIC_FIRST_LATEJOIN_DELAY_MAX 30
|
||||
|
||||
## How many roundstart players required for high population override to take effect.
|
||||
DYNAMIC_HIGH_POP_LIMIT 80 #80 instead of 55 because fewer robust players
|
||||
|
||||
## Threat requirements for a second roundstart ruleset being drafted
|
||||
DYNAMIC_SECOND_RULE_REQUIREMENTS 101 101 101 101 100 90 80 70 60 50
|
||||
## Threat requirements for a *third* roundstart ruleset being drafted
|
||||
DYNAMIC_THIRD_RULE_REQUIREMENTS 101 101 101 101 101 100 90 80 70 60
|
||||
## As above, but if there's 79+ players
|
||||
DYNAMIC_SECOND_RULE_HIGH_POP_REQUIREMENT 50
|
||||
DYNAMIC_THIRD_RULE_HIGH_POP_REQUIREMENT 60
|
||||
|
||||
## Pop range per requirement.
|
||||
## If the value is five the range is:
|
||||
## 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-54, 45+
|
||||
## If it is six the range is:
|
||||
## 0-5, 6-11, 12-17, 18-23, 24-29, 30-35, 36-41, 42-47, 48-53, 54+
|
||||
## If it is seven the range is:
|
||||
## 0-6, 7-13, 14-20, 21-27, 28-34, 35-41, 42-48, 49-55, 56-62, 63+
|
||||
## Options outside this range can be used, of course.
|
||||
DYNAMIC_POP_PER_REQUIREMENT 9 # 9 instead of 6 because 1/3 of players are probably not doing much?
|
||||
|
||||
## 1 -> 9, probability for this rule to be picked against other rules.
|
||||
## Note that requirements must also be met, and some requirements are impossible to meet.
|
||||
DYNAMIC_WEIGHT TRAITOR 5
|
||||
DYNAMIC_WEIGHT MALF_AI 1
|
||||
DYNAMIC_WEIGHT TRAITORBRO 4
|
||||
DYNAMIC_WEIGHT CHANGELING 1
|
||||
DYNAMIC_WEIGHT WIZARD 1
|
||||
DYNAMIC_WEIGHT CULT 3
|
||||
DYNAMIC_WEIGHT NUCLEAR 3
|
||||
DYNAMIC_WEIGHT REVOLUTION 2
|
||||
DYNAMIC_WEIGHT BLOODSUCKER 4
|
||||
# All below are impossible-by-default
|
||||
DYNAMIC_WEIGHT EXTENDED 3
|
||||
DYNAMIC_WEIGHT CLOCKWORK_CULT 3
|
||||
DYNAMIC_WEIGHT CLOWNOPS 3
|
||||
DYNAMIC_WEIGHT DEVIL 3
|
||||
DYNAMIC_WEIGHT MONKEY 3
|
||||
DYNAMIC_WEIGHT METEOR 3
|
||||
|
||||
## Midround antags
|
||||
DYNAMIC_WEIGHT MIDROUND_TRAITOR 9
|
||||
DYNAMIC_WEIGHT MIDROUND_MALF_AI 5
|
||||
DYNAMIC_WEIGHT MIDROUND_WIZARD 4
|
||||
DYNAMIC_WEIGHT MIDROUND_NUCLEAR 2
|
||||
DYNAMIC_WEIGHT BLOB 2
|
||||
DYNAMIC_WEIGHT XENOS 2
|
||||
DYNAMIC_WEIGHT NIGHTMARE 3
|
||||
DYNAMIC_WEIGHT SENTIENT_DISEASE 4
|
||||
DYNAMIC_WEIGHT REVENANT 2
|
||||
DYNAMIC_WEIGHT SLAUGHTER_DEMON 1
|
||||
DYNAMIC_WEIGHT ABDUCTORS 3
|
||||
DYNAMIC_WEIGHT SPACE_NINJA 3
|
||||
|
||||
## Events
|
||||
DYNAMIC_WEIGHT SPIDERS 5
|
||||
DYNAMIC_WEIGHT VENTCLOG_NORMAL 3
|
||||
DYNAMIC_WEIGHT VENTCLOG_THREATENING 3
|
||||
DYNAMIC_WEIGHT VENTCLOG_CATASTROPHIC 3
|
||||
DYNAMIC_WEIGHT ION_STORM 7
|
||||
DYNAMIC_WEIGHT METEOR_WAVE_NORMAL 3
|
||||
DYNAMIC_WEIGHT METEOR_WAVE_THREATENING 2
|
||||
DYNAMIC_WEIGHT METEOR_WAVE_CATASTROPHIC 1
|
||||
DYNAMIC_WEIGHT PIRATES 8
|
||||
DYNAMIC_WEIGHT ANOMALY_BLUESPACE 2
|
||||
DYNAMIC_WEIGHT ANOMALY_FLUX 2
|
||||
DYNAMIC_WEIGHT ANOMALY_GRAVITATIONAL 2
|
||||
DYNAMIC_WEIGHT ANOMALY_PYROCLASTIC 2
|
||||
DYNAMIC_WEIGHT ANOMALY_VORTEX 2
|
||||
DYNAMIC_WEIGHT BRAND_INTELLIGENCE 1
|
||||
DYNAMIC_WEIGHT CARP_MIGRATION 7
|
||||
DYNAMIC_WEIGHT COMMUNICATIONS_BLACKOUT 2
|
||||
DYNAMIC_WEIGHT PROCESSOR_OVERLOAD 2
|
||||
DYNAMIC_WEIGHT SPACE_DUST 2
|
||||
DYNAMIC_WEIGHT MAJOR_DUST 1
|
||||
DYNAMIC_WEIGHT ELECTRICAL_STORM 2
|
||||
DYNAMIC_WEIGHT HEART_ATTACK 2
|
||||
DYNAMIC_WEIGHT RADIATION_STORM 1
|
||||
|
||||
## Latejoin antags
|
||||
DYNAMIC_WEIGHT LATEJOIN_TRAITOR 7
|
||||
DYNAMIC_WEIGHT LATEJOIN_REVOLUTION 2
|
||||
DYNAMIC_WEIGHT LATEJOIN_BLOODSUCKER 4
|
||||
DYNAMIC_WEIGHT LATEJOIN_COLLECTOR 5
|
||||
|
||||
## Threat cost. This is decreased from the mode's threat when the rule is executed.
|
||||
DYNAMIC_COST TRAITOR 10
|
||||
DYNAMIC_COST MALF_AI 35
|
||||
DYNAMIC_COST TRAITORBRO 10
|
||||
DYNAMIC_COST CHANGELING 30
|
||||
DYNAMIC_COST WIZARD 30
|
||||
DYNAMIC_COST CULT 35
|
||||
DYNAMIC_COST NUCLEAR 45
|
||||
DYNAMIC_COST REVOLUTION 40
|
||||
DYNAMIC_cOST BLOODSUCKER 15
|
||||
DYNAMIC_COST EXTENDED 0
|
||||
DYNAMIC_COST CLOCKWORK_CULT 35
|
||||
DYNAMIC_COST CLOWNOPS 40
|
||||
DYNAMIC_COST DEVIL 0
|
||||
DYNAMIC_COST MONKEY 0
|
||||
DYNAMIC_COST METEOR 0
|
||||
|
||||
## Midround antags
|
||||
DYNAMIC_COST MIDROUND_TRAITOR 10
|
||||
DYNAMIC_COST MIDROUND_MALF_AI 35
|
||||
DYNAMIC_COST MIDROUND_WIZARD 20
|
||||
DYNAMIC_COST MIDROUND_NUCLEAR 35
|
||||
DYNAMIC_COST BLOB 10
|
||||
DYNAMIC_COST XENOS 20
|
||||
DYNAMIC_COST NIGHTMARE 10
|
||||
DYNAMIC_COST SENTIENT_DISEASE 5
|
||||
DYNAMIC_COST REVENANT 5
|
||||
DYNAMIC_COST SLAUGHTER_DEMON 15
|
||||
DYNAMIC_COST ABDUCTORS 10
|
||||
DYNAMIC_COST SPACE_NINJA 15
|
||||
|
||||
## Events
|
||||
DYNAMIC_COST SPIDERS 10
|
||||
DYNAMIC_COST VENTCLOG_NORMAL 2
|
||||
DYNAMIC_COST VENTCLOG_THREATENING 5
|
||||
DYNAMIC_COST VENTCLOG_CATASTROPHIC 15
|
||||
DYNAMIC_COST ION_STORM 3
|
||||
DYNAMIC_COST METEOR_WAVE_NORMAL 15
|
||||
DYNAMIC_COST METEOR_WAVE_THREATENING 25
|
||||
DYNAMIC_COST METEOR_WAVE_CATASTROPHIC 40
|
||||
DYNAMIC_COST PIRATES 10
|
||||
DYNAMIC_COST ANOMALY_BLUESPACE 3
|
||||
DYNAMIC_COST ANOMALY_FLUX 2
|
||||
DYNAMIC_COST ANOMALY_GRAVITATIONAL 3
|
||||
DYNAMIC_COST ANOMALY_PYROCLASTIC 5
|
||||
DYNAMIC_COST ANOMALY_VORTEX 5
|
||||
DYNAMIC_COST BRAND_INTELLIGENCE 5
|
||||
DYNAMIC_COST CARP_MIGRATION 3
|
||||
DYNAMIC_COST COMMUNICATIONS_BLACKOUT 5
|
||||
DYNAMIC_COST PROCESSOR_OVERLOAD 5
|
||||
DYNAMIC_COST SPACE_DUST 2
|
||||
DYNAMIC_COST MAJOR_DUST 4
|
||||
DYNAMIC_COST ELECTRICAL_STORM 1
|
||||
DYNAMIC_COST HEART_ATTACK 1
|
||||
DYNAMIC_COST RADIATION_STORM 3
|
||||
|
||||
## Latejoin antags
|
||||
DYNAMIC_COST LATEJOIN_TRAITOR 5
|
||||
DYNAMIC_COST LATEJOIN_REVOLUTION 20
|
||||
DYNAMIC_COST LATEJOIN_BLOODSUCKER 10
|
||||
DYNAMIC_COST LATEJOIN_COLLECTOR 1
|
||||
|
||||
## Rule will not be generated with threat levels below requirement at a pop value. Pop values are determined by dynamic's pop-per-requirement.
|
||||
## By default it's 0-8, 9-17, 18-26, 27-35, 36-44, 45-53, 54-60, 61-69, 70-78, 79+.
|
||||
## This means that 40 30 30 20 20 20 15 15 15 10 will not generate below 40 at 0-8, 30 at 9-17 etc.
|
||||
DYNAMIC_REQUIREMENTS TRAITOR 50 50 50 50 50 50 50 50 50 50
|
||||
DYNAMIC_REQUIREMENTS TRAITORBRO 101 101 101 101 101 101 101 101 101 101
|
||||
DYNAMIC_REQUIREMENTS CHANGELING 101 101 101 101 101 101 101 101 101 101
|
||||
DYNAMIC_REQUIREMENTS WIZARD 101 101 60 60 50 50 50 50 50 50
|
||||
DYNAMIC_REQUIREMENTS CULT 101 101 101 60 50 50 50 50 50 50
|
||||
DYNAMIC_REQUIREMENTS NUCLEAR 101 101 101 60 50 50 50 50 50 50
|
||||
DYNAMIC_REQUIREMENTS REVOLUTION 101 101 101 60 50 50 50 50 50 50
|
||||
DYNAMIC_REQUIREMENTS EXTENDED 101 101 101 101 101 101 101 101 101 101
|
||||
DYNAMIC_REQUIREMENTS CLOCKWORK_CULT 101 101 101 70 60 60 50 50 50 50
|
||||
DYNAMIC_REQUIREMENTS CLOWNOPS 101 101 101 101 101 101 101 101 101 101
|
||||
DYNAMIC_REQUIREMENTS DEVIL 101 101 101 101 101 101 101 101 101 101
|
||||
DYNAMIC_REQUIREMENTS MONKEY 101 101 101 101 101 101 101 101 101 101
|
||||
DYNAMIC_REQUIREMENTS METEOR 101 101 101 101 101 101 101 101 101 101
|
||||
|
||||
## Midround antags
|
||||
DYNAMIC_REQUIREMENTS MIDROUND_TRAITOR 30 25 20 15 15 15 15 15 15 15
|
||||
DYNAMIC_REQUIREMENTS MIDROUND_MALF_AI 101 101 70 50 50 50 40 30 30 30
|
||||
DYNAMIC_REQUIREMENTS MIDROUND_WIZARD 90 90 60 40 30 30 30 30 30 30
|
||||
DYNAMIC_REQUIREMENTS MIDROUND_NUCLEAR 90 90 90 80 70 60 50 40 40 40
|
||||
DYNAMIC_REQUIREMENTS BLOB 101 101 101 80 60 50 50 50 50 50
|
||||
DYNAMIC_REQUIREMENTS XENOS 101 101 101 70 50 50 50 50 50 50
|
||||
DYNAMIC_REQUIREMENTS NIGHTMARE 101 101 101 70 50 40 20 15 15 15
|
||||
DYNAMIC_REQUIREMENTS SENTIENT_DISEASE 30 30 20 20 15 10 10 10 10 5
|
||||
DYNAMIC_REQUIREMENTS REVENANT 30 30 30 30 20 15 15 15 15 15
|
||||
DYNAMIC_REQUIREMENTS SLAUGHTER_DEMON 101 101 101 90 80 70 60 50 50 50
|
||||
DYNAMIC_REQUIREMENTS ABDUCTORS 80 80 70 50 40 30 30 20 15 15
|
||||
DYNAMIC_REQUIREMENTS SPACE_NINJA 101 101 101 90 80 70 60 50 40 30
|
||||
|
||||
## Events
|
||||
DYNAMIC_REQUIREMENTS SPIDERS 70 60 50 50 40 40 40 30 20 15
|
||||
DYNAMIC_REQUIREMENTS VENTCLOG 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS ION_STORM 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS METEOR_WAVE 60 50 40 30 30 30 30 30 30 30
|
||||
DYNAMIC_REQUIREMENTS PIRATES 70 60 50 50 40 40 40 30 20 15
|
||||
DYNAMIC_REQUIREMENTS ANOMALY_BLUESPACE 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS ANOMALY_FLUX 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS ANOMALY_GRAVITATIONAL 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS ANOMALY_PYROCLASTIC 10 10 10 10 10 10 10 10 10 10
|
||||
DYNAMIC_REQUIREMENTS ANOMALY_VORTEX 10 10 10 10 10 10 10 10 10 10
|
||||
DYNAMIC_REQUIREMENTS BRAND_INTELLIGENCE 10 10 10 10 10 10 10 10 10 10
|
||||
DYNAMIC_REQUIREMENTS CARP_MIGRATION 10 10 10 10 10 10 10 10 10 10
|
||||
DYNAMIC_REQUIREMENTS COMMUNICATIONS_BLACKOUT 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS PROCESSOR_OVERLOAD 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS SPACE_DUST 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS MAJOR_DUST 10 10 10 10 10 10 10 10 10 10
|
||||
DYNAMIC_REQUIREMENTS ELECTRICAL_STORM 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS HEART_ATTACK 5 5 5 5 5 5 5 5 5 5
|
||||
DYNAMIC_REQUIREMENTS RADIATION_STORM 5 5 5 5 5 5 5 5 5 5
|
||||
|
||||
## Latejoin antags
|
||||
DYNAMIC_REQUIREMENTS LATEJOIN_TRAITOR 40 30 20 15 15 15 15 15 15 15
|
||||
DYNAMIC_REQUIREMENTS LATEJOIN_REVOLUTION 101 101 70 40 40 40 40 40 40 40
|
||||
DYNAMIC_REQUIREMENTS LATEJOIN_BLOODSUCKER 40 30 20 15 15 15 15 15 15 15
|
||||
DYNAMIC_REQUIREMENTS LATEJOIN_COLLECTOR 10 10 10 10 10 10 10 10 10 10
|
||||
|
||||
## An alternative, static requirement used instead when pop is over mode's high_pop_limit.
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT TRAITOR 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT MALF_AI 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT TRAITORBRO 101
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT CHANGELING 101
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT WIZARD 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT CULT 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT NUCLEAR 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT REVOLUTION 50
|
||||
# All below are impossible-by-default
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT EXTENDED 101
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT CLOCKWORK_CULT 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT CLOWNOPS 101
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT DEVIL 101
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT MONKEY 101
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT METEOR 101
|
||||
|
||||
## Midround antags
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT MIDROUND_TRAITOR 15
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT MIDROUND_MALF_AI 35
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT MIDROUND_WIZARD 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT MIDROUND_NUCLEAR 35
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT BLOB 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT XENOS 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT NIGHTMARE 15
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT SENTIENT_DISEASE 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT REVENANT 15
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT SLAUGHTER_DEMON 30
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT ABDUCTORS 15
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT SPACE_NINJA 30
|
||||
|
||||
## Events
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT SPIDERS 15
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT VENTCLOG 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT ION_STORM 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT METEOR_WAVE 30
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT PIRATES 15
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT ANOMALY_BLUESPACE 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT ANOMALY_FLUX 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT ANOMALY_GRAVITATIONAL 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT ANOMALY_PYROCLASTIC 10
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT ANOMALY_VORTEX 10
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT BRAND_INTELLIGENCE 10
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT CARP_MIGRATION 10
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT COMMUNICATIONS_BLACKOUT 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT PROCESSOR_OVERLOAD 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT SPACE_DUST 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT MAJOR_DUST 10
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT ELECTRICAL_STORM 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT HEART_ATTACK 5
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT RADIATION_STORM 5
|
||||
|
||||
## Latejoin antags
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_TRAITOR 15
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_REVOLUTION 50
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_BLOODSUCKER 15
|
||||
DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_COLLECTOR 10
|
||||
|
||||
## Dynamic traitor stuff
|
||||
|
||||
## Requirements for "hijack the shuttle" goals.
|
||||
DYNAMIC_HIJACK_REQUIREMENTS 101 101 101 95 80 70 60 50 40 30
|
||||
|
||||
DYNAMIC_HIJACK_HIGH_POPULATION_REQUIREMENT 25
|
||||
|
||||
DYNAMIC_HIJACK_COST 10
|
||||
|
||||
DYNAMIC_GLORIOUS_DEATH_COST 5
|
||||
|
||||
DYNAMIC_ASSASSINATE_COST 2
|
||||
|
||||
## This requirement uses threat level, rather than current threat, which is why it's higher.
|
||||
DYNAMIC_WAROPS_REQUIREMENT 60
|
||||
|
||||
DYNAMIC_WAROPS_COST 10
|
||||
|
||||
## Storyteller min players
|
||||
# STORYTELLER_MIN_PLAYERS CHAOTIC 35
|
||||
|
||||
## Storyteller minimum chaos
|
||||
# STORYTELLER_MIN_CHAOS CHAOTIC 75
|
||||
|
||||
## Storyteller maximum chaos
|
||||
# STORYTELLER_MAX_CHAOS CHAOTIC 250
|
||||
Reference in New Issue
Block a user