diff --git a/baystation12.dme b/baystation12.dme index 6e27d465476..d2b7b61fcf4 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -417,6 +417,7 @@ #include "code\game\gamemodes\intercept_report.dm" #include "code\game\gamemodes\objective.dm" #include "code\game\gamemodes\setupgame.dm" +#include "code\game\gamemodes\autotraitor\autotraitor.dm" #include "code\game\gamemodes\blob\blob.dm" #include "code\game\gamemodes\blob\blob_finish.dm" #include "code\game\gamemodes\blob\blob_report.dm" @@ -454,6 +455,7 @@ #include "code\game\gamemodes\nuclear\nuclearbomb.dm" #include "code\game\gamemodes\nuclear\pinpointer.dm" #include "code\game\gamemodes\revolution\revolution.dm" +#include "code\game\gamemodes\revolution\rp_revolution.dm" #include "code\game\gamemodes\sandbox\h_sandbox.dm" #include "code\game\gamemodes\sandbox\sandbox.dm" #include "code\game\gamemodes\traitor\traitor.dm" diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index 930fe363f8c..e9c7b7f794d 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -7,12 +7,17 @@ config_tag = "Extend-A-Traitormongous" var/list/possible_traitors + var/num_players = 0 /datum/game_mode/traitor/autotraitor/announce() ..() - world << "This is a test bed for theories and methods to implement an infinite traitor round. Traitors will be added to the round automagically as needed.
Expect bugs.
" + world << "Game mode is AutoTraitor. Traitors will be added to the round automagically as needed.
Expect bugs.
" /datum/game_mode/traitor/autotraitor/pre_setup() + + if(config.protect_roles_from_antagonist) + restricted_jobs += protected_jobs + possible_traitors = get_players_for_role(BE_TRAITOR) for(var/datum/mind/player in possible_traitors) @@ -134,33 +139,6 @@ //else //message_admins("Number of Traitors is at maximum. Not making a new Traitor.") - -/* Old equation. Commenting out. - target_traitors = max(1, min(round((playercount + r) / 10, 1), traitors_possible)) - message_admins("Target Traitor Count is: [target_traitors]") - - if (traitorcount < target_traitors) - message_admins("Number of Traitors is below Target. Making a new Traitor.") - var/mob/living/newtraitor = pick(possible_traitors) - message_admins("[newtraitor.real_name] is the new Traitor.") - - for(var/datum/objective/o in SelectObjectives(newtraitor.mind.assigned_role, newtraitor.mind)) - o.owner = newtraitor.mind - newtraitor.mind.objectives += o - - equip_traitor(newtraitor) - traitors += newtraitor.mind - newtraitor << "\red ATTENTION: \black It is time to pay your debt to the Syndicate..." - newtraitor << "You are now a traitor." - newtraitor.mind.special_role = "traitor" - var/obj_count = 1 - newtraitor << "\blue Your current objectives:" - for(var/datum/objective/objective in newtraitor.mind.objectives) - newtraitor << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ - else - message_admins("Number of Traitors is at Target. No new Traitor.") -*/ traitorcheckloop() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 5240f2b3674..0f33bddb993 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -324,6 +324,8 @@ Whitespace:Seperator; // Less if there are not enough valid players in the game entirely to make recommended_enemies. +/datum/game_mode/proc/latespawn(var/mob) + /datum/game_mode/proc/check_player_role_pref(var/role, var/mob/new_player/player) if(player.preferences.be_special & role) return 1 diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 3cf36ab5e36..ce43e6e1130 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -25,6 +25,7 @@ var/played = 0 var/be_alien = 0 //Check if that guy wants to be an alien var/be_pai = 1 //Consider client when searching for players to recruit as a pAI + var/be_syndicate = 1 //Consider client for late-game autotraitor var/activeslot = 1 //Default active slot! var/STFU_ghosts //80+ people rounds are fun to admin when text flies faster than airport security var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 97b123825b1..4759f8cdc71 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -344,6 +344,11 @@ character.loc = pick(latejoin) character.lastarea = get_area(loc) + if(character.client) + character.client.be_syndicate = preferences.be_special + + ticker.mode.latespawn(character) + if(character.mind.assigned_role != "Cyborg") data_core.manifest_inject(character) ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index d226be17772..b02c49ba8be 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -1128,6 +1128,7 @@ datum/preferences C.midis = src.midis C.be_alien = be_special & BE_ALIEN C.be_pai = be_special & BE_PAI + C.be_syndicate = be_special & BE_TRAITOR if(isnull(src.ghost_ears)) src.ghost_ears = 1 //There were problems where the default was null before someone saved their profile. C.ghost_ears = src.ghost_ears C.ghost_sight = src.ghost_sight