diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm
index 8842b23e433..0126fde5384 100644
--- a/code/__DEFINES/hud.dm
+++ b/code/__DEFINES/hud.dm
@@ -24,3 +24,4 @@
#define ANTAG_HUD_OPS 7
#define ANTAG_HUD_GANG_A 8
#define ANTAG_HUD_GANG_B 9
+#define ANTAG_HUD_WIZ 10
\ No newline at end of file
diff --git a/code/datums/hud.dm b/code/datums/hud.dm
index 63d2d719484..39d63400ddb 100644
--- a/code/datums/hud.dm
+++ b/code/datums/hud.dm
@@ -11,6 +11,7 @@ var/datum/atom_hud/huds = list( \
ANTAG_HUD_OPS = new/datum/atom_hud/antag(), \
ANTAG_HUD_GANG_A = new/datum/atom_hud/antag(), \
ANTAG_HUD_GANG_B = new/datum/atom_hud/antag(), \
+ ANTAG_HUD_WIZ = new/datum/atom_hud/antag(), \
)
/datum/atom_hud
diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm
index 1791a7319c7..f2a2ca65f29 100644
--- a/code/game/gamemodes/antag_spawner.dm
+++ b/code/game/gamemodes/antag_spawner.dm
@@ -58,6 +58,8 @@
src.used = 1
var/client/C = pick(candidates)
spawn_antag(C, get_turf(H.loc), href_list["school"])
+ if(H.mind)
+ ticker.mode.update_wiz_icons_added(H.mind)
else
H << "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later."
@@ -103,6 +105,7 @@
M.mind.objectives += new_objective
ticker.mode.traitors += M.mind
M.mind.special_role = "apprentice"
+ ticker.mode.update_wiz_icons_added(M.mind)
M << sound('sound/effects/magic.ogg')
/obj/item/weapon/antag_spawner/contract/equip_antag(mob/target as mob)
diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm
index d89de5b4530..a7e376e4857 100644
--- a/code/game/gamemodes/wizard/raginmages.dm
+++ b/code/game/gamemodes/wizard/raginmages.dm
@@ -2,6 +2,7 @@
name = "ragin' mages"
config_tag = "raginmages"
required_players = 20
+ use_huds = 1
var/max_mages = 0
var/making_mage = 0
var/mages_made = 1
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index 7fafb6f14f5..089e0cccf4c 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -9,7 +9,7 @@
required_enemies = 1
recommended_enemies = 1
pre_setup_before_jobs = 1
-
+ var/use_huds = 0
var/finished = 0
/datum/game_mode/wizard/announce()
@@ -40,6 +40,8 @@
equip_wizard(wizard.current)
name_wizard(wizard.current)
greet_wizard(wizard)
+ if(use_huds)
+ update_wiz_icons_added(wizard)
..()
return
@@ -275,3 +277,15 @@ Made a proc so this is not repeated 14 (or more) times.*/
return 0
else
return 1
+
+
+/datum/game_mode/proc/update_wiz_icons_added(datum/mind/wiz_mind)
+ var/datum/atom_hud/antag/wizhud = huds[ANTAG_HUD_WIZ]
+ wizhud.join_hud(wiz_mind.current)
+ set_antag_hud(wiz_mind.current, ((wiz_mind in wizards) ? "wizard" : "apprentice"))
+
+
+/datum/game_mode/proc/update_wiz_icons_removed(datum/mind/wiz_mind)
+ var/datum/atom_hud/antag/wizhud = huds[ANTAG_HUD_WIZ]
+ wizhud.leave_hud(wiz_mind.current)
+ set_antag_hud(wiz_mind.current, null)
diff --git a/code/modules/events/wizard/imposter.dm b/code/modules/events/wizard/imposter.dm
index d12f57e3d7c..1a55876b8e8 100644
--- a/code/modules/events/wizard/imposter.dm
+++ b/code/modules/events/wizard/imposter.dm
@@ -45,6 +45,7 @@
protect_objective.target = W.mind
protect_objective.explanation_text = "Protect [W.real_name], the wizard."
I.mind.objectives += protect_objective
+ ticker.mode.update_wiz_icons_added(I.mind)
I.attack_log += "\[[time_stamp()]\] Is an imposter!"
I << "You are an imposter! Trick and confuse the crew to misdirect malice from your handsome original!"
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index 12fe2bf8812..854b20608fc 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ