[MIRROR] Antag HUDs will now animate if you have multiple antagonists, and will no longer clear on deconversion [MDB IGNORE] (#9397)

* Antag HUDs will now animate if you have multiple antagonists, and will no longer clear on deconversion (#62718)

About The Pull Request

This is for the admin combo HUD. Players shouldn't notice any difference (except at roundend).
2021-11-09T16-27-26.mp4

Removes the ability to set custom antag HUDs for custom admin teams for complexity, though if there's a large enough demand I can try to bring it back in another PR.

Fixes #59767

TM candidate only so that I can make sure antags aren't getting leaked to people who shouldn't see them.
Changelog

cl
fix: Antag HUDs will no longer clear on deconversion if the player was another antag.
qol: Antag HUDs (as seen by admins and at the round end) will now animate between all antagonists, rather than just choosing the most latest.
/cl

* Antag HUDs will now animate if you have multiple antagonists, and will no longer clear on deconversion

* Update sol_fed.dm

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
This commit is contained in:
SkyratBot
2021-11-14 23:27:01 +00:00
committed by GitHub
co-authored by Mothblocks Gandalf
parent 74d6eea9b5
commit 2e0e84a6dd
37 changed files with 152 additions and 349 deletions
-18
View File
@@ -65,24 +65,6 @@
#define DATA_HUD_AI_DETECT 9
#define DATA_HUD_FAN 10
//antag HUD defines
#define ANTAG_HUD_CULT 11
#define ANTAG_HUD_REV 12
#define ANTAG_HUD_OPS 13
#define ANTAG_HUD_WIZ 14
#define ANTAG_HUD_SHADOW 15
#define ANTAG_HUD_TRAITOR 16
#define ANTAG_HUD_NINJA 17
#define ANTAG_HUD_CHANGELING 18
#define ANTAG_HUD_ABDUCTOR 19
#define ANTAG_HUD_BROTHER 20
#define ANTAG_HUD_OBSESSED 21
#define ANTAG_HUD_FUGITIVE 22
#define ANTAG_HUD_GANGSTER 23
#define ANTAG_HUD_SPACECOP 24
#define ANTAG_HUD_HERETIC 25
#define ANTAG_HUD_BRAINWASHED 26
// Notification action types
#define NOTIFY_JUMP "jump"
#define NOTIFY_ATTACK "attack"
+7
View File
@@ -1584,3 +1584,10 @@
/// Called when a techweb design is removed (datum/design/removed_design, custom)
#define COMSIG_TECHWEB_REMOVE_DESIGN "techweb_remove_design"
// Antagonist signals
/// Called on the mind when an antagonist is being gained, after the antagonist list has updated (datum/antagonist/antagonist)
#define COMSIG_ANTAGONIST_GAINED "antagonist_gained"
/// Called on the mind when an antagonist is being removed, after the antagonist list has updated (datum/antagonist/antagonist)
#define COMSIG_ANTAGONIST_REMOVED "antagonist_removed"
+3 -4
View File
@@ -230,10 +230,9 @@
CHECK_TICK
// Add AntagHUD to everyone, see who was really evil the whole time!
for(var/datum/atom_hud/antag/H in GLOB.huds)
for(var/m in GLOB.player_list)
var/mob/M = m
H.add_hud_to(M)
for(var/datum/atom_hud/alternate_appearance/basic/antagonist_hud/antagonist_hud in GLOB.huds)
for(var/mob/player as anything in GLOB.player_list)
antagonist_hud.add_hud_to(player)
CHECK_TICK
@@ -0,0 +1,4 @@
PROCESSING_SUBSYSTEM_DEF(antag_hud)
name = "Antag HUDs"
flags = SS_NO_INIT
wait = 2 SECONDS
+1 -17
View File
@@ -14,23 +14,7 @@ GLOBAL_LIST_INIT(huds, list(
DATA_HUD_SENTIENT_DISEASE = new/datum/atom_hud/sentient_disease(),
DATA_HUD_AI_DETECT = new/datum/atom_hud/ai_detector(),
DATA_HUD_FAN = new/datum/atom_hud/data/human/fan_hud(),
ANTAG_HUD_CULT = new/datum/atom_hud/antag(),
ANTAG_HUD_REV = new/datum/atom_hud/antag(),
ANTAG_HUD_OPS = new/datum/atom_hud/antag(),
ANTAG_HUD_WIZ = new/datum/atom_hud/antag(),
ANTAG_HUD_SHADOW = new/datum/atom_hud/antag(),
ANTAG_HUD_TRAITOR = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_NINJA = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_CHANGELING = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_OBSESSED = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag(),
ANTAG_HUD_GANGSTER = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_SPACECOP = new/datum/atom_hud/antag(),
ANTAG_HUD_HERETIC = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_BRAINWASHED = new/datum/atom_hud/antag/hidden()
))
))
/datum/atom_hud
var/list/atom/hudatoms = list() //list of all atoms which display this hud
+4 -4
View File
@@ -53,7 +53,7 @@
var/miming = FALSE // Mime's vow of silence
var/list/antag_datums
var/antag_hud_icon_state = null //this mind's ANTAG_HUD should have this icon_state
var/datum/atom_hud/antag/antag_hud = null //this mind's antag HUD
var/datum/atom_hud/alternate_appearance/basic/antagonist_hud/antag_hud = null //this mind's antag HUD
var/holy_role = NONE //is this person a chaplain or admin role allowed to use bibles, Any rank besides 'NONE' allows for this.
var/mob/living/enslaved_to //If this mind's master is another mob (i.e. adamantine golems)
@@ -104,6 +104,7 @@
/datum/mind/Destroy()
SSticker.minds -= src
QDEL_NULL(antag_hud)
QDEL_LIST(memories)
QDEL_NULL(memory_panel)
QDEL_LIST(antag_datums)
@@ -157,7 +158,6 @@
if(new_character.mind) //disassociate any mind currently in our new body's mind variable
new_character.mind.set_current(null)
var/datum/atom_hud/antag/hud_to_transfer = antag_hud//we need this because leave_hud() will clear this list
var/mob/living/old_current = current
if(current)
current.transfer_observers_to(new_character) //transfer anyone observing the old character to the new one
@@ -167,14 +167,15 @@
add_verb(new_character, /mob/proc/view_ambitions)
//SKYRAT CHANGE ADDITION END
set_current(new_character) //associate ourself with our new body
QDEL_NULL(antag_hud)
new_character.mind = src //and associate our new body with ourself
antag_hud = new_character.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/antagonist_hud, "combo_hud", src)
for(var/a in antag_datums) //Makes sure all antag datums effects are applied in the new body
var/datum/antagonist/A = a
A.on_body_transfer(old_current, current)
if(iscarbon(new_character))
var/mob/living/carbon/C = new_character
C.last_mind = src
transfer_antag_huds(hud_to_transfer) //inherit the antag HUD
transfer_actions(new_character)
transfer_martial_arts(new_character)
RegisterSignal(new_character, COMSIG_LIVING_DEATH, .proc/set_death_time)
@@ -879,7 +880,6 @@
mind.name = real_name
mind.set_current(src)
/mob/living/carbon/mind_initialize()
..()
last_mind = mind
+10 -42
View File
@@ -28,6 +28,10 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
GLOB.active_alternate_appearances += src
appearance_key = key
for(var/mob in GLOB.player_list)
if(mobShouldSee(mob))
add_hud_to(mob)
/datum/atom_hud/alternate_appearance/Destroy()
GLOB.active_alternate_appearances -= src
return ..()
@@ -56,14 +60,14 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
//an alternate appearance that attaches a single image to a single atom
/datum/atom_hud/alternate_appearance/basic
var/atom/target
var/image/theImage
var/image/image
var/add_ghost_version = FALSE
var/ghost_appearance
/datum/atom_hud/alternate_appearance/basic/New(key, image/I, options = AA_TARGET_SEE_APPEARANCE)
..()
transfer_overlays = options & AA_MATCH_TARGET_OVERLAYS
theImage = I
image = I
target = I.loc
if(transfer_overlays)
I.copy_overlays(target)
@@ -80,12 +84,14 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
/datum/atom_hud/alternate_appearance/basic/Destroy()
. = ..()
QDEL_NULL(image)
target = null
if(ghost_appearance)
QDEL_NULL(ghost_appearance)
/datum/atom_hud/alternate_appearance/basic/add_to_hud(atom/A)
LAZYINITLIST(A.hud_list)
A.hud_list[appearance_key] = theImage
A.hud_list[appearance_key] = image
. = ..()
/datum/atom_hud/alternate_appearance/basic/remove_from_hud(atom/A)
@@ -95,28 +101,16 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
qdel(src)
/datum/atom_hud/alternate_appearance/basic/copy_overlays(atom/other, cut_old)
theImage.copy_overlays(other, cut_old)
image.copy_overlays(other, cut_old)
/datum/atom_hud/alternate_appearance/basic/everyone
add_ghost_version = TRUE
/datum/atom_hud/alternate_appearance/basic/everyone/New()
..()
for(var/mob in GLOB.mob_list)
if(mobShouldSee(mob))
add_hud_to(mob)
/datum/atom_hud/alternate_appearance/basic/everyone/mobShouldSee(mob/M)
return !isdead(M)
/datum/atom_hud/alternate_appearance/basic/silicons
/datum/atom_hud/alternate_appearance/basic/silicons/New()
..()
for(var/mob in GLOB.silicon_mobs)
if(mobShouldSee(mob))
add_hud_to(mob)
/datum/atom_hud/alternate_appearance/basic/silicons/mobShouldSee(mob/M)
if(issilicon(M))
return TRUE
@@ -125,23 +119,11 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
/datum/atom_hud/alternate_appearance/basic/observers
add_ghost_version = FALSE //just in case, to prevent infinite loops
/datum/atom_hud/alternate_appearance/basic/observers/New()
..()
for(var/mob in GLOB.dead_mob_list)
if(mobShouldSee(mob))
add_hud_to(mob)
/datum/atom_hud/alternate_appearance/basic/observers/mobShouldSee(mob/M)
return isobserver(M)
/datum/atom_hud/alternate_appearance/basic/noncult
/datum/atom_hud/alternate_appearance/basic/noncult/New()
..()
for(var/mob in GLOB.player_list)
if(mobShouldSee(mob))
add_hud_to(mob)
/datum/atom_hud/alternate_appearance/basic/noncult/mobShouldSee(mob/M)
if(!IS_CULTIST(M))
return TRUE
@@ -149,12 +131,6 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
/datum/atom_hud/alternate_appearance/basic/cult
/datum/atom_hud/alternate_appearance/basic/cult/New()
..()
for(var/mob in GLOB.player_list)
if(mobShouldSee(mob))
add_hud_to(mob)
/datum/atom_hud/alternate_appearance/basic/cult/mobShouldSee(mob/M)
if(IS_CULTIST(M))
return TRUE
@@ -162,12 +138,6 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
/datum/atom_hud/alternate_appearance/basic/blessed_aware
/datum/atom_hud/alternate_appearance/basic/blessed_aware/New()
..()
for(var/mob in GLOB.mob_list)
if(mobShouldSee(mob))
add_hud_to(mob)
/datum/atom_hud/alternate_appearance/basic/blessed_aware/mobShouldSee(mob/M)
if(M.mind?.holy_role)
return TRUE
@@ -188,7 +158,5 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
/datum/atom_hud/alternate_appearance/basic/one_person/New(key, image/I, mob/living/M)
..(key, I, FALSE)
seer = M
add_hud_to(seer)
/datum/atom_hud/alternate_appearance/basic/food_demands
-15
View File
@@ -65,17 +65,6 @@
/obj/machinery/computer/arena/Initialize(mapload, obj/item/circuitboard/C)
. = ..()
LoadDefaultArenas()
GenerateAntagHuds()
/obj/machinery/computer/arena/proc/GenerateAntagHuds()
for(var/team in teams)
var/datum/atom_hud/antag/teamhud = team_huds[team]
if(!teamhud) //These will be shared between arenas because this stuff is expensive and cross arena fighting is not a thing anyway
teamhud = new
teamhud.icon_color = team_colors[team]
GLOB.huds += teamhud
team_huds[team] = teamhud
team_hud_index[team] = length(GLOB.huds)
/**
* Loads the arenas from config directory.
@@ -194,10 +183,6 @@
M.faction += team //In case anyone wants to add team based stuff to arena special effects
M.key = ckey
var/datum/atom_hud/antag/team_hud = team_huds[team]
team_hud.join_hud(M)
set_antag_hud(M,"arena",team_hud_index[team])
/obj/machinery/computer/arena/proc/change_outfit(mob/user,team)
outfits[team] = user.client.robust_dress_shop()
+1 -1
View File
@@ -739,7 +739,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
if(!holder)
return
if(has_antag_hud())
if(combo_hud_enabled)
toggle_combo_hud()
holder.deactivate()
+1 -37
View File
@@ -35,7 +35,7 @@
var/team_name = stripped_input(user,"Team name ?")
if(!team_name)
return
var/datum/team/custom/T = new()
var/datum/team/T = new()
T.name = team_name
message_admins("[key_name_admin(usr)] created new [name] antagonist team.")
@@ -145,39 +145,3 @@
/datum/team/proc/get_admin_commands()
return list()
//Custom team subtype created by the panel, allow forcing hud for the team for now
/datum/team/custom
var/datum/atom_hud/antag/custom_hud
var/custom_hud_state = "traitor"
/datum/team/custom/add_member(datum/mind/new_member)
. = ..()
if(custom_hud)
custom_hud.join_hud(new_member.current)
set_antag_hud(new_member.current,custom_hud_state)
/datum/team/custom/remove_member(datum/mind/member)
. = ..()
if(custom_hud)
custom_hud.leave_hud(member.current)
/datum/team/custom/get_admin_commands()
. = ..()
.["Force HUD"] = CALLBACK(src,.proc/admin_force_hud)
//This is here if you want admin created teams to tell each other apart easily.
/datum/team/custom/proc/admin_force_hud(mob/user)
var/list/possible_icons = icon_states('icons/mob/hud.dmi')
var/new_hud_state = input(user,"Choose hud icon state","Custom HUD","traitor") as null|anything in sort_list(possible_icons)
if(!new_hud_state)
return
//suppose could ask for color too
custom_hud_state = new_hud_state
custom_hud = new
custom_hud.self_visible = TRUE
GLOB.huds += custom_hud //Make it show in admin hud
for(var/datum/mind/M in members)
custom_hud.join_hud(M.current)
set_antag_hud(M.current,custom_hud_state)
+9 -13
View File
@@ -401,30 +401,26 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_ADMIN))
return
var/adding_hud = !has_antag_hud()
combo_hud_enabled = !combo_hud_enabled
for(var/hudtype in list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED)) // add data huds
var/datum/atom_hud/H = GLOB.huds[hudtype]
(adding_hud) ? H.add_hud_to(usr) : H.remove_hud_from(usr)
for(var/datum/atom_hud/antag/H in GLOB.huds) // add antag huds
(adding_hud) ? H.add_hud_to(usr) : H.remove_hud_from(usr)
(combo_hud_enabled) ? H.add_hud_to(usr) : H.remove_hud_from(usr)
for(var/datum/atom_hud/alternate_appearance/basic/antagonist_hud/H in GLOB.active_alternate_appearances) // add antag huds
(combo_hud_enabled) ? H.add_hud_to(usr) : H.remove_hud_from(usr)
if(prefs.toggles & COMBOHUD_LIGHTING)
if(adding_hud)
if(combo_hud_enabled)
mob.lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE
else
mob.lighting_alpha = initial(mob.lighting_alpha)
mob.update_sight()
to_chat(usr, "You toggled your admin combo HUD [adding_hud ? "ON" : "OFF"].", confidential = TRUE)
message_admins("[key_name_admin(usr)] toggled their admin combo HUD [adding_hud ? "ON" : "OFF"].")
log_admin("[key_name(usr)] toggled their admin combo HUD [adding_hud ? "ON" : "OFF"].")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Combo HUD", "[adding_hud ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/has_antag_hud()
var/datum/atom_hud/A = GLOB.huds[ANTAG_HUD_TRAITOR]
return A.hudusers[mob]
to_chat(usr, "You toggled your admin combo HUD [combo_hud_enabled ? "ON" : "OFF"].", confidential = TRUE)
message_admins("[key_name_admin(usr)] toggled their admin combo HUD [combo_hud_enabled ? "ON" : "OFF"].")
log_admin("[key_name(usr)] toggled their admin combo HUD [combo_hud_enabled ? "ON" : "OFF"].")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Combo HUD", "[combo_hud_enabled ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/admins/proc/show_traitor_panel(mob/target_mob in GLOB.mob_list)
set category = "Admin.Game"
+19 -16
View File
@@ -31,8 +31,6 @@ GLOBAL_LIST_EMPTY(antagonists)
var/can_elimination_hijack = ELIMINATION_NEUTRAL
///If above 0, this is the multiplier for the speed at which we hijack the shuttle. Do not directly read, use hijack_speed().
var/hijack_speed = 0
///What is the configuration of this antagonist's hud icon, such as it's screen position and style, so thatit doesn't break other in-game hud icons.
var/antag_hud_type
///Name of the antag hud we provide to this mob.
var/antag_hud_name
/// If set to true, the antag will not be added to the living antag list.
@@ -58,6 +56,9 @@ GLOBAL_LIST_EMPTY(antagonists)
///button to access antag interface
var/datum/action/antag_info/info_button
/// The HUD shown to teammates, created by `add_team_hud`
var/datum/atom_hud/alternate_appearance/team_hud
/datum/antagonist/New()
GLOB.antagonists += src
typecache_datum_blacklist = typecacheof(typecache_datum_blacklist)
@@ -66,6 +67,7 @@ GLOBAL_LIST_EMPTY(antagonists)
GLOB.antagonists -= src
if(owner)
LAZYREMOVE(owner.antag_datums, src)
QDEL_NULL(team_hud)
owner = null
return ..()
@@ -112,20 +114,6 @@ GLOBAL_LIST_EMPTY(antagonists)
SIGNAL_HANDLER
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.leave_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)
if(!ishuman(mob_override) || !is_clown_job(owner.assigned_role))
@@ -170,6 +158,8 @@ GLOBAL_LIST_EMPTY(antagonists)
if(!soft_antag && owner.current.stat != DEAD)
owner.current.add_to_current_living_antags()
SEND_SIGNAL(owner, COMSIG_ANTAGONIST_GAINED, src)
/**
* Proc that checks the sent mob aganst the banlistfor this antagonist.
* Returns FALSE if no mob is sent, or the mob is not found to be banned.
@@ -217,6 +207,7 @@ GLOBAL_LIST_EMPTY(antagonists)
var/datum/team/team = get_team()
if(team)
team.remove_member(owner)
SEND_SIGNAL(owner, COMSIG_ANTAGONIST_REMOVED, src)
qdel(src)
/**
@@ -405,6 +396,18 @@ GLOBAL_LIST_EMPTY(antagonists)
var/datum/objective/hijack/H = locate() in objectives
return H?.hijack_speed_override || hijack_speed
/// Adds a HUD that will show you other members with the same antagonist.
/// If an antag typepath is passed to `antag_to_check`, will check that, otherwise will use the source type.
/datum/antagonist/proc/add_team_hud(mob/target, antag_to_check)
QDEL_NULL(team_hud)
team_hud = target.add_alt_appearance(
/datum/atom_hud/alternate_appearance/basic/has_antagonist,
"antag_team_hud_[REF(src)]",
image('icons/mob/hud.dmi', target, antag_hud_name),
antag_to_check || type,
)
//This one is created by admin tools for custom objectives
/datum/antagonist/custom
antagpanel_category = "Custom"
+75 -49
View File
@@ -1,58 +1,84 @@
/datum/atom_hud/antag
hud_icons = list(ANTAG_HUD)
var/self_visible = TRUE
var/icon_color //will set the icon color to this
/// An alternate appearance that will only show if you have the antag datum
/datum/atom_hud/alternate_appearance/basic/has_antagonist
var/antag_datum_type
/datum/atom_hud/antag/hidden
self_visible = FALSE
/datum/atom_hud/alternate_appearance/basic/has_antagonist/New(key, image/I, antag_datum_type)
src.antag_datum_type = antag_datum_type
return ..(key, I, NONE)
/datum/atom_hud/antag/proc/join_hud(mob/M)
//sees_hud should be set to 0 if the mob does not get to see it's own hud type.
if(!istype(M))
CRASH("join_hud(): [M] ([M.type]) is not a mob!")
if(M.mind.antag_hud) //note: please let this runtime if a mob has no mind, as mindless mobs shouldn't be getting antagged
M.mind.antag_hud.leave_hud(M)
/datum/atom_hud/alternate_appearance/basic/has_antagonist/mobShouldSee(mob/M)
return !!M.mind?.has_antag_datum(antag_datum_type)
if(ANTAG_HUD in M.hud_possible) //Current mob does not support antag huds ie newplayer
add_to_hud(M)
if(self_visible)
add_hud_to(M)
/// An alternate appearance that will show all the antagonists this mob has
/datum/atom_hud/alternate_appearance/basic/antagonist_hud
var/list/antag_hud_images = list()
var/index = 1
M.mind.antag_hud = src
var/datum/mind/mind
/datum/atom_hud/antag/proc/leave_hud(mob/M)
if(!M)
return
if(!istype(M))
CRASH("leave_hud(): [M] ([M.type]) is not a mob!")
remove_from_hud(M)
remove_hud_from(M)
if(M.mind)
M.mind.antag_hud = null
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/New(key, datum/mind/mind)
src.mind = mind
//GAME_MODE PROCS
//called to set a mob's antag icon state
/proc/set_antag_hud(mob/M, new_icon_state, hudindex)
if(!istype(M))
CRASH("set_antag_hud(): [M] ([M.type]) is not a mob!")
var/image/holder = M.hud_list[ANTAG_HUD]
var/datum/atom_hud/antag/specific_hud = hudindex ? GLOB.huds[hudindex] : null
if(holder)
holder.icon_state = new_icon_state
holder.color = specific_hud?.icon_color
if(M.mind || new_icon_state) //in mindless mobs, only null is acceptable, otherwise we're antagging a mindless mob, meaning we should runtime
M.mind.antag_hud_icon_state = new_icon_state
antag_hud_images = get_antag_hud_images(mind)
var/image/first_antagonist = get_antag_image(1) || image(icon('icons/blanks/32x32.dmi', "nothing"), mind.current)
//MIND PROCS
//these are called by mind.transfer_to()
/datum/mind/proc/transfer_antag_huds(datum/atom_hud/antag/newhud)
leave_all_antag_huds()
set_antag_hud(current, antag_hud_icon_state)
if(newhud)
newhud.join_hud(current)
RegisterSignal(
mind,
list(COMSIG_ANTAGONIST_GAINED, COMSIG_ANTAGONIST_REMOVED),
.proc/update_antag_hud_images
)
/datum/mind/proc/leave_all_antag_huds()
for(var/datum/atom_hud/antag/hud in GLOB.huds)
if(hud.hudusers[current])
hud.leave_hud(current)
check_processing()
return ..(key, first_antagonist, NONE)
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/Destroy()
QDEL_LIST(antag_hud_images)
STOP_PROCESSING(SSantag_hud, src)
mind.antag_hud = null
mind = null
return ..()
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/mobShouldSee(mob/mob)
return Master.current_runlevel >= RUNLEVEL_POSTGAME || mob.client?.combo_hud_enabled
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/process(delta_time)
index += 1
update_icon()
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/proc/check_processing()
if (antag_hud_images.len > 1 && !(DF_ISPROCESSING in datum_flags))
START_PROCESSING(SSantag_hud, src)
else if (antag_hud_images.len <= 1)
STOP_PROCESSING(SSantag_hud, src)
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/proc/get_antag_image(index)
RETURN_TYPE(/image)
if (antag_hud_images.len)
return antag_hud_images[(index % antag_hud_images.len) + 1]
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/proc/get_antag_hud_images(datum/mind/mind)
var/list/final_antag_hud_images = list()
for (var/datum/antagonist/antagonist as anything in mind?.antag_datums)
if (isnull(antagonist.antag_hud_name))
continue
final_antag_hud_images += image('icons/mob/hud.dmi', mind.current, antagonist.antag_hud_name)
return final_antag_hud_images
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/proc/update_icon()
if (antag_hud_images.len == 0)
image.icon = icon('icons/blanks/32x32.dmi', "nothing")
else
image.icon = icon('icons/mob/hud.dmi', get_antag_image(index).icon_state)
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/proc/update_antag_hud_images(datum/mind/source)
SIGNAL_HANDLER
antag_hud_images = get_antag_hud_images(source)
index = clamp(index, 1, antag_hud_images.len)
update_icon()
check_processing()
@@ -8,7 +8,6 @@
name = "Abductee"
roundend_category = "abductees"
antagpanel_category = "Other"
antag_hud_type = ANTAG_HUD_ABDUCTOR
antag_hud_name = "abductee"
/datum/antagonist/abductee/on_gain()
@@ -27,11 +26,3 @@
var/objtype = (prob(75) ? /datum/objective/abductee/random : pick(subtypesof(/datum/objective/abductee/) - /datum/objective/abductee/random))
var/datum/objective/abductee/O = new objtype()
objectives += O
/datum/antagonist/abductee/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/abductee/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
remove_antag_hud(antag_hud_type, M)
@@ -6,7 +6,6 @@ GLOBAL_LIST_INIT(possible_abductor_names, list("Alpha","Beta","Gamma","Delta","E
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
show_to_ghosts = TRUE
@@ -109,8 +108,6 @@ GLOBAL_LIST_INIT(possible_abductor_names, list("Alpha","Beta","Gamma","Delta","E
H.forceMove(LM.loc)
break
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)
ADD_TRAIT(owner, TRAIT_SURGEON, ABDUCTOR_ANTAGONIST)
@@ -30,7 +30,6 @@
job_rank = ROLE_BRAINWASHED
roundend_category = "brainwashed victims"
show_in_antagpanel = TRUE
antag_hud_type = ANTAG_HUD_BRAINWASHED
antag_hud_name = "brainwashed"
antagpanel_category = "Other"
show_name_in_check_antagonists = TRUE
@@ -43,16 +42,6 @@
data["objectives"] = get_objectives()
return data
/datum/antagonist/brainwashed/apply_innate_effects(mob/living/mob_override)
. = ..()
var/mob/living/current_mob = mob_override || owner.current
add_antag_hud(antag_hud_type, antag_hud_name, current_mob)
/datum/antagonist/brainwashed/remove_innate_effects(mob/living/mob_override)
var/mob/living/current_mob = mob_override || owner.current
remove_antag_hud(antag_hud_type, current_mob)
return ..()
/datum/antagonist/brainwashed/farewell()
to_chat(owner, span_warning("Your mind suddenly clears..."))
to_chat(owner, "<big>[span_warning("<b>You feel the weight of the Directives disappear! You no longer have to obey them.</b>")]</big>")
@@ -3,7 +3,6 @@
antagpanel_category = "Brother"
job_rank = ROLE_BROTHER
var/special_role = ROLE_BROTHER
antag_hud_type = ANTAG_HUD_BROTHER
antag_hud_name = "brother"
hijack_speed = 0.5
suicide_cry = "FOR MY BROTHER!!"
@@ -32,14 +31,6 @@
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()]"
@@ -8,7 +8,6 @@
antagpanel_category = "Changeling"
job_rank = ROLE_CHANGELING
antag_moodlet = /datum/mood_event/focused
antag_hud_type = ANTAG_HUD_CHANGELING
antag_hud_name = "changeling"
hijack_speed = 0.5
ui_name = "AntagInfoChangeling"
@@ -394,12 +393,10 @@
B.decoy_override = TRUE
RegisterSignal(C, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), .proc/stingAtom)
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(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))
@@ -5,7 +5,6 @@
antagpanel_category = "Changeling"
job_rank = ROLE_CHANGELING
antag_moodlet = /datum/mood_event/fallen_changeling
antag_hud_type = ANTAG_HUD_CHANGELING
antag_hud_name = "changeling"
/datum/mood_event/fallen_changeling
-9
View File
@@ -3,7 +3,6 @@
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"
@@ -37,14 +36,6 @@
qdel(trauma)
. = ..()
/datum/antagonist/obsessed/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/obsessed/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
remove_antag_hud(antag_hud_type, M)
/datum/antagonist/obsessed/get_preview_icon()
var/mob/living/carbon/human/dummy/consistent/victim_dummy = new
victim_dummy.hair_color = "#bb9966" // Brown
+4 -8
View File
@@ -14,7 +14,6 @@
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
@@ -129,7 +128,6 @@
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, TRUE, TRUE, LANGUAGE_CULTIST)
@@ -144,12 +142,13 @@
if(cult_team.cult_ascendent)
cult_team.ascend(current)
add_team_hud(current)
/datum/antagonist/cult/remove_innate_effects(mob/living/mob_override)
. = ..()
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, TRUE, TRUE, LANGUAGE_CULTIST)
@@ -212,6 +211,7 @@
/datum/antagonist/cult/master
ignore_implant = TRUE
show_in_antagpanel = FALSE //Feel free to add this later
antag_hud_name = "cultmaster"
var/datum/action/innate/cult/master/finalreck/reckoning = new
var/datum/action/innate/cult/master/cultmark/bloodmark = new
var/datum/action/innate/cult/master/pulse/throwing = new
@@ -222,11 +222,6 @@
QDEL_NULL(throwing)
return ..()
/datum/antagonist/cult/master/on_gain()
. = ..()
var/mob/living/current = owner.current
set_antag_hud(current, "cultmaster")
/datum/antagonist/cult/master/greet()
to_chat(owner.current, "<span class='warningplain'><span class='cultlarge'>You are the cult's Master</span>. As the cult's Master, you have a unique title and loud voice when communicating, are capable of marking \
targets, such as a location or a noncultist, to direct the cult to them, and, finally, you are capable of summoning the entire living cult to your location <b><i>once</i></b>. Use these abilities to direct the cult to victory at any cost.</span>")
@@ -246,6 +241,7 @@
cult_team.rise(current)
if(cult_team.cult_ascendent)
cult_team.ascend(current)
add_team_hud(current, /datum/antagonist/cult)
/datum/antagonist/cult/master/remove_innate_effects(mob/living/mob_override)
. = ..()
@@ -5,7 +5,6 @@
ui_name = "AntagInfoHeretic"
antag_moodlet = /datum/mood_event/heretics
job_rank = ROLE_HERETIC
antag_hud_type = ANTAG_HUD_HERETIC
antag_hud_name = "heretic"
hijack_speed = 0.5
suicide_cry = "THE MANSUS SMILES UPON ME!!"
@@ -182,7 +181,6 @@
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 : "Ancient knowledge described in the book allows you to overcome your clownish nature, allowing you to use complex items effectively.")
current.faction |= "heretics"
@@ -191,7 +189,6 @@
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 -= "heretics"
@@ -5,7 +5,6 @@
antagpanel_category = "Heretic Beast"
antag_moodlet = /datum/mood_event/heretics
job_rank = ROLE_HERETIC
antag_hud_type = ANTAG_HUD_HERETIC
antag_hud_name = "heretic_beast"
show_in_antagpanel = FALSE
var/datum/antagonist/master
@@ -35,11 +34,3 @@
owner.announce_objectives()
to_chat(owner, span_notice("Your master is [master.owner.current.real_name]"))
return
/datum/antagonist/heretic_monster/apply_innate_effects(mob/living/mob_override)
. = ..()
add_antag_hud(antag_hud_type, antag_hud_name, owner.current)
/datum/antagonist/heretic_monster/remove_innate_effects(mob/living/mob_override)
. = ..()
remove_antag_hud(antag_hud_type, owner.current)
-3
View File
@@ -244,14 +244,12 @@
/datum/antagonist/ert/families
name = "Space Police Responder"
antag_hud_type = ANTAG_HUD_SPACECOP
antag_hud_name = "hud_spacecop"
suicide_cry = "FOR THE SPACE POLICE!!"
/datum/antagonist/ert/families/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)
if(M.hud_used)
var/datum/hud/H = M.hud_used
var/atom/movable/screen/wanted/giving_wanted_lvl = new /atom/movable/screen/wanted()
@@ -263,7 +261,6 @@
/datum/antagonist/ert/families/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
remove_antag_hud(antag_hud_type, M)
if(M.hud_used)
var/datum/hud/H = M.hud_used
H.infodisplay -= H.wanted_lvl
@@ -5,21 +5,12 @@
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"
suicide_cry = "FOR FREEDOM!!"
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
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
remove_antag_hud(antag_hud_type, M)
/datum/antagonist/fugitive/on_gain()
forge_objectives()
. = ..()
@@ -75,6 +66,9 @@
/datum/antagonist/fugitive/get_team()
return fugitive_team
/datum/antagonist/fugitive/apply_innate_effects(mob/living/mob_override)
add_team_hud(mob_override || owner.current)
/datum/team/fugitive/roundend_report() //shows the number of fugitives, but not if they won in case there is no security
var/list/fugitives = list()
for(var/datum/antagonist/fugitive/fugitive_antag in GLOB.antagonists)
@@ -5,20 +5,11 @@
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"
suicide_cry = "FOR GLORY!!"
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
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
remove_antag_hud(antag_hud_type, M)
/datum/antagonist/fugitive_hunter/on_gain()
forge_objectives()
. = ..()
+1 -9
View File
@@ -2,7 +2,6 @@
name = "Family Member"
roundend_category = "gangsters"
ui_name = "AntagInfoGangmember"
antag_hud_type = ANTAG_HUD_GANGSTER
antag_hud_name = "hud_gangster"
antagpanel_category = "Family"
show_in_antagpanel = FALSE // i don't *think* this base class is buggy but it's too worthless to test
@@ -80,8 +79,6 @@
my_gang.rename_gangster(owner, original_name, starter_gangster) // fully_replace_character_name
if(starter_gangster)
equip_gangster_in_inventory()
var/datum/atom_hud/gang_hud = GLOB.huds[ANTAG_HUD_GANGSTER]
gang_hud.add_hud_to(owner.current)
owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/thatshowfamiliesworks.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE)
..()
@@ -95,8 +92,6 @@
have that datum onhand. it would be easier if all of the code the gang team calls on its my_gang_datum was
just in the team datum itself, and there were different types of teams instead of different types of gangster
that imprint on generic teams, but i'm too lazy to refactor THAT too */
var/datum/atom_hud/gang_hud = GLOB.huds[ANTAG_HUD_GANGSTER]
gang_hud.remove_hud_from(owner.current)
..()
/datum/antagonist/gang/apply_innate_effects(mob/living/mob_override)
@@ -104,14 +99,11 @@
if(starter_gangster)
package_spawner.Grant(owner.current)
package_spawner.my_gang_datum = src
var/mob/living/M = mob_override || owner.current
add_antag_hud(antag_hud_type, antag_hud_name, M)
add_team_hud(mob_override || owner.current, /datum/antagonist/gang)
/datum/antagonist/gang/remove_innate_effects(mob/living/mob_override)
if(starter_gangster)
package_spawner.Remove(owner.current)
var/mob/living/M = mob_override || owner.current
remove_antag_hud(antag_hud_type, M)
..()
/// Gives a gangster their equipment in their backpack and / or pockets.
@@ -6,7 +6,6 @@
roundend_category = "traitors"
antagpanel_category = "Malf AI"
job_rank = ROLE_MALF
antag_hud_type = ANTAG_HUD_TRAITOR
antag_hud_name = "traitor"
var/employer = "The Syndicate"
var/give_objectives = TRUE
@@ -112,7 +111,6 @@
. = ..()
var/mob/living/silicon/ai/datum_owner = mob_override || owner.current
add_antag_hud(antag_hud_type, antag_hud_name, datum_owner)
if(istype(datum_owner))
datum_owner.hack_software = TRUE
@@ -124,7 +122,6 @@
. = ..()
var/mob/living/silicon/ai/datum_owner = mob_override || owner.current
remove_antag_hud(antag_hud_type, datum_owner)
if(istype(datum_owner))
datum_owner.hack_software = FALSE
+3 -9
View File
@@ -3,7 +3,6 @@
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
show_to_ghosts = TRUE
@@ -21,14 +20,6 @@
/// In the preview icon, a nuclear fission explosive device, only appearing if there's an icon state for it.
var/nuke_icon_state = "nuclearbomb_base"
/datum/antagonist/nukeop/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/nukeop/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
remove_antag_hud(antag_hud_type, M)
/datum/antagonist/nukeop/proc/equip_op()
if(!ishuman(owner.current))
return
@@ -61,6 +52,9 @@
/datum/antagonist/nukeop/get_team()
return nuke_team
/datum/antagonist/nukeop/apply_innate_effects(mob/living/mob_override)
add_team_hud(mob_override || owner.current)
/datum/antagonist/nukeop/proc/assign_nuke()
if(nuke_team && !nuke_team.tracked_nuke)
nuke_team.memorized_code = random_nukecode()
@@ -9,7 +9,6 @@
antagpanel_category = "Revolution"
job_rank = ROLE_REV
antag_moodlet = /datum/mood_event/revolution
antag_hud_type = ANTAG_HUD_REV
antag_hud_name = "rev"
suicide_cry = "VIVA LA REVOLUTION!!"
var/datum/team/revolution/rev_team
@@ -31,12 +30,11 @@
/datum/antagonist/rev/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)
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.")
add_team_hud(M, /datum/antagonist/rev)
/datum/antagonist/rev/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)
/datum/antagonist/rev/on_mindshield(mob/implanter)
@@ -2,7 +2,6 @@
name = "Space Ninja"
antagpanel_category = "Space Ninja"
job_rank = ROLE_NINJA
antag_hud_type = ANTAG_HUD_NINJA
antag_hud_name = "space_ninja"
hijack_speed = 1
show_name_in_check_antagonists = TRUE
@@ -15,14 +14,6 @@
///Whether or not this ninja receives the standard equipment
var/give_equipment = TRUE
/datum/antagonist/ninja/apply_innate_effects(mob/living/mob_override)
var/mob/living/ninja = mob_override || owner.current
add_antag_hud(antag_hud_type, antag_hud_name, ninja)
/datum/antagonist/ninja/remove_innate_effects(mob/living/mob_override)
var/mob/living/ninja = mob_override || owner.current
remove_antag_hud(antag_hud_type, ninja)
/**
* Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum.
*
@@ -19,7 +19,6 @@
antagpanel_category = "Traitor"
job_rank = ROLE_TRAITOR
antag_moodlet = /datum/mood_event/focused
antag_hud_type = ANTAG_HUD_TRAITOR
antag_hud_name = "traitor"
hijack_speed = 0.5 //10 seconds per hijack stage by default
ui_name = "AntagInfoTraitor"
@@ -194,7 +193,6 @@
. = ..()
var/mob/living/datum_owner = mob_override || owner.current
add_antag_hud(antag_hud_type, antag_hud_name, datum_owner)
handle_clown_mutation(datum_owner, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
if(should_give_codewords)
datum_owner.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_phrase_regex, "blue", src)
@@ -203,7 +201,6 @@
/datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override)
. = ..()
var/mob/living/datum_owner = mob_override || owner.current
remove_antag_hud(antag_hud_type, datum_owner)
handle_clown_mutation(datum_owner, removing = FALSE)
for(var/datum/component/codeword_hearing/component as anything in datum_owner.GetComponents(/datum/component/codeword_hearing))
+2 -7
View File
@@ -3,7 +3,6 @@
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
hijack_speed = 0.5
@@ -22,7 +21,6 @@
/datum/antagonist/wizard_minion
name = "Wizard Minion"
antagpanel_category = "Wizard"
antag_hud_type = ANTAG_HUD_WIZ
antag_hud_name = "apprentice"
show_in_roundend = FALSE
show_name_in_check_antagonists = TRUE
@@ -38,12 +36,11 @@
/datum/antagonist/wizard_minion/apply_innate_effects(mob/living/mob_override)
var/mob/living/current_mob = mob_override || owner.current
add_antag_hud(antag_hud_type, antag_hud_name, current_mob)
current_mob.faction |= ROLE_WIZARD
add_team_hud(current_mob)
/datum/antagonist/wizard_minion/remove_innate_effects(mob/living/mob_override)
var/mob/living/last_mob = mob_override || owner.current
remove_antag_hud(antag_hud_type, last_mob)
last_mob.faction -= ROLE_WIZARD
/datum/antagonist/wizard_minion/on_gain()
@@ -95,7 +92,6 @@
wiz_team = new(owner)
wiz_team.name = "[owner.current.real_name] team"
wiz_team.master_wizard = src
add_antag_hud(antag_hud_type, antag_hud_name, owner.current)
/datum/antagonist/wizard/proc/send_to_lair()
if(!owner)
@@ -210,12 +206,11 @@
/datum/antagonist/wizard/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)
M.faction |= ROLE_WIZARD
add_team_hud(M)
/datum/antagonist/wizard/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
remove_antag_hud(antag_hud_type, M)
M.faction -= ROLE_WIZARD
+3
View File
@@ -212,3 +212,6 @@
/// Whether or not this client has standard hotkeys enabled
var/hotkeys = TRUE
/// Whether or not this client has the combo HUD enabled
var/combo_hud_enabled = FALSE
-1
View File
@@ -246,7 +246,6 @@
name = "police aviators"
desc = "For thinking you look cool while brutalizing protestors and minorities."
icon_state = "bigsunglasses"
hud_type = ANTAG_HUD_GANGSTER
darkness_view = 1
flash_protect = FLASH_PROTECTION_FLASH
tint = 1
@@ -5,7 +5,6 @@ GLOBAL_VAR(caller_of_911)
GLOBAL_LIST_INIT(emergency_responders, list())
/datum/antagonist/ert/request_911
name = "911 Responder"
antag_hud_type = ANTAG_HUD_SPACECOP
antag_hud_name = "hud_spacecop"
suicide_cry = "FOR THE SOL FEDERATION!!"
var/department = "Some stupid shit"
@@ -13,7 +12,6 @@ GLOBAL_LIST_INIT(emergency_responders, list())
/datum/antagonist/ert/request_911/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)
if(M.hud_used)
var/datum/hud/H = M.hud_used
var/atom/movable/screen/wanted/giving_wanted_lvl = new /atom/movable/screen/wanted()
@@ -25,7 +23,6 @@ GLOBAL_LIST_INIT(emergency_responders, list())
/datum/antagonist/ert/request_911/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
remove_antag_hud(antag_hud_type, M)
if(M.hud_used)
var/datum/hud/H = M.hud_used
H.infodisplay -= H.wanted_lvl
+1
View File
@@ -463,6 +463,7 @@
#include "code\controllers\subsystem\processing\ai_basic_avoidance.dm"
#include "code\controllers\subsystem\processing\ai_behaviors.dm"
#include "code\controllers\subsystem\processing\ai_movement.dm"
#include "code\controllers\subsystem\processing\antag_hud.dm"
#include "code\controllers\subsystem\processing\aura_healing.dm"
#include "code\controllers\subsystem\processing\clock_component.dm"
#include "code\controllers\subsystem\processing\fastprocess.dm"