From 6f0a50381c8eb2dcb99f0fdb8ebbcd0a884f6041 Mon Sep 17 00:00:00 2001 From: Incoming Date: Tue, 13 Jan 2015 00:14:05 -0500 Subject: [PATCH] Adds an antag hud system for wizards. The huds won't be activated when there's just one wizard, but when another magic user is brought in the huds will appear for both of them to allow for easy identification in the face of rampant mindswaps and/or identity shinanagans and/or getting turned into a cow by a staff of change. The huds are on by default in ragin' mages. --- code/__DEFINES/hud.dm | 1 + code/datums/hud.dm | 1 + code/game/gamemodes/antag_spawner.dm | 3 +++ code/game/gamemodes/wizard/raginmages.dm | 1 + code/game/gamemodes/wizard/wizard.dm | 16 +++++++++++++++- code/modules/events/wizard/imposter.dm | 1 + icons/mob/hud.dmi | Bin 3498 -> 3653 bytes 7 files changed, 22 insertions(+), 1 deletion(-) 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 12fe2bf881204d81369768395e7c7f0a089915d8..854b20608fcfc6579984c6c89bf284c94f6d0387 100644 GIT binary patch delta 3557 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 delta 3394 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 JN-nxW{{wbEDg*!k