mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-11 07:59:08 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -91,6 +91,17 @@ SUBSYSTEM_DEF(mapping)
|
||||
seedRuins(space_ruins, CONFIG_GET(number/space_budget), /area/space, space_ruins_templates)
|
||||
SSmapping.seedStation()
|
||||
loading_ruins = FALSE
|
||||
|
||||
//Hyper change - preload Reebe for midround purposes. I'll change this when I find a decent way to load maps midround.
|
||||
var/list/errorList = list()
|
||||
var/list/reebes = SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE)
|
||||
if(errorList.len) // reebe failed to load
|
||||
message_admins("Reebe failed to load!")
|
||||
log_game("Reebe failed to load!")
|
||||
return FALSE
|
||||
for(var/datum/parsed_map/PM in reebes)
|
||||
PM.initTemplateBounds()
|
||||
|
||||
#endif
|
||||
repopulate_sorted_areas()
|
||||
// Set up Z-level transitions.
|
||||
|
||||
@@ -150,6 +150,7 @@ Credit where due:
|
||||
var/datum/team/clockcult/main_clockcult
|
||||
|
||||
/datum/game_mode/clockwork_cult/pre_setup()
|
||||
/* //Reebe should be preloaded
|
||||
var/list/errorList = list()
|
||||
var/list/reebes = SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE)
|
||||
if(errorList.len) // reebe failed to load
|
||||
@@ -158,6 +159,7 @@ Credit where due:
|
||||
return FALSE
|
||||
for(var/datum/parsed_map/PM in reebes)
|
||||
PM.initTemplateBounds()
|
||||
*/
|
||||
if(CONFIG_GET(flag/protect_roles_from_antagonist))
|
||||
restricted_jobs += protected_jobs
|
||||
if(CONFIG_GET(flag/protect_assistant_from_antagonist))
|
||||
|
||||
@@ -17,10 +17,10 @@ GLOBAL_VAR_INIT(dynamic_latejoin_delay_max, (25 MINUTES))
|
||||
GLOBAL_VAR_INIT(dynamic_midround_delay_min, (15 MINUTES))
|
||||
GLOBAL_VAR_INIT(dynamic_midround_delay_max, (35 MINUTES))
|
||||
|
||||
GLOBAL_VAR_INIT(dynamic_event_delay_min, (3 MINUTES))
|
||||
GLOBAL_VAR_INIT(dynamic_event_delay_max, (10 MINUTES))
|
||||
GLOBAL_VAR_INIT(dynamic_event_delay_min, (4 MINUTES))
|
||||
GLOBAL_VAR_INIT(dynamic_event_delay_max, (12 MINUTES))
|
||||
|
||||
GLOBAL_VAR_INIT(dynamic_threat_delay, (5 MINUTES))
|
||||
GLOBAL_VAR_INIT(dynamic_threat_delay, (4 MINUTES))
|
||||
|
||||
// Are HIGHLANDER_RULESETs allowed to stack?
|
||||
GLOBAL_VAR_INIT(dynamic_no_stacking, TRUE)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
var/list/exclusive_roles = list()
|
||||
/// If set, there needs to be a certain amount of players doing those roles (among the players who won't be drafted) for the rule to be drafted IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
|
||||
var/list/enemy_roles = list()
|
||||
/// If enemy_roles was set, this is the amount of enemy job workers needed per threat_level range (0-10,10-20,etc) IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
|
||||
/// If enemy_roles was set, this is the amount of enemy job workers needed per GLOB.dynamic_chaos_level range (0-0.5, 0.5-1.0) IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS.
|
||||
var/required_enemies = list(1,1,0,0,0,0,0,0,0,0)
|
||||
/// The rule needs this many candidates (post-trimming) to be executed (example: Cult needs 4 players at round start)
|
||||
var/required_candidates = 0
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
if (M.mind && M.mind.assigned_role && (M.mind.assigned_role in enemy_roles) && (!(M in candidates) || (M.mind.assigned_role in restricted_roles)))
|
||||
job_check++ // Checking for "enemies" (such as sec officers). To be counters, they must either not be candidates to that rule, or have a job that restricts them from it
|
||||
|
||||
var/threat = max(min(round(mode.threat_level/10),9),1) //min() to stop index errors at 100 threat //Max to stop breaking at 0 threat.
|
||||
if (job_check < required_enemies[threat])
|
||||
var/chaos = min(max(round(GLOB.dynamic_chaos_level * 2), 0), 9)
|
||||
if (job_check < required_enemies[chaos])
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
@@ -249,7 +249,7 @@
|
||||
else if(mode.threat_level > 15 && mode.threat > 15 && prob(30))
|
||||
name = "Clogged Vents: Catastrophic"
|
||||
cost = 15
|
||||
required_enemies = list(4,4,4,3,3,3,2,1,1,1)
|
||||
required_enemies = list(4,4,4,3,3,3,2,1,1,0)
|
||||
typepath = /datum/round_event/vent_clog/catastrophic
|
||||
chaos_min = 1.8
|
||||
else
|
||||
@@ -307,14 +307,15 @@
|
||||
/datum/dynamic_ruleset/event/meteor_wave/ready()
|
||||
if(world.time-SSticker.round_start_time > 35 MINUTES && mode.threat_level > 40 && mode.threat >= 25 && prob(30))
|
||||
name = "Meteor Wave: Threatening"
|
||||
cost = 10
|
||||
cost = 5
|
||||
typepath = /datum/round_event/meteor_wave/threatening
|
||||
requirements = list(101,101,30,25,20,20,20,20,20,15)
|
||||
chaos_min = 1.8
|
||||
else if(world.time-SSticker.round_start_time > 45 MINUTES && mode.threat_level > 50 && mode.threat >= 40 && prob(30))
|
||||
name = "Meteor Wave: Catastrophic"
|
||||
cost = 0
|
||||
cost = 10
|
||||
typepath = /datum/round_event/meteor_wave/catastrophic
|
||||
required_enemies = list(3,3,3,3,3,3,3,3,3,3)
|
||||
required_enemies = list(3,3,3,3,3,2,2,1,1,0)
|
||||
requirements = list(101,101,40,30,30,30,30,30,30,30)
|
||||
chaos_min = 2.0
|
||||
else
|
||||
@@ -336,11 +337,11 @@
|
||||
//config_tag = "anomaly_bluespace"
|
||||
typepath = /datum/round_event/anomaly/anomaly_bluespace
|
||||
enemy_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Scientist","Captain")
|
||||
required_enemies = list(1,1,1,0,0,0,0,0,0,0)
|
||||
required_enemies = list(2,2,2,1,1,1,1,1,1,0)
|
||||
weight = 3
|
||||
earliest_start = 20 MINUTES
|
||||
repeatable_weight_decrease = 2
|
||||
cost = 3
|
||||
cost = 0
|
||||
requirements = list(101,101,5,5,5,5,5,5,5,5)
|
||||
high_population_requirement = 5
|
||||
repeatable = TRUE
|
||||
@@ -353,7 +354,7 @@
|
||||
//config_tag = "anomaly_flux"
|
||||
typepath = /datum/round_event/anomaly/anomaly_flux
|
||||
enemy_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Scientist","Captain")
|
||||
required_enemies = list(1,1,1,0,0,0,0,0,0,0)
|
||||
required_enemies = list(2,2,2,2,2,2,2,2,2,0)
|
||||
weight = 3
|
||||
earliest_start = 20 MINUTES
|
||||
repeatable_weight_decrease = 2
|
||||
@@ -388,7 +389,7 @@
|
||||
repeatable_weight_decrease = 1
|
||||
cost = 0
|
||||
enemy_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Scientist","Captain","Cyborg")
|
||||
required_enemies = list(2,2,2,2,2,1,1,1,1,1)
|
||||
required_enemies = list(2,2,2,2,2,1,1,1,1,0)
|
||||
requirements = list(101,101,10,10,10,10,10,10,10,10)
|
||||
high_population_requirement = 10
|
||||
repeatable = TRUE
|
||||
@@ -405,7 +406,7 @@
|
||||
repeatable_weight_decrease = 1
|
||||
cost = 0
|
||||
enemy_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Scientist","Captain","Cyborg")
|
||||
required_enemies = list(3,3,3,2,2,2,2,2,2,2)
|
||||
required_enemies = list(3,3,3,2,2,2,2,2,2,0)
|
||||
requirements = list(101,101,10,10,10,10,10,10,10,10)
|
||||
high_population_requirement = 10
|
||||
repeatable = TRUE
|
||||
@@ -428,6 +429,7 @@
|
||||
occurances_max = 1
|
||||
requirements = list(10,5,0,0,0,0,0,0,0,0) //SECURE THAT DISK
|
||||
cost = 50
|
||||
chaos_min = 0.5
|
||||
|
||||
/datum/dynamic_ruleset/event/operative/get_weight()
|
||||
var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control
|
||||
@@ -453,7 +455,7 @@
|
||||
weight = 1
|
||||
earliest_start = 30 MINUTES
|
||||
repeatable_weight_decrease = 1
|
||||
cost = -10
|
||||
cost = 0
|
||||
enemy_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Scientist","Captain","Cyborg")
|
||||
required_enemies = list(2,1,1,1,1,1,0,0,0,0)
|
||||
requirements = list(101,25,20,15,15,15,10,10,10,10)
|
||||
@@ -472,7 +474,7 @@
|
||||
cost = 4
|
||||
requirements = list(101,5,5,1,1,1,1,1,1,1)
|
||||
high_population_requirement = 10
|
||||
earliest_start = 0 MINUTES
|
||||
earliest_start = 10 MINUTES
|
||||
repeatable = TRUE
|
||||
//property_weights = list("extended" = 1)
|
||||
occurances_max = 3
|
||||
@@ -482,7 +484,7 @@
|
||||
name = "Communications Blackout"
|
||||
//config_tag = "communications_blackout"
|
||||
typepath = /datum/round_event/communications_blackout
|
||||
cost = 4
|
||||
cost = 2
|
||||
weight = 10
|
||||
repeatable_weight_decrease = 2
|
||||
enemy_roles = list("Chief Engineer","Station Engineer")
|
||||
@@ -549,7 +551,7 @@
|
||||
repeatable_weight_decrease = 2
|
||||
enemy_roles = list("Chief Engineer","Station Engineer")
|
||||
required_enemies = list(1,1,1,0,0,0,0,0,0,0)
|
||||
requirements = list(5,5,4,3,2,1,1,0,0,0)
|
||||
requirements = list(3,3,2,2,1,1,0,0,0,0)
|
||||
high_population_requirement = 5
|
||||
repeatable = TRUE
|
||||
occurances_max = 10
|
||||
@@ -557,12 +559,12 @@
|
||||
/datum/dynamic_ruleset/event/heart_attack
|
||||
name = "Random Heart Attack"
|
||||
typepath = /datum/round_event/heart_attack
|
||||
cost = 15
|
||||
cost = 0
|
||||
weight = 2
|
||||
earliest_start = 30 MINUTES
|
||||
repeatable_weight_decrease = 1
|
||||
enemy_roles = list("Medical Doctor","Chief Medical Officer")
|
||||
required_enemies = list(2,2,2,2,2,2,2,2,2,2)
|
||||
required_enemies = list(2,2,2,2,2,2,2,2,2,0)
|
||||
requirements = list(101,101,101,10,5,5,5,5,5,5)
|
||||
high_population_requirement = 5
|
||||
repeatable = TRUE
|
||||
@@ -577,7 +579,7 @@
|
||||
weight = 2
|
||||
repeatable_weight_decrease = 2
|
||||
enemy_roles = list("Chemist","Chief Medical Officer","Geneticist","Medical Doctor","AI","Captain")
|
||||
required_enemies = list(1,1,1,1,1,1,1,1,1,1)
|
||||
required_enemies = list(1,1,1,1,1,1,1,1,1,0)
|
||||
requirements = list(5,5,5,5,5,5,5,5,5,5)
|
||||
high_population_requirement = 5
|
||||
//property_weights = list("extended" = 1,"chaos" = 1)
|
||||
@@ -590,7 +592,7 @@
|
||||
cost = 0
|
||||
weight = 1
|
||||
enemy_roles = list("Head of Security","Security Officer","AI","Captain","Shaft Miner")
|
||||
required_enemies = list(2,2,2,2,2,2,2,2,2,2)
|
||||
required_enemies = list(2,2,2,2,2,2,2,2,2,0)
|
||||
requirements = list(101,101,40,35,30,30,30,30,25,20)
|
||||
high_population_requirement = 30
|
||||
earliest_start = 40 MINUTES
|
||||
@@ -607,7 +609,7 @@
|
||||
weight = 2
|
||||
repeatable_weight_decrease = 1
|
||||
enemy_roles = list("AI","Medical Doctor","Station Engineer","Head of Personnel","Captain")
|
||||
required_enemies = list(2,2,2,2,2,2,2,2,2,2)
|
||||
required_enemies = list(2,2,2,2,2,2,2,2,2,0)
|
||||
requirements = list(5,5,5,5,5,5,5,5,5,5)
|
||||
high_population_requirement = 5
|
||||
//property_weights = list("extended" = 1)
|
||||
@@ -622,7 +624,7 @@
|
||||
weight = 1
|
||||
earliest_start = 40 MINUTES
|
||||
enemy_roles = list("AI","Security Officer","Head of Security","Captain","Station Engineer","Atmos Technician","Chief Engineer")
|
||||
required_enemies = list(4,4,4,4,3,3,3,3,3,2)
|
||||
required_enemies = list(4,4,4,4,3,3,3,3,2,0)
|
||||
requirements = list(101,101,50,40,40,40,40,35,30,30)
|
||||
high_population_requirement = 5
|
||||
//property_weights = list("extended" = -2)
|
||||
@@ -638,7 +640,7 @@
|
||||
required_candidates = 1
|
||||
weight = 4
|
||||
cost = -5
|
||||
requirements = list(30,30,20,20,15,10,10,10,10,5) // yes, it can even happen in "extended"!
|
||||
requirements = list(101,30,20,20,15,10,10,10,10,5) // yes, it can even happen in "extended"!
|
||||
//property_weights = list("story_potential" = 1, "extended" = 1, "valid" = -2)
|
||||
high_population_requirement = 5
|
||||
occurances_max = 1
|
||||
@@ -664,7 +666,7 @@
|
||||
controller = /datum/round_event_control/immovable_rod
|
||||
typepath = /datum/round_event/immovable_rod
|
||||
enemy_roles = list("Research Director","Chief Engineer","Station Engineer","Captain","Chaplain","AI")
|
||||
required_enemies = list(2,2,2,2,2,2,1,1,1,1)
|
||||
required_enemies = list(2,2,2,2,2,2,1,1,1,0)
|
||||
requirements = list(101,101,18,16,14,12,10,8,6,6)
|
||||
high_population_requirement = 15
|
||||
cost = 0
|
||||
@@ -798,7 +800,7 @@
|
||||
name = "Grey Tide"
|
||||
typepath = /datum/round_event/grey_tide
|
||||
enemy_roles = list("Chief Engineer","Station Engineer","Captain","Atmospheric Technician","AI","Cyborg")
|
||||
required_enemies = list(3,2,2,2,2,2,1,1,1,1)
|
||||
required_enemies = list(3,2,2,2,2,2,1,1,1,0)
|
||||
requirements = list(101,101,5,5,5,5,5,5,5,5)
|
||||
high_population_requirement = 0
|
||||
repeatable = TRUE
|
||||
@@ -809,9 +811,9 @@
|
||||
/datum/dynamic_ruleset/event/sentience
|
||||
name = "Random Human-level Intelligence"
|
||||
typepath = /datum/round_event/ghost_role/sentience
|
||||
requirements = list(0,0,0,0,0,0,0,0,0,0)
|
||||
requirements = list(101,101,0,0,0,0,0,0,0,0)
|
||||
high_population_requirement = 0
|
||||
weight = 5
|
||||
weight = 1
|
||||
|
||||
/datum/dynamic_ruleset/event/shuttle_loan
|
||||
name = "Shuttle Loan"
|
||||
@@ -829,7 +831,7 @@
|
||||
name = "Spacevine"
|
||||
typepath = /datum/round_event/spacevine
|
||||
enemy_roles = list("Cook","Botanist","Security Officer","Captain","Station Engineer")
|
||||
required_enemies = list(2,2,2,1,1,1,1,1,1,1)
|
||||
required_enemies = list(2,2,2,1,1,1,1,1,1,0)
|
||||
requirements = list(101,101,10,9,8,7,5,5,5,0)
|
||||
cost = 2
|
||||
high_population_requirement = 0
|
||||
@@ -843,10 +845,10 @@
|
||||
name = "Spontaneous Appendicitis"
|
||||
typepath = /datum/round_event/spontaneous_appendicitis
|
||||
enemy_roles = list("Medical Doctor","Chief Medical Officer")
|
||||
required_enemies = list(2,2,1,1,1,1,1,1,1,1)
|
||||
required_enemies = list(2,2,1,1,1,1,1,1,1,0)
|
||||
requirements = list(5,5,5,5,5,5,5,5,0,0)
|
||||
high_population_requirement = 5
|
||||
weight = 8
|
||||
weight = 5
|
||||
repeatable = TRUE
|
||||
repeatable_weight_decrease = 5
|
||||
repeatable_weight_decrease = 3
|
||||
occurances_max = 3
|
||||
@@ -18,6 +18,7 @@
|
||||
var/list/dead_players = list()
|
||||
var/list/list_observers = list()
|
||||
var/list/ghost_eligible = list()
|
||||
var/controller //round event controller for the event - Required for certain events dependendant on variables within their controllers
|
||||
|
||||
/datum/dynamic_ruleset/midround/from_ghosts
|
||||
weight = 0
|
||||
@@ -99,9 +100,8 @@
|
||||
continue // Dead players cannot count as opponents
|
||||
if (M.mind && M.mind.assigned_role && (M.mind.assigned_role in enemy_roles) && (!(M in candidates) || (M.mind.assigned_role in restricted_roles)))
|
||||
job_check++ // Checking for "enemies" (such as sec officers). To be counters, they must either not be candidates to that rule, or have a job that restricts them from it
|
||||
|
||||
var/threat = min(round(mode.threat_level/10),9)
|
||||
if (job_check < required_enemies[threat])
|
||||
var/chaos = min(max(round(GLOB.dynamic_chaos_level * 2), 0), 9)
|
||||
if (job_check < required_enemies[chaos])
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -113,8 +113,20 @@
|
||||
|
||||
|
||||
/datum/dynamic_ruleset/midround/from_ghosts/execute()
|
||||
var/application_successful = send_applications(ghost_eligible)
|
||||
return assigned.len > 0 && application_successful
|
||||
message_admins("<span class='deadsay'><b>[name]</b> has just been randomly triggered!</span>") //STOP ASSUMING IT'S BADMINS!
|
||||
log_game("Midround triggering: [name]")
|
||||
var/datum/round_event/E
|
||||
//occurances_current++
|
||||
if(controller)
|
||||
var/datum/round_event_control/C = locate(controller) in SSevents.control
|
||||
E = C.runEvent()
|
||||
else
|
||||
var/application_successful = send_applications(ghost_eligible)
|
||||
return assigned.len > 0 && application_successful
|
||||
|
||||
testing("[time2text(world.time, "hh:mm:ss")] [E.type]")
|
||||
|
||||
return E
|
||||
|
||||
/// This sends a poll to ghosts if they want to be a ghost spawn from a ruleset.
|
||||
/datum/dynamic_ruleset/midround/from_ghosts/proc/send_applications(list/possible_volunteers = list())
|
||||
@@ -221,7 +233,7 @@
|
||||
high_population_requirement = 10
|
||||
flags = TRAITOR_RULESET
|
||||
chaos_min = 2.0
|
||||
chaos_max = 4.0
|
||||
chaos_max = 3.5
|
||||
|
||||
/datum/dynamic_ruleset/midround/autotraitor/acceptable(population = 0, threat = 0)
|
||||
var/player_count = mode.current_players[CURRENT_LIVING_PLAYERS].len
|
||||
@@ -380,7 +392,7 @@
|
||||
required_candidates = 1
|
||||
weight = 3
|
||||
cost = 20
|
||||
requirements = list(101,101,55,50,45,40,35,30,25,20)
|
||||
requirements = list(101,101,101,45,40,35,30,25,20,15)
|
||||
high_population_requirement = 35
|
||||
required_type = /mob/living/silicon/ai
|
||||
var/ion_announce = 33
|
||||
@@ -428,7 +440,7 @@
|
||||
antag_datum = /datum/antagonist/wizard
|
||||
antag_flag = ROLE_WIZARD
|
||||
enemy_roles = list("Security Officer","Detective","Head of Security", "Captain")
|
||||
required_enemies = list(2,2,1,1,1,1,1,1,0,0)
|
||||
required_enemies = list(2,2,1,1,1,1,1,1,1,0)
|
||||
required_candidates = 1
|
||||
weight = 1
|
||||
cost = 20
|
||||
@@ -462,13 +474,13 @@
|
||||
antag_flag = ROLE_OPERATIVE
|
||||
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,2,1,1,0)
|
||||
required_enemies = list(3,3,3,3,3,2,2,2,2,1)
|
||||
required_candidates = 5
|
||||
weight = 5
|
||||
cost = 35
|
||||
requirements = list(101,101,100,70,60,50,40,40,40,40)
|
||||
cost = 20
|
||||
requirements = list(101,100,95,85,70,60,50,40,30,20)
|
||||
high_population_requirement = 10
|
||||
var/operative_cap = list(2,2,2,2,3,3,4,4,5,5)
|
||||
var/operative_cap = list(1,1,1,2,2,3,3,4,4,5)
|
||||
var/datum/team/nuclear/nuke_team
|
||||
flags = HIGHLANDER_RULESET
|
||||
chaos_min = 4.0
|
||||
@@ -505,15 +517,17 @@
|
||||
name = "Blob"
|
||||
antag_datum = /datum/antagonist/blob
|
||||
antag_flag = ROLE_BLOB
|
||||
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
|
||||
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain", "Station Engineer")
|
||||
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
|
||||
required_candidates = 1
|
||||
weight = 4
|
||||
weight = 3
|
||||
cost = 20
|
||||
requirements = list(101,101,60,50,45,40,40,40,30,20)
|
||||
requirements = list(101,101,101,60,50,40,40,40,30,20)
|
||||
//requirements = list(0,0,0,0,0,0,0,0,0,0)
|
||||
high_population_requirement = 50
|
||||
repeatable = TRUE
|
||||
chaos_min = 3.5
|
||||
chaos_min = 4.0
|
||||
controller = /datum/round_event_control/blob
|
||||
|
||||
/datum/dynamic_ruleset/midround/from_ghosts/blob/generate_ruleset_body(mob/applicant)
|
||||
var/body = applicant.become_overmind()
|
||||
@@ -534,11 +548,13 @@
|
||||
required_candidates = 1
|
||||
weight = 3
|
||||
cost = 15
|
||||
requirements = list(101,101,100,70,60,50,40,40,30,20)
|
||||
requirements = list(101,101,101,50,40,35,30,30,30,20)
|
||||
//requirements = list(0,0,0,0,0,0,0,0,0,0)
|
||||
high_population_requirement = 50
|
||||
repeatable = TRUE
|
||||
var/list/vents = list()
|
||||
chaos_min = 3.5
|
||||
controller = /datum/round_event_control/alien_infestation
|
||||
|
||||
/datum/dynamic_ruleset/midround/from_ghosts/xenomorph/execute()
|
||||
// 50% chance of being incremented by one
|
||||
@@ -580,7 +596,7 @@
|
||||
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
|
||||
weight = 3
|
||||
weight = 4
|
||||
cost = 10
|
||||
requirements = list(101,50,40,30,20,20,20,20,15,10)
|
||||
high_population_requirement = 50
|
||||
@@ -626,18 +642,18 @@
|
||||
antag_flag = ROLE_ABDUCTOR
|
||||
// Has two antagonist flags, in fact
|
||||
enemy_roles = list("AI", "Cyborg", "Security Officer", "Warden","Detective","Head of Security", "Captain")
|
||||
required_enemies = list(3,3,2,2,1,1,0,0,0,0)
|
||||
required_enemies = list(3,3,2,2,2,2,2,2,2,0)
|
||||
required_candidates = 2
|
||||
weight = 4
|
||||
weight = 3
|
||||
cost = 10
|
||||
requirements = list(101,101,50,45,40,30,20,20,10,10)
|
||||
requirements = list(101,101,101,101,40,30,30,30,30,30)
|
||||
blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear)
|
||||
high_population_requirement = 15
|
||||
var/datum/team/abductor_team/team
|
||||
//property_weights = list("extended" = -2, "valid" = 1, "trust" = -1, "chaos" = 2)
|
||||
repeatable_weight_decrease = 4
|
||||
repeatable = TRUE
|
||||
chaos_min = 2.0
|
||||
chaos_min = 4.0
|
||||
|
||||
/datum/dynamic_ruleset/midround/from_ghosts/abductors/ready(forced = FALSE)
|
||||
team = new /datum/team/abductor_team
|
||||
@@ -671,7 +687,7 @@
|
||||
required_enemies = list(3,2,2,2,2,1,1,1,1,0)
|
||||
required_candidates = 1
|
||||
weight = 4
|
||||
cost = 15
|
||||
cost = 10
|
||||
requirements = list(101,101,101,40,35,30,25,20,20,20)
|
||||
high_population_requirement = 30
|
||||
//property_weights = list("story_potential" = 1, "extended" = -2, "valid" = 2)
|
||||
|
||||
@@ -300,7 +300,7 @@
|
||||
flags = HIGHLANDER_RULESET
|
||||
var/cultist_cap = list(2,2,2,3,3,4,4,4,4,4)
|
||||
var/datum/team/cult/main_cult
|
||||
chaos_min = 4.9
|
||||
chaos_min = 4.5
|
||||
admin_required = TRUE
|
||||
|
||||
/datum/dynamic_ruleset/roundstart/bloodcult/ready(forced = FALSE)
|
||||
@@ -356,7 +356,7 @@
|
||||
required_candidates = 5
|
||||
weight = 3
|
||||
cost = 20
|
||||
requirements = list(101,100,90,80,70,60,50,40,30,20)
|
||||
requirements = list(101,100,95,85,70,60,50,40,30,20)
|
||||
high_population_requirement = 10
|
||||
pop_per_requirement = 5
|
||||
flags = HIGHLANDER_RULESET
|
||||
@@ -559,11 +559,13 @@
|
||||
required_candidates = 4
|
||||
weight = 4
|
||||
cost = 0
|
||||
requirements = list(101,101,100,90,80,70,60,50,40,30)
|
||||
requirements = list(101,101,100,95,85,70,60,50,40,30)
|
||||
//requirements = list(0,0,0,0,0,0,0,0,0,0)
|
||||
high_population_requirement = 101
|
||||
flags = HIGHLANDER_RULESET
|
||||
var/ark_time
|
||||
chaos_min = 4.9
|
||||
var/servants = list(1,1,1,1,2,2,3,3,4,4)
|
||||
chaos_min = 4.5
|
||||
admin_required = TRUE
|
||||
|
||||
/datum/dynamic_ruleset/roundstart/clockcult/pre_execute()
|
||||
@@ -575,20 +577,23 @@
|
||||
return FALSE
|
||||
for(var/datum/parsed_map/PM in reebes)
|
||||
PM.initTemplateBounds()
|
||||
|
||||
/*
|
||||
var/starter_servants = 4
|
||||
var/number_players = num_players()
|
||||
if(number_players > 30)
|
||||
number_players -= 30
|
||||
starter_servants += round(number_players / 10)
|
||||
starter_servants = min(starter_servants, 8)
|
||||
*/
|
||||
var/indice_pop = min(10,round(mode.roundstart_pop_ready/5)+1)
|
||||
var/starter_servants = servants[indice_pop]
|
||||
for (var/i in 1 to starter_servants)
|
||||
var/mob/servant = pick(candidates)
|
||||
candidates -= servant
|
||||
assigned += servant.mind
|
||||
servant.mind.assigned_role = ROLE_SERVANT_OF_RATVAR
|
||||
servant.mind.special_role = ROLE_SERVANT_OF_RATVAR
|
||||
ark_time = 30 + round((number_players / 5))
|
||||
ark_time = 30 + round((mode.roundstart_pop_ready / 5))
|
||||
ark_time = min(ark_time, 35)
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
roundend_category = "traitors"
|
||||
antagpanel_category = "Traitor"
|
||||
job_rank = ROLE_TRAITOR
|
||||
antag_moodlet = /datum/mood_event/focused //No special moodlet yet
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
special_role = ROLE_TRAITOR
|
||||
employer = "The Syndicate"
|
||||
give_objectives = TRUE
|
||||
@@ -72,11 +72,6 @@
|
||||
add_objective(steal_objective)
|
||||
return
|
||||
|
||||
/datum/antagonist/traitor/thief/greet()
|
||||
to_chat(owner.current, "<span class='userlove'>You are the [owner.special_role].</span>")
|
||||
owner.announce_objectives()
|
||||
if(should_give_codewords)
|
||||
give_codewords()
|
||||
|
||||
/datum/antagonist/traitor/thief/on_gain()
|
||||
if(owner.current && isAI(owner.current))
|
||||
|
||||
Reference in New Issue
Block a user