diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index 38d0138139f..53709b3cf28 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -191,7 +191,6 @@ var/global/list/bitflags = list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define JOB_FLAG_NON_HUMAN 128
#define JOB_FLAG_HEAD_OF_STAFF 256
#define JOB_FLAG_BLUESHIELD_PROTEC 512
-#define JOB_FLAG_IMPOSTER_PRIORITIZE 1024
//dir macros
///Returns true if the dir is diagonal, false otherwise
diff --git a/code/__DEFINES/gamemodes.dm b/code/__DEFINES/gamemodes.dm
index afea4053526..24aa2cde80a 100644
--- a/code/__DEFINES/gamemodes.dm
+++ b/code/__DEFINES/gamemodes.dm
@@ -14,7 +14,6 @@
#define F_FAMILIES "Families"
#define F_HEIST "Vox Shoal"
#define F_HIVEMIND "Changeling Hivemind"
-#define F_IMPOSTERS "Imposters"
#define F_PROPS "Props"
#define F_REVOLUTION "Revolution"
#define F_SYNDIOPS "Syndicate Operatives"
@@ -44,7 +43,6 @@
#define GANGSTER_LEADER "Gangster Leader"
#define GANGSTER_DEALER "Gangster Dealer"
#define HEADREV "Head Revolutionary"
-#define IMPOSTER "Imposter"
#define MALF "Malf AI"
#define MALFBOT "Malf-Slaved Cyborg"
#define NUKE_OP "Nuclear Operative"
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index c78c3d8c127..c58bd1878cc 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -205,8 +205,6 @@
#define istraitor(H) isrole(TRAITOR, H)
-#define isimposter(H) isrole(IMPOSTER, H)
-
#define iselitesyndie(H) isrole(SYNDIESQUADIE, H)
#define ismalf(H) isrole(MALF, H)
diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index c8ea2950790..664d4152203 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -19,7 +19,6 @@
#define ROLE_ABDUCTOR "Abductor"
#define ROLE_FAMILIES "Families"
#define ROLE_GHOSTLY "Ghostly Roles"
-#define ROLE_IMPOSTER "Imposter"
#define ROLE_REPLICATOR "Replicator"
#define ROLE_ERT "Emergency Response Team"
@@ -50,7 +49,6 @@ var/global/list/special_roles_ignore_question = list(
ROLE_SHADOWLING = null,
ROLE_FAMILIES = null,
ROLE_REPLICATOR = null,
- ROLE_IMPOSTER = null,
ROLE_GHOSTLY = list(IGNORE_PAI, IGNORE_TSTAFF, IGNORE_SURVIVOR, IGNORE_POSBRAIN, IGNORE_DRONE),
)
diff --git a/code/_globalvars/lists/misc.dm b/code/_globalvars/lists/misc.dm
index a1c6d2848e0..fe082152064 100644
--- a/code/_globalvars/lists/misc.dm
+++ b/code/_globalvars/lists/misc.dm
@@ -29,7 +29,6 @@ var/global/list/roles_ingame_minute_unlock = list(
ROLE_SHADOWLING = 4320,
ROLE_FAMILIES = 2160,
ROLE_REPLICATOR = 2880,
- ROLE_IMPOSTER = 720,
ROLE_GHOSTLY = 360,
)
diff --git a/code/game/gamemodes/factions/autotraitors.dm b/code/game/gamemodes/factions/autotraitors.dm
index 59fc12c8735..2a930f4c435 100644
--- a/code/game/gamemodes/factions/autotraitors.dm
+++ b/code/game/gamemodes/factions/autotraitors.dm
@@ -1,6 +1,3 @@
-// Time for station to equip themselfs
-#define FIRST_ADDITION_IMPOSTER_CD 7 MINUTES
-
/datum/faction/traitor/auto
name = "AutoTraitors"
var/next_try = 0
@@ -89,102 +86,3 @@
/datum/faction/traitor/auto/OnPostSetup()
addtimer(CALLBACK(src, PROC_REF(traitorcheckloop)), global.autotraitors_spawn_cd)
return ..()
-
-/datum/faction/traitor/auto/imposter
- name = F_IMPOSTERS
- required_pref = ROLE_IMPOSTER
- roletype = /datum/role/traitor/imposter
- initroletype = /datum/role/traitor/imposter
- //latespawned human can be imposter
- accept_latejoiners = TRUE
- rounstart_populate = FALSE
- //abstract variable which helps decide how much imposters we need
- var/antag_counting = 0
-
-/datum/faction/traitor/auto/imposter/can_setup(num_players)
- limit_roles(num_players)
- return TRUE
-
-/datum/faction/traitor/auto/imposter/OnPostSetup()
- . = ..()
- antag_counting = members.len
- addtimer(CALLBACK(src, PROC_REF(first_imposter_addition)), FIRST_ADDITION_IMPOSTER_CD)
-
-// Mindprotected gain imposter
-/datum/faction/traitor/auto/imposter/proc/first_imposter_addition()
- var/list/mindprotected_list = list()
- for(var/mob/living/carbon/human/player as anything in human_list)
- if(!player.mind || !player.client)
- continue
- if(isanyantag(player))
- continue
- if(!(required_pref in player.client.prefs.be_role))
- continue
- if(jobban_isbanned(player, required_pref))
- continue
- if(!role_available_in_minutes(player, required_pref))
- continue
- var/datum/job/J = SSjob.GetJob(player.mind.assigned_role)
- if(!J)
- continue
- if(J.flags & JOB_FLAG_IMPOSTER_PRIORITIZE)
- mindprotected_list += player
- log_mode("IMPOSTERS: First addition list has [mindprotected_list.len] lenght")
- if(mindprotected_list.len)
- var/mob/M = pick(mindprotected_list)
- add_faction_member(src, M, TRUE, TRUE)
- antag_counting++
-
-/datum/faction/traitor/auto/imposter/get_max_traitors(playercount)
- return antag_counting
-
-//less maths
-/datum/faction/traitor/auto/imposter/calculate_autotraitor_probability(playercount, current_traitors, max_traitors)
- var/traitor_prob = 100
- log_mode("IMPOSTERS: Current count of roles on station is [current_traitors].")
- var/border_of_traitors = min(playercount, max_traitors)
- log_mode("IMPOSTERS: Calculated border of roles is [border_of_traitors].")
- if(current_traitors > border_of_traitors)
- traitor_prob = 0
- return traitor_prob
-
-/datum/faction/traitor/auto/imposter/traitorcheckloop()
- log_mode("IMPOSTERS: Try add new auto-imposter.")
- antag_counting++
- if(antag_counting > members.len)
- return ..()
- else
- log_mode("IMPOSTERS: Imposter count is [antag_counting], members count is [members.len]. Adding auto-imposters failed")
-
-/datum/faction/traitor/auto/imposter/limit_roles(num_players)
- // No imposters on roundstart
- max_roles = 0
- min_roles = 0
- return max_roles
-
-/datum/faction/traitor/auto/imposter/can_latespawn_mob(mob/P)
- //Not every joined human can start with traitor role
- if(prob(50))
- log_mode("IMPOSTERS: [P] latespawned without adding to [src] faction")
- return FALSE
- //calculate every time which members are succeed, stop spawn when at least 1 succeeded
- for(var/datum/role/member_role in members)
- if(member_role.IsSuccessful())
- log_mode("IMPOSTERS: [P] wanna be a member of [src], but [src] faction members have completed objectives")
- return FALSE
- //probability 50% to increase amount of imposters by ~20%
- if(members.len < calculate_traitor_scaling(player_list.len))
- return TRUE
- log_mode("IMPOSTERS: Members ([members.len]) has enough people for current players amount ([player_list.len])")
-
-/datum/faction/traitor/auto/imposter/sort_possible_traitors(list/sorting_list)
- for(var/mob/living/player in sorting_list)
- if(!player.mind || !player.client)
- sorting_list -= player
- continue
- for(var/job in list("Velocity Officer", "Velocity Chief", "Velocity Medical Doctor"))
- if(player.mind.assigned_role == job)
- sorting_list -= player
- return sorting_list
-
-#undef FIRST_ADDITION_IMPOSTER_CD
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 2ee0add5986..56a0da11933 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -204,7 +204,7 @@ var/global/list/datum/faction/preinit_factions
addtimer(CALLBACK(src, PROC_REF(display_roundstart_logout_report)), ROUNDSTART_LOGOUT_REPORT_TIME)
addtimer(CALLBACK(src, PROC_REF(send_intercept)), rand(INTERCEPT_TIME_LOW , INTERCEPT_TIME_HIGH))
- var/list/exclude_autotraitor_for = list(/datum/game_mode/extended, /datum/game_mode/imposter)
+ var/list/exclude_autotraitor_for = list(/datum/game_mode/extended)
if(!(type in exclude_autotraitor_for))
CreateFaction(/datum/faction/traitor/auto, num_players())
diff --git a/code/game/gamemodes/modes_declares/imposters.dm b/code/game/gamemodes/modes_declares/imposters.dm
deleted file mode 100644
index bc7230bf675..00000000000
--- a/code/game/gamemodes/modes_declares/imposters.dm
+++ /dev/null
@@ -1,11 +0,0 @@
-/datum/game_mode/imposter
- name = "Imposter"
- config_name = "imposter"
- probability = 5
- factions_allowed = list(/datum/faction/traitor/auto/imposter)
- minimum_player_count = 1
- minimum_players_bundles = 1
-
-/datum/game_mode/imposter/announce()
- to_chat(world, "Текущий режим игры - Самозванец!")
- to_chat(world, "Среди нас 1 предатель...")
diff --git a/code/game/gamemodes/roles/traitor.dm b/code/game/gamemodes/roles/traitor.dm
index 7d2478a9358..ea6717303b7 100644
--- a/code/game/gamemodes/roles/traitor.dm
+++ b/code/game/gamemodes/roles/traitor.dm
@@ -146,95 +146,3 @@
. = ..()
var/mob/living/carbon/human/H = antag.current
H.equip_or_collect(new /obj/item/device/encryptionkey/syndicate(antag.current), SLOT_R_STORE)
-
-/datum/role/traitor/imposter
- name = IMPOSTER
- id = IMPOSTER
- required_pref = ROLE_IMPOSTER
- //No restricts, everyone can be a imposter
- restricted_jobs = list()
- //Challenge
- give_uplink = FALSE
- telecrystals = 0
-
-/datum/role/traitor/imposter/add_one_objective(datum/mind/traitor)
- switch(rand(1, 100))
- //most imposters is just stealers
- if(1 to 70)
- var/datum/job/J = SSjob.GetJob(antag.assigned_role)
- //remove objectives for heads of staff to steal own items
- if(J && (J.flags & JOB_FLAG_HEAD_OF_STAFF))
- AppendObjective(/datum/objective/steal/non_heads_items, TRUE)
- else
- AppendObjective(/datum/objective/steal, TRUE)
- if(71 to 80)
- AppendObjective(/datum/objective/target/assassinate, TRUE)
- if(81 to 90)
- AppendObjective(/datum/objective/target/harm, TRUE)
- else
- AppendObjective(/datum/objective/target/dehead, TRUE)
-
-/datum/role/traitor/imposter/proc/add_killhead_objectives()
- var/list/heads = get_living_heads()
- for(var/datum/mind/head_mind in heads)
- if(antag == head_mind)
- continue
- var/datum/objective/target/assassinate/killhead_obj = AppendObjective(/datum/objective/target/assassinate, TRUE)
- if(killhead_obj)
- killhead_obj.target = head_mind
-
-/datum/role/traitor/imposter/create_traitor_objectives()
- if(issilicon(antag.current))
- //probability 10% for default silent assassin AI
- if(prob(10))
- log_mode("IMPOSTERS: silicon imposter ([antag.current]) has standart objectives")
- return ..()
- //probability 90% for peace-protecter AI
- AppendObjective(/datum/objective/target/protect, TRUE)
- AppendObjective(/datum/objective/target/protect, TRUE)
- AppendObjective(/datum/objective/survive)
- log_mode("IMPOSTERS: silicon imposter ([antag.current]) has protect objectives")
- //and 10% prob to hijack shuttle when has protect objective
- if(prob(10))
- AppendObjective(/datum/objective/block)
- log_mode("IMPOSTERS: silicon [antag.current] has hijack with protect objectives")
- return
- //5% prob to killhead objectives for non-silicon imposter
- if(prob(5))
- add_killhead_objectives()
- log_mode("IMPOSTERS: Non-silicon imposter ([antag.current]) has killhead objectives")
- return
- //default traitor objectives
- for(var/i in 1 to 3)
- add_one_objective()
- //Setup last objective
- switch(rand(1, 100))
- //Escape is more interesting
- if(1 to 90)
- AppendObjective(/datum/objective/escape)
- if(91 to 99)
- AppendObjective(/datum/objective/survive)
- else
- AppendObjective(/datum/objective/hijack)
- log_mode("IMPOSTERS: Non-silicon imposter ([antag.current]) has standart traitor objectives")
-
-/datum/role/traitor/imposter/OnPostSetup(laterole)
- . = ..()
- if(antag.current.isloyal() && iscarbon(antag.current))
- var/mob/living/carbon/C = antag.current
- C.fake_loyal_implant_replacement()
- // Free a unit from AI
- if(isrobot(antag.current))
- var/mob/living/silicon/robot/robot = antag.current
- robot.UnlinkSelf()
- robot.emagged = TRUE
-
-/mob/living/carbon/proc/fake_loyal_implant_replacement()
- for(var/obj/item/weapon/implant/mind_protect/loyalty/L in src)
- qdel(L)
- var/obj/item/weapon/implant/fake_loyal/F = new(src)
- F.inject(src, BP_CHEST)
-
-// Now dont show green/red text
-/datum/role/traitor/imposter/GetObjectiveDescription(datum/objective/objective)
- return "[objective.explanation_text]"
diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm
index d989a4a7c5f..0d6f8acf34f 100644
--- a/code/game/jobs/job/captain.dm
+++ b/code/game/jobs/job/captain.dm
@@ -16,7 +16,7 @@
minimal_player_ingame_minutes = 3900
outfit = /datum/outfit/job/captain
skillsets = list("Captain" = /datum/skillset/captain)
- flags = JOB_FLAG_COMMAND|JOB_FLAG_HEAD_OF_STAFF|JOB_FLAG_BLUESHIELD_PROTEC|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_COMMAND|JOB_FLAG_HEAD_OF_STAFF|JOB_FLAG_BLUESHIELD_PROTEC
// Non-human species can't be captains.
/datum/job/captain/special_species_check(datum/species/S)
@@ -89,4 +89,4 @@
*/
restricted_species = list(SKRELL, UNATHI, TAJARAN, DIONA, VOX, IPC)
skillsets = list("Blueshield Officer" = /datum/skillset/blueshield)
- flags = JOB_FLAG_COMMAND|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_COMMAND
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index 59c3060b57e..6a539957ab5 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -28,7 +28,7 @@
~Luduk
*/
restricted_species = list(SKRELL, UNATHI, TAJARAN, DIONA, VOX, IPC)
- flags = JOB_FLAG_SECURITY|JOB_FLAG_COMMAND|JOB_FLAG_HEAD_OF_STAFF|JOB_FLAG_BLUESHIELD_PROTEC|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_SECURITY|JOB_FLAG_COMMAND|JOB_FLAG_HEAD_OF_STAFF|JOB_FLAG_BLUESHIELD_PROTEC
/datum/job/warden
title = "Warden"
@@ -53,7 +53,7 @@
~Luduk
*/
restricted_species = list(TAJARAN, DIONA, VOX, IPC)
- flags = JOB_FLAG_SECURITY|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_SECURITY
/datum/job/warden/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(HAS_ROUND_ASPECT(ROUND_ASPECT_ELITE_SECURITY))
@@ -82,7 +82,7 @@
~Luduk
*/
restricted_species = list(DIONA, IPC)
- flags = JOB_FLAG_SECURITY|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_SECURITY
/datum/job/officer
title = "Security Officer"
@@ -107,7 +107,7 @@
~Luduk
*/
restricted_species = list(DIONA, TAJARAN, VOX, IPC)
- flags = JOB_FLAG_SECURITY|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_SECURITY
/datum/job/officer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(HAS_ROUND_ASPECT(ROUND_ASPECT_ELITE_SECURITY))
@@ -137,7 +137,7 @@
~Luduk
*/
restricted_species = list(UNATHI, DIONA)
- flags = JOB_FLAG_SECURITY|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_SECURITY
/datum/job/cadet
title = "Security Cadet"
@@ -162,4 +162,4 @@
~Luduk
*/
restricted_species = list(DIONA, TAJARAN, VOX, IPC)
- flags = JOB_FLAG_SECURITY|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_SECURITY
diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm
index db44293a015..a10df9c37f9 100644
--- a/code/game/jobs/job/silicon.dm
+++ b/code/game/jobs/job/silicon.dm
@@ -38,7 +38,7 @@
alt_titles = list("Android", "Robot")
minimal_player_ingame_minutes = 1800
give_loadout_items = FALSE
- flags = JOB_FLAG_NON_HUMAN|JOB_FLAG_IMPOSTER_PRIORITIZE
+ flags = JOB_FLAG_NON_HUMAN
/datum/job/cyborg/equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(!H) return 0
diff --git a/code/game/objects/items/weapons/implants/mindshield.dm b/code/game/objects/items/weapons/implants/mindshield.dm
index 43b39bd372f..6d064380e72 100644
--- a/code/game/objects/items/weapons/implants/mindshield.dm
+++ b/code/game/objects/items/weapons/implants/mindshield.dm
@@ -77,7 +77,7 @@
if(.)
if(M.mind)
var/cleared_role = FALSE
- var/list/remove_roles = list(TRAITOR, NUKE_OP, NUKE_OP_LEADER, HEADREV, GANGSTER_LEADER, IMPOSTER)
+ var/list/remove_roles = list(TRAITOR, NUKE_OP, NUKE_OP_LEADER, HEADREV, GANGSTER_LEADER)
for(var/role in remove_roles)
var/datum/role/R = M.mind.GetRole(role)
if(!R)
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index b0cce1af81d..fae314a63e0 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -23,9 +23,6 @@
return
if(!ishuman(target))
return
- if(isimposter(user))
- to_chat(user, "[src] not working, broken, try another time.")
- return
var/mob/living/carbon/human/H = target
user.visible_message("[user] flails their [src] at [H]")
if(HAS_TRAIT_FROM(H, TRAIT_VISUAL_OBEY, FAKE_IMPLANT_TRAIT))
diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm
index 23ff7087835..07e9cb93341 100644
--- a/code/modules/admin/DB_ban/functions.dm
+++ b/code/modules/admin/DB_ban/functions.dm
@@ -345,7 +345,7 @@
output += ""
for(var/j in nonhuman_positions)
output += ""
- for(var/j in list(ROLE_TRAITOR, ROLE_CHANGELING, ROLE_OPERATIVE, ROLE_REV, ROLE_RAIDER, ROLE_CULTIST, ROLE_WIZARD, ROLE_ERT, ROLE_SHADOWLING, ROLE_ABDUCTOR, ROLE_FAMILIES, ROLE_NINJA, ROLE_BLOB, ROLE_MALF, ROLE_DRONE, ROLE_GHOSTLY, ROLE_REPLICATOR, ROLE_IMPOSTER))
+ for(var/j in list(ROLE_TRAITOR, ROLE_CHANGELING, ROLE_OPERATIVE, ROLE_REV, ROLE_RAIDER, ROLE_CULTIST, ROLE_WIZARD, ROLE_ERT, ROLE_SHADOWLING, ROLE_ABDUCTOR, ROLE_FAMILIES, ROLE_NINJA, ROLE_BLOB, ROLE_MALF, ROLE_DRONE, ROLE_GHOSTLY, ROLE_REPLICATOR))
output += ""
output += ""
output += "Reason:
"
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 01ea1a37ddd..f5eaa144fb7 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -755,11 +755,6 @@
else
jobs += "