diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm
index 24305add63b..b802c6868f7 100644
--- a/code/controllers/subsystem/pai.dm
+++ b/code/controllers/subsystem/pai.dm
@@ -27,8 +27,6 @@ SUBSYSTEM_DEF(pai)
card.setPersonality(pai)
- SSticker.mode.update_cult_icons_removed(card.pai.mind)
-
candidates -= candidate
usr << browse(null, "window=findPai")
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index ebfcd885340..77b3098fdb3 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -266,7 +266,6 @@
/datum/mind/proc/remove_brother()
if(src in SSticker.mode.brothers)
remove_antag_datum(/datum/antagonist/brother)
- SSticker.mode.update_brother_icons_removed(src)
/datum/mind/proc/remove_nukeop()
var/datum/antagonist/nukeop/nuke = has_antag_datum(/datum/antagonist/nukeop,TRUE)
@@ -305,7 +304,6 @@
remove_wizard()
remove_cultist()
remove_rev()
- SSticker.mode.update_cult_icons_removed(src)
/datum/mind/proc/equip_traitor(employer = "The Syndicate", silent = FALSE, datum/antagonist/uplink_owner)
if(!current)
diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm
index 5405133e4f0..9867e43cc71 100644
--- a/code/game/gamemodes/brother/traitor_bro.dm
+++ b/code/game/gamemodes/brother/traitor_bro.dm
@@ -65,13 +65,3 @@
/datum/game_mode/traitor/bros/generate_report()
return "It's Syndicate recruiting season. Be alert for potential Syndicate infiltrators, but also watch out for disgruntled employees trying to defect. Unlike Nanotrasen, the Syndicate prides itself in teamwork and will only recruit pairs that share a brotherly trust."
-
-/datum/game_mode/proc/update_brother_icons_added(datum/mind/brother_mind)
- var/datum/atom_hud/antag/brotherhud = GLOB.huds[ANTAG_HUD_BROTHER]
- brotherhud.join_hud(brother_mind.current)
- set_antag_hud(brother_mind.current, "brother")
-
-/datum/game_mode/proc/update_brother_icons_removed(datum/mind/brother_mind)
- var/datum/atom_hud/antag/brotherhud = GLOB.huds[ANTAG_HUD_BROTHER]
- brotherhud.leave_hud(brother_mind.current)
- set_antag_hud(brother_mind.current, null)
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 069e048b894..5046543c33a 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -120,21 +120,11 @@
if(!cult_datum)
return FALSE
cult_datum.silent = silent
- cult_datum.on_removal()
+ cult_mind.remove_antag_datum(cult_datum)
if(stun)
cult_mind.current.Unconscious(100)
return TRUE
-/datum/game_mode/proc/update_cult_icons_added(datum/mind/cult_mind)
- var/datum/atom_hud/antag/culthud = GLOB.huds[ANTAG_HUD_CULT]
- culthud.join_hud(cult_mind.current)
- set_antag_hud(cult_mind.current, "cult")
-
-/datum/game_mode/proc/update_cult_icons_removed(datum/mind/cult_mind)
- var/datum/atom_hud/antag/culthud = GLOB.huds[ANTAG_HUD_CULT]
- culthud.leave_hud(cult_mind.current)
- set_antag_hud(cult_mind.current, null)
-
/datum/game_mode/cult/proc/check_cult_victory()
return main_cult.check_cult_victory()
diff --git a/code/game/gamemodes/devil/game_mode.dm b/code/game/gamemodes/devil/game_mode.dm
index 630e1fdcc66..f91b863483c 100644
--- a/code/game/gamemodes/devil/game_mode.dm
+++ b/code/game/gamemodes/devil/game_mode.dm
@@ -15,16 +15,6 @@
else
objective.find_target()
-/datum/game_mode/proc/update_devil_icons_added(datum/mind/devil_mind)
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_DEVIL]
- hud.join_hud(devil_mind.current)
- set_antag_hud(devil_mind.current, "devil")
-
-/datum/game_mode/proc/update_devil_icons_removed(datum/mind/devil_mind)
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_DEVIL]
- hud.leave_hud(devil_mind.current)
- set_antag_hud(devil_mind.current, null)
-
/datum/game_mode/proc/update_soulless_icons_added(datum/mind/soulless_mind)
var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_SOULLESS]
hud.join_hud(soulless_mind.current)
@@ -34,6 +24,3 @@
var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_SOULLESS]
hud.leave_hud(soulless_mind.current)
set_antag_hud(soulless_mind.current, null)
-
-/proc/isdevil(mob/living/M)
- return istype(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/devil)
diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm
index 4b862b51248..29dabfd3191 100644
--- a/code/modules/antagonists/_common/antag_datum.dm
+++ b/code/modules/antagonists/_common/antag_datum.dm
@@ -15,6 +15,8 @@ GLOBAL_LIST_EMPTY(antagonists)
var/antag_memory = ""//These will be removed with antag datum
var/antag_moodlet //typepath of moodlet that the mob will gain with their status
var/can_hijack = HIJACK_NEUTRAL //If these antags are alone on shuttle hijack happens.
+ var/antag_hud_type
+ var/antag_hud_name
//Antag panel properties
var/show_in_antagpanel = TRUE //This will hide adding this antag type in antag panel, use only for internal subtypes that shouldn't be added directly but still show if possessed by mind
@@ -59,6 +61,30 @@ GLOBAL_LIST_EMPTY(antagonists)
/datum/antagonist/proc/remove_innate_effects(mob/living/mob_override)
return
+// Adds the specified antag hud to the player. Usually called in an antag datum file
+/datum/antagonist/proc/add_antag_hud(antag_hud_type, antag_hud_name, mob/living/mob_override)
+ var/datum/atom_hud/antag/hud = GLOB.huds[antag_hud_type]
+ hud.join_hud(mob_override)
+ set_antag_hud(mob_override, antag_hud_name)
+
+
+// Removes the specified antag hud from the player. Usually called in an antag datum file
+/datum/antagonist/proc/remove_antag_hud(antag_hud_type, mob/living/mob_override)
+ var/datum/atom_hud/antag/hud = GLOB.huds[antag_hud_type]
+ hud.join_hud(mob_override)
+ set_antag_hud(mob_override, null)
+
+// Handles adding and removing the clumsy mutation from clown antags. Gets called in apply/remove_innate_effects
+/datum/antagonist/proc/handle_clown_mutation(mob/living/mob_override, message, removing = TRUE)
+ var/mob/living/carbon/human/H = mob_override
+ if(H && istype(H) && H.mind.assigned_role == "Clown")
+ if(removing) // They're a clown becoming an antag, remove clumsy
+ H.dna.remove_mutation(CLOWNMUT)
+ if(!silent && message)
+ to_chat(H, "[message]")
+ else
+ H.dna.add_mutation(CLOWNMUT) // We're removing their antag status, add back clumsy
+
//Assign default team and creates one for one of a kind team antagonists
/datum/antagonist/proc/create_team(datum/team/team)
return
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index 7b1fdd247a5..6fc13f0d44d 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -5,6 +5,8 @@
roundend_category = "abductors"
antagpanel_category = "Abductor"
job_rank = ROLE_ABDUCTOR
+ antag_hud_type = ANTAG_HUD_ABDUCTOR
+ antag_hud_name = "abductor"
show_in_antagpanel = FALSE //should only show subtypes
var/datum/team/abductor_team/team
var/sub_role
@@ -76,7 +78,7 @@
H.forceMove(LM.loc)
break
- update_abductor_icons_added(owner,"abductor")
+ add_antag_hud(antag_hud_type, antag_hud_name, owner.current)
/datum/antagonist/abductor/scientist/on_gain()
ADD_TRAIT(owner, TRAIT_ABDUCTOR_SCIENTIST_TRAINING, ABDUCTOR_ANTAGONIST)
@@ -162,6 +164,8 @@
name = "Abductee"
roundend_category = "abductees"
antagpanel_category = "Abductee"
+ antag_hud_type = ANTAG_HUD_ABDUCTOR
+ antag_hud_name = "abductee"
/datum/antagonist/abductee/on_gain()
give_objective()
@@ -181,10 +185,12 @@
objectives += O
/datum/antagonist/abductee/apply_innate_effects(mob/living/mob_override)
- update_abductor_icons_added(mob_override ? mob_override.mind : owner,"abductee")
+ var/mob/living/M = mob_override || owner.current
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
/datum/antagonist/abductee/remove_innate_effects(mob/living/mob_override)
- update_abductor_icons_removed(mob_override ? mob_override.mind : owner)
+ var/mob/living/M = mob_override || owner.current
+ remove_antag_hud(antag_hud_type, M)
// LANDMARKS
@@ -211,13 +217,3 @@
if(E.team_number == T.team_number)
return E.points >= target_amount
return FALSE
-
-/datum/antagonist/proc/update_abductor_icons_added(datum/mind/alien_mind,hud_type)
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR]
- hud.join_hud(alien_mind.current)
- set_antag_hud(alien_mind.current, hud_type)
-
-/datum/antagonist/proc/update_abductor_icons_removed(datum/mind/alien_mind)
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR]
- hud.leave_hud(alien_mind.current)
- set_antag_hud(alien_mind.current, null)
diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm
index 11a0ce974a9..b6c32899577 100644
--- a/code/modules/antagonists/brother/brother.dm
+++ b/code/modules/antagonists/brother/brother.dm
@@ -3,6 +3,8 @@
antagpanel_category = "Brother"
job_rank = ROLE_BROTHER
var/special_role = ROLE_BROTHER
+ antag_hud_type = ANTAG_HUD_BROTHER
+ antag_hud_name = "brother"
var/datum/team/brother_team/team
antag_moodlet = /datum/mood_event/focused
can_hijack = HIJACK_HIJACKER
@@ -31,6 +33,14 @@
owner.special_role = null
return ..()
+/datum/antagonist/brother/apply_innate_effects(mob/living/mob_override)
+ var/mob/living/M = mob_override || owner.current
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
+
+/datum/antagonist/brother/remove_innate_effects(mob/living/mob_override)
+ var/mob/living/M = mob_override || owner.current
+ remove_antag_hud(antag_hud_type, M)
+
/datum/antagonist/brother/antag_panel_data()
return "Conspirators : [get_brother_names()]]"
@@ -60,7 +70,6 @@
give_meeting_area()
/datum/antagonist/brother/proc/finalize_brother()
- SSticker.mode.update_brother_icons_added(owner)
owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE)
/datum/antagonist/brother/admin_add(datum/mind/new_owner,mob/admin)
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index c3479ab5a95..421f123cd47 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -8,6 +8,8 @@
antagpanel_category = "Changeling"
job_rank = ROLE_CHANGELING
antag_moodlet = /datum/mood_event/focused
+ antag_hud_type = ANTAG_HUD_CHANGELING
+ antag_hud_name = "changeling"
var/you_are_greet = TRUE
var/give_objectives = TRUE
@@ -88,7 +90,6 @@
if(team_mode)
forge_team_objectives()
forge_objectives()
- remove_clownmut()
. = ..()
/datum/antagonist/changeling/on_removal()
@@ -102,13 +103,6 @@
remove_changeling_powers()
. = ..()
-/datum/antagonist/changeling/proc/remove_clownmut()
- if (owner)
- var/mob/living/carbon/human/H = owner.current
- if(istype(H) && owner.assigned_role == "Clown")
- to_chat(H, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.")
- H.dna.remove_mutation(CLOWNMUT)
-
/datum/antagonist/changeling/proc/reset_properties()
changeling_speak = 0
chosen_sting = null
@@ -353,7 +347,7 @@
if(ishuman(C))
add_new_profile(C)
-/datum/antagonist/changeling/apply_innate_effects()
+/datum/antagonist/changeling/apply_innate_effects(mob/living/mob_override)
//Brains optional.
var/mob/living/carbon/C = owner.current
if(istype(C))
@@ -362,10 +356,14 @@
B.organ_flags &= ~ORGAN_VITAL
B.decoy_override = TRUE
RegisterSignal(C, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), .proc/stingAtom)
- update_changeling_icons_added()
+ var/mob/living/M = mob_override || owner.current
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
+ handle_clown_mutation(M, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.")
-/datum/antagonist/changeling/remove_innate_effects()
- update_changeling_icons_removed()
+/datum/antagonist/changeling/remove_innate_effects(mob/living/mob_override)
+ var/mob/living/M = mob_override || owner.current
+ remove_antag_hud(antag_hud_type, M)
+ handle_clown_mutation(M, removing = FALSE)
UnregisterSignal(owner.current, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON))
@@ -478,15 +476,6 @@
objectives += identity_theft
escape_objective_possible = FALSE
-/datum/antagonist/changeling/proc/update_changeling_icons_added()
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING]
- hud.join_hud(owner.current)
- set_antag_hud(owner.current, "changeling")
-
-/datum/antagonist/changeling/proc/update_changeling_icons_removed()
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING]
- hud.leave_hud(owner.current)
- set_antag_hud(owner.current, null)
/datum/antagonist/changeling/admin_add(datum/mind/new_owner,mob/admin)
. = ..()
diff --git a/code/modules/antagonists/creep/creep.dm b/code/modules/antagonists/creep/creep.dm
index 86af523201b..e903311bfcd 100644
--- a/code/modules/antagonists/creep/creep.dm
+++ b/code/modules/antagonists/creep/creep.dm
@@ -3,6 +3,8 @@
show_in_antagpanel = TRUE
antagpanel_category = "Other"
job_rank = ROLE_OBSESSED
+ antag_hud_type = ANTAG_HUD_OBSESSED
+ antag_hud_name = "obsessed"
show_name_in_check_antagonists = TRUE
roundend_category = "obsessed"
silent = TRUE //not actually silent, because greet will be called by the trauma anyway.
@@ -37,11 +39,11 @@
/datum/antagonist/obsessed/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_obsession_icons_added(M)
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
/datum/antagonist/obsessed/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_obsession_icons_removed(M)
+ remove_antag_hud(antag_hud_type, M)
/datum/antagonist/obsessed/proc/forge_objectives(var/datum/mind/obsessionmind)
var/list/objectives_left = list("spendtime", "polaroid", "hug")
@@ -273,13 +275,3 @@
explanation_text = "Steal [target.name]'s family heirloom, [steal_target] they cherish."
else
explanation_text = "Free Objective"
-
-/datum/antagonist/obsessed/proc/update_obsession_icons_added(var/mob/living/carbon/human/obsessed)
- var/datum/atom_hud/antag/creephud = GLOB.huds[ANTAG_HUD_OBSESSED]
- creephud.join_hud(obsessed)
- set_antag_hud(obsessed, "obsessed")
-
-/datum/antagonist/obsessed/proc/update_obsession_icons_removed(var/mob/living/carbon/human/obsessed)
- var/datum/atom_hud/antag/creephud = GLOB.huds[ANTAG_HUD_OBSESSED]
- creephud.leave_hud(obsessed)
- set_antag_hud(obsessed, null)
diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm
index 4216771e5c1..7f6beffad44 100644
--- a/code/modules/antagonists/cult/cult.dm
+++ b/code/modules/antagonists/cult/cult.dm
@@ -9,6 +9,8 @@
var/datum/action/innate/cult/mastervote/vote = new
var/datum/action/innate/cult/blood_magic/magic = new
job_rank = ROLE_CULTIST
+ antag_hud_type = ANTAG_HUD_CULT
+ antag_hud_name = "cult"
var/ignore_implant = FALSE
var/give_equipment = FALSE
var/datum/team/cult/cult_team
@@ -58,7 +60,6 @@
if(give_equipment)
equip_cultist(TRUE)
SSticker.mode.cult += owner // Only add after they've been given objectives
- SSticker.mode.update_cult_icons_added(owner)
current.log_message("has been converted to the cult of Nar'Sie!", LOG_ATTACK, color="#960000")
if(cult_team.blood_target && cult_team.blood_target_image && current.client)
@@ -69,9 +70,6 @@
var/mob/living/carbon/H = owner.current
if(!istype(H))
return
- if (owner.assigned_role == "Clown")
- to_chat(owner, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
- H.dna.remove_mutation(CLOWNMUT)
. += cult_give_item(/obj/item/melee/cultblade/dagger, H)
if(metal)
. += cult_give_item(/obj/item/stack/sheet/runed_metal/ten, H)
@@ -102,6 +100,8 @@
var/mob/living/current = owner.current
if(mob_override)
current = mob_override
+ add_antag_hud(antag_hud_type, antag_hud_name, current)
+ handle_clown_mutation(current, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
current.faction |= "cult"
current.grant_language(/datum/language/narsie)
if(!cult_team.cult_master)
@@ -120,6 +120,8 @@
var/mob/living/current = owner.current
if(mob_override)
current = mob_override
+ remove_antag_hud(antag_hud_type, current)
+ handle_clown_mutation(current, removing = FALSE)
current.faction -= "cult"
current.remove_language(/datum/language/narsie)
vote.Remove(current)
@@ -136,7 +138,6 @@
/datum/antagonist/cult/on_removal()
SSticker.mode.cult -= owner
- SSticker.mode.update_cult_icons_removed(owner)
if(!silent)
owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just reverted to [owner.current.p_their()] old faith!", null, null, null, owner.current)
to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.")
diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm
index ac6991829e9..e7a0f1b1416 100644
--- a/code/modules/antagonists/devil/devil.dm
+++ b/code/modules/antagonists/devil/devil.dm
@@ -89,6 +89,8 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
roundend_category = "devils"
antagpanel_category = "Devil"
job_rank = ROLE_DEVIL
+ antag_hud_type = ANTAG_HUD_DEVIL
+ antag_hud_name = "devil"
var/obligation
var/ban
var/bane
@@ -510,10 +512,6 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
var/laws = list("You may not use violence to coerce someone into selling their soul.", "You may not directly and knowingly physically harm a devil, other than yourself.", GLOB.lawlorify[LAW][ban], GLOB.lawlorify[LAW][obligation], "Accomplish your objectives at all costs.")
robot_devil.set_law_sixsixsix(laws)
sleep(10)
- if(owner.assigned_role == "Clown" && ishuman(owner.current))
- var/mob/living/carbon/human/S = owner.current
- to_chat(S, "Your infernal nature has allowed you to overcome your clownishness.")
- S.dna.remove_mutation(CLOWNMUT)
.=..()
/datum/antagonist/devil/on_removal()
@@ -522,6 +520,9 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
/datum/antagonist/devil/apply_innate_effects(mob/living/mob_override)
give_appropriate_spells()
+ var/mob/living/M = mob_override || owner.current
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
+ handle_clown_mutation(M, mob_override ? null : "Your infernal nature has allowed you to overcome your clownishness.")
owner.current.grant_all_languages(TRUE)
update_hud()
.=..()
@@ -531,6 +532,9 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
var/obj/effect/proc_holder/spell/S = X
if(is_type_in_typecache(S, devil_spells))
owner.RemoveSpell(S)
+ var/mob/living/M = mob_override || owner.current
+ remove_antag_hud(antag_hud_type, M)
+ handle_clown_mutation(M, removing = FALSE)
.=..()
/datum/antagonist/devil/proc/printdevilinfo()
diff --git a/code/modules/antagonists/devil/sintouched/sintouched.dm b/code/modules/antagonists/devil/sintouched/sintouched.dm
index 92f0896bb36..064e1fbaecd 100644
--- a/code/modules/antagonists/devil/sintouched/sintouched.dm
+++ b/code/modules/antagonists/devil/sintouched/sintouched.dm
@@ -10,6 +10,8 @@
name = "sintouched"
roundend_category = "sintouched"
antagpanel_category = "Devil"
+ antag_hud_type = ANTAG_HUD_SINTOUCHED
+ antag_hud_name = "sintouched"
var/sin
var/static/list/sins = list(SIN_ACEDIA,SIN_GLUTTONY,SIN_GREED,SIN_SLOTH,SIN_WRATH,SIN_ENVY,SIN_PRIDE)
@@ -57,22 +59,13 @@
. = ..()
/datum/antagonist/sintouched/apply_innate_effects(mob/living/mob_override)
- . = ..()
- add_hud()
+ var/mob/living/M = mob_override || owner.current
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
/datum/antagonist/sintouched/remove_innate_effects(mob/living/mob_override)
- remove_hud()
- . = ..()
+ var/mob/living/M = mob_override || owner.current
+ remove_antag_hud(antag_hud_type, M)
-/datum/antagonist/sintouched/proc/add_hud()
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_SINTOUCHED]
- hud.join_hud(owner.current)
- set_antag_hud(owner.current, "sintouched")
-
-/datum/antagonist/sintouched/proc/remove_hud()
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_SINTOUCHED]
- hud.leave_hud(owner.current)
- set_antag_hud(owner.current, null)
#undef SIN_ACEDIA
#undef SIN_ENVY
diff --git a/code/modules/antagonists/fugitive/fugitive.dm b/code/modules/antagonists/fugitive/fugitive.dm
index 7b5e00ec3bb..3111ae1e87d 100644
--- a/code/modules/antagonists/fugitive/fugitive.dm
+++ b/code/modules/antagonists/fugitive/fugitive.dm
@@ -5,17 +5,19 @@
silent = TRUE //greet called by the event
show_in_antagpanel = FALSE
prevent_roundtype_conversion = FALSE
+ antag_hud_type = ANTAG_HUD_FUGITIVE
+ antag_hud_name = "fugitive"
var/datum/team/fugitive/fugitive_team
var/is_captured = FALSE
var/backstory = "error"
/datum/antagonist/fugitive/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_fugitive_icons_added(M)
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
/datum/antagonist/fugitive/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_fugitive_icons_removed(M)
+ remove_antag_hud(antag_hud_type, M)
/datum/antagonist/fugitive/on_gain()
forge_objectives()
@@ -89,13 +91,3 @@
result += "[printplayer(antag.owner)]"
return result.Join("
")
-
-/datum/antagonist/fugitive/proc/update_fugitive_icons_added(var/mob/living/carbon/human/fugitive)
- var/datum/atom_hud/antag/fughud = GLOB.huds[ANTAG_HUD_FUGITIVE]
- fughud.join_hud(fugitive)
- set_antag_hud(fugitive, "fugitive")
-
-/datum/antagonist/fugitive/proc/update_fugitive_icons_removed(var/mob/living/carbon/human/fugitive)
- var/datum/atom_hud/antag/fughud = GLOB.huds[ANTAG_HUD_FUGITIVE]
- fughud.leave_hud(fugitive)
- set_antag_hud(fugitive, null)
diff --git a/code/modules/antagonists/fugitive/hunter.dm b/code/modules/antagonists/fugitive/hunter.dm
index fbdcd853676..090b243e531 100644
--- a/code/modules/antagonists/fugitive/hunter.dm
+++ b/code/modules/antagonists/fugitive/hunter.dm
@@ -5,16 +5,18 @@
silent = TRUE //greet called by the spawn
show_in_antagpanel = FALSE
prevent_roundtype_conversion = FALSE
+ antag_hud_type = ANTAG_HUD_FUGITIVE
+ antag_hud_name = "fugitive_hunter"
var/datum/team/fugitive_hunters/hunter_team
var/backstory = "error"
/datum/antagonist/fugitive_hunter/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_fugitive_icons_added(M)
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
/datum/antagonist/fugitive_hunter/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_fugitive_icons_removed(M)
+ remove_antag_hud(antag_hud_type, M)
/datum/antagonist/fugitive_hunter/on_gain()
forge_objectives()
@@ -168,13 +170,3 @@
result += ""
return result.Join("
")
-
-/datum/antagonist/fugitive_hunter/proc/update_fugitive_icons_added(var/mob/living/carbon/human/fugitive)
- var/datum/atom_hud/antag/fughud = GLOB.huds[ANTAG_HUD_FUGITIVE]
- fughud.join_hud(fugitive)
- set_antag_hud(fugitive, "fugitive_hunter")
-
-/datum/antagonist/fugitive_hunter/proc/update_fugitive_icons_removed(var/mob/living/carbon/human/fugitive)
- var/datum/atom_hud/antag/fughud = GLOB.huds[ANTAG_HUD_FUGITIVE]
- fughud.leave_hud(fugitive)
- set_antag_hud(fugitive, null)
diff --git a/code/modules/antagonists/ninja/ninja.dm b/code/modules/antagonists/ninja/ninja.dm
index d9a99b4eec9..bf609d14157 100644
--- a/code/modules/antagonists/ninja/ninja.dm
+++ b/code/modules/antagonists/ninja/ninja.dm
@@ -2,6 +2,8 @@
name = "Ninja"
antagpanel_category = "Ninja"
job_rank = ROLE_NINJA
+ antag_hud_type = ANTAG_HUD_NINJA
+ antag_hud_name = "ninja"
show_name_in_check_antagonists = TRUE
antag_moodlet = /datum/mood_event/focused
var/helping_station = FALSE
@@ -15,11 +17,11 @@
/datum/antagonist/ninja/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_ninja_icons_added(M)
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
/datum/antagonist/ninja/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_ninja_icons_removed(M)
+ remove_antag_hud(antag_hud_type, M)
/datum/antagonist/ninja/proc/equip_space_ninja(mob/living/carbon/human/H = owner.current)
return H.equipOutfit(/datum/outfit/ninja)
@@ -148,13 +150,3 @@
new_owner.add_antag_datum(src)
message_admins("[key_name_admin(admin)] has [adj] ninja'ed [key_name_admin(new_owner)].")
log_admin("[key_name(admin)] has [adj] ninja'ed [key_name(new_owner)].")
-
-/datum/antagonist/ninja/proc/update_ninja_icons_added(var/mob/living/carbon/human/ninja)
- var/datum/atom_hud/antag/ninjahud = GLOB.huds[ANTAG_HUD_NINJA]
- ninjahud.join_hud(ninja)
- set_antag_hud(ninja, "ninja")
-
-/datum/antagonist/ninja/proc/update_ninja_icons_removed(var/mob/living/carbon/human/ninja)
- var/datum/atom_hud/antag/ninjahud = GLOB.huds[ANTAG_HUD_NINJA]
- ninjahud.leave_hud(ninja)
- set_antag_hud(ninja, null)
diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm
index 79363f32b50..db541ccbeb5 100644
--- a/code/modules/antagonists/nukeop/nukeop.dm
+++ b/code/modules/antagonists/nukeop/nukeop.dm
@@ -3,6 +3,8 @@
roundend_category = "syndicate operatives" //just in case
antagpanel_category = "NukeOp"
job_rank = ROLE_OPERATIVE
+ antag_hud_type = ANTAG_HUD_OPS
+ antag_hud_name = "synd"
antag_moodlet = /datum/mood_event/focused
var/datum/team/nuclear/nuke_team
var/always_new_team = FALSE //If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team.
@@ -10,24 +12,15 @@
var/nukeop_outfit = /datum/outfit/syndicate
can_hijack = HIJACK_HIJACKER //Alternative way to wipe out the station.
-/datum/antagonist/nukeop/proc/update_synd_icons_added(mob/living/M)
- var/datum/atom_hud/antag/opshud = GLOB.huds[ANTAG_HUD_OPS]
- opshud.join_hud(M)
- set_antag_hud(M, "synd")
-
-/datum/antagonist/nukeop/proc/update_synd_icons_removed(mob/living/M)
- var/datum/atom_hud/antag/opshud = GLOB.huds[ANTAG_HUD_OPS]
- opshud.leave_hud(M)
- set_antag_hud(M, null)
/datum/antagonist/nukeop/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_synd_icons_added(M)
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
ADD_TRAIT(owner, TRAIT_DISK_VERIFIER, NUKEOP_TRAIT)
/datum/antagonist/nukeop/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_synd_icons_removed(M)
+ remove_antag_hud(antag_hud_type, M)
REMOVE_TRAIT(owner, TRAIT_DISK_VERIFIER, NUKEOP_TRAIT)
/datum/antagonist/nukeop/proc/equip_op()
diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index 54942fb25cd..86e551264b7 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -7,7 +7,8 @@
antagpanel_category = "Revolution"
job_rank = ROLE_REV
antag_moodlet = /datum/mood_event/revolution
- var/hud_type = "rev"
+ antag_hud_type = ANTAG_HUD_REV
+ antag_hud_name = "rev"
var/datum/team/revolution/rev_team
/datum/antagonist/rev/can_be_owned(datum/mind/new_owner)
@@ -22,11 +23,13 @@
/datum/antagonist/rev/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_rev_icons_added(M)
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
+ handle_clown_mutation(M, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
/datum/antagonist/rev/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_rev_icons_removed(M)
+ remove_antag_hud(antag_hud_type, M)
+ handle_clown_mutation(M, removing = FALSE)
/datum/antagonist/rev/proc/equip_rev()
return
@@ -147,7 +150,7 @@
/datum/antagonist/rev/head
name = "Head Revolutionary"
- hud_type = "rev_head"
+ antag_hud_name = "rev_head"
var/remove_clumsy = FALSE
var/give_flash = FALSE
var/give_hud = TRUE
@@ -155,16 +158,6 @@
/datum/antagonist/rev/head/antag_listing_name()
return ..() + "(Leader)"
-/datum/antagonist/rev/proc/update_rev_icons_added(mob/living/M)
- var/datum/atom_hud/antag/revhud = GLOB.huds[ANTAG_HUD_REV]
- revhud.join_hud(M)
- set_antag_hud(M,hud_type)
-
-/datum/antagonist/rev/proc/update_rev_icons_removed(mob/living/M)
- var/datum/atom_hud/antag/revhud = GLOB.huds[ANTAG_HUD_REV]
- revhud.leave_hud(M)
- set_antag_hud(M, null)
-
/datum/antagonist/rev/proc/can_be_converted(mob/living/candidate)
if(!candidate.mind)
return FALSE
@@ -238,10 +231,6 @@
if(!ishuman(H) && !ismonkey(H))
return
- if(remove_clumsy && owner.assigned_role == "Clown")
- to_chat(owner, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
- H.dna.remove_mutation(CLOWNMUT)
-
if(give_flash)
var/obj/item/assembly/flash/T = new(H)
var/list/slots = list (
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index 91d03692ae4..49fc67eeaae 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -7,6 +7,8 @@
antagpanel_category = "Traitor"
job_rank = ROLE_TRAITOR
antag_moodlet = /datum/mood_event/focused
+ antag_hud_type = ANTAG_HUD_TRAITOR
+ antag_hud_name = "traitor"
var/special_role = ROLE_TRAITOR
var/employer = "The Syndicate"
var/give_objectives = TRUE
@@ -26,21 +28,7 @@
forge_traitor_objectives()
finalize_traitor()
RegisterSignal(owner.current, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
- ..()
-
-/datum/antagonist/traitor/apply_innate_effects()
- if(owner.assigned_role == "Clown")
- var/mob/living/carbon/human/traitor_mob = owner.current
- if(traitor_mob && istype(traitor_mob))
- if(!silent)
- to_chat(traitor_mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
- traitor_mob.dna.remove_mutation(CLOWNMUT)
-
-/datum/antagonist/traitor/remove_innate_effects()
- if(owner.assigned_role == "Clown")
- var/mob/living/carbon/human/traitor_mob = owner.current
- if(traitor_mob && istype(traitor_mob))
- traitor_mob.dna.add_mutation(CLOWNMUT)
+ return ..()
/datum/antagonist/traitor/on_removal()
//Remove malf powers.
@@ -55,7 +43,7 @@
if(!silent && owner.current)
to_chat(owner.current,"You are no longer the [special_role]!")
owner.special_role = null
- ..()
+ return ..()
/datum/antagonist/traitor/proc/handle_hearing(datum/source, list/hearing_args)
var/message = hearing_args[HEARING_MESSAGE]
@@ -210,16 +198,6 @@
if(should_give_codewords)
give_codewords()
-/datum/antagonist/traitor/proc/update_traitor_icons_added(datum/mind/traitor_mind)
- var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR]
- traitorhud.join_hud(owner.current)
- set_antag_hud(owner.current, "traitor")
-
-/datum/antagonist/traitor/proc/update_traitor_icons_removed(datum/mind/traitor_mind)
- var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR]
- traitorhud.leave_hud(owner.current)
- set_antag_hud(owner.current, null)
-
/datum/antagonist/traitor/proc/finalize_traitor()
switch(traitor_kind)
if(TRAITOR_AI)
@@ -233,15 +211,19 @@
/datum/antagonist/traitor/apply_innate_effects(mob/living/mob_override)
. = ..()
- update_traitor_icons_added()
- var/mob/living/silicon/ai/A = mob_override || owner.current
+ var/mob/living/M = mob_override || owner.current
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
+ handle_clown_mutation(M, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
+ var/mob/living/silicon/ai/A = M
if(istype(A) && traitor_kind == TRAITOR_AI)
A.hack_software = TRUE
/datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override)
. = ..()
- update_traitor_icons_removed()
- var/mob/living/silicon/ai/A = mob_override || owner.current
+ var/mob/living/M = mob_override || owner.current
+ remove_antag_hud(antag_hud_type, M)
+ handle_clown_mutation(M, removing = FALSE)
+ var/mob/living/silicon/ai/A = M
if(istype(A) && traitor_kind == TRAITOR_AI)
A.hack_software = FALSE
diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm
index 25653fa774c..80ceeef8d67 100644
--- a/code/modules/antagonists/wizard/equipment/soulstone.dm
+++ b/code/modules/antagonists/wizard/equipment/soulstone.dm
@@ -79,7 +79,7 @@
return
if(!ishuman(M))//If target is not a human.
return ..()
- if(!M.mind.hasSoul || isdevil(M))
+ if(!M.mind.hasSoul || is_devil(M))
to_chat(user, "This... thing has no soul! It's filled with evil!")
return
if(iscultist(M))
@@ -249,8 +249,7 @@
makeNewConstruct(/mob/living/simple_animal/hostile/construct/builder/noncult, A, user, 0, T.loc)
for(var/datum/mind/B in SSticker.mode.cult)
if(B == A.mind)
- SSticker.mode.cult -= A.mind
- SSticker.mode.update_cult_icons_removed(A.mind)
+ SSticker.mode.remove_cultist(A.mind)
qdel(T)
qdel(src)
else
diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm
index ced8fbf69e5..4cf8ea30495 100644
--- a/code/modules/antagonists/wizard/wizard.dm
+++ b/code/modules/antagonists/wizard/wizard.dm
@@ -3,11 +3,12 @@
roundend_category = "wizards/witches"
antagpanel_category = "Wizard"
job_rank = ROLE_WIZARD
+ antag_hud_type = ANTAG_HUD_WIZ
+ antag_hud_name = "wizard"
antag_moodlet = /datum/mood_event/focused
var/give_objectives = TRUE
var/strip = TRUE //strip before equipping
var/allow_rename = TRUE
- var/hud_version = "wizard"
var/datum/team/wizard/wiz_team //Only created if wizard summons apprentices
var/move_to_lair = TRUE
var/outfit_type = /datum/outfit/wizard
@@ -49,7 +50,7 @@
wiz_team = new(owner)
wiz_team.name = "[owner.current.real_name] team"
wiz_team.master_wizard = src
- update_wiz_icons_added(owner.current)
+ add_antag_hud(antag_hud_type, antag_hud_name, owner.current)
/datum/antagonist/wizard/proc/send_to_lair()
if(!owner || !owner.current)
@@ -152,12 +153,12 @@
/datum/antagonist/wizard/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_wiz_icons_added(M, wiz_team ? TRUE : FALSE) //Don't bother showing the icon if you're solo wizard
+ add_antag_hud(antag_hud_type, antag_hud_name, M)
M.faction |= ROLE_WIZARD
/datum/antagonist/wizard/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
- update_wiz_icons_removed(M)
+ remove_antag_hud(antag_hud_type, M)
M.faction -= ROLE_WIZARD
@@ -170,7 +171,7 @@
/datum/antagonist/wizard/apprentice
name = "Wizard Apprentice"
- hud_version = "apprentice"
+ antag_hud_name = "apprentice"
var/datum/mind/master
var/school = APPRENTICE_DESTRUCTION
outfit_type = /datum/outfit/wizard/apprentice
@@ -252,17 +253,6 @@
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(null))
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null))
-/datum/antagonist/wizard/proc/update_wiz_icons_added(mob/living/wiz,join = TRUE)
- var/datum/atom_hud/antag/wizhud = GLOB.huds[ANTAG_HUD_WIZ]
- wizhud.join_hud(wiz)
- set_antag_hud(wiz, hud_version)
-
-/datum/antagonist/wizard/proc/update_wiz_icons_removed(mob/living/wiz)
- var/datum/atom_hud/antag/wizhud = GLOB.huds[ANTAG_HUD_WIZ]
- wizhud.leave_hud(wiz)
- set_antag_hud(wiz, null)
-
-
/datum/antagonist/wizard/academy
name = "Academy Teacher"
outfit_type = /datum/outfit/wizard/academy