diff --git a/baystation12.dme b/baystation12.dme
index 22c7a86c52..38b9f77d96 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -256,7 +256,6 @@
#include "code\game\gamemodes\game_mode.dm"
#include "code\game\gamemodes\game_mode_latespawn.dm"
#include "code\game\gamemodes\gameticker.dm"
-#include "code\game\gamemodes\intercept_report.dm"
#include "code\game\gamemodes\objective.dm"
#include "code\game\gamemodes\setupgame.dm"
#include "code\game\gamemodes\blob\blob.dm"
diff --git a/code/game/antagonist/alien/borer.dm b/code/game/antagonist/alien/borer.dm
index aabb6bd7e3..f43550dc6a 100644
--- a/code/game/antagonist/alien/borer.dm
+++ b/code/game/antagonist/alien/borer.dm
@@ -8,6 +8,7 @@ var/datum/antagonist/xenos/borer/borers
bantype = "Borer"
welcome_text = "Use your Infest power to crawl into the ear of a host and fuse with their brain. You can only take control temporarily, and at risk of hurting your host, so be clever and careful; your host is encouraged to help you however they can. Talk to your fellow borers with :x."
antag_indicator = "brainworm"
+ antaghud_indicator = "hudborer"
faction_role_text = "Borer Thrall"
faction_descriptor = "Unity"
diff --git a/code/game/antagonist/alien/xenomorph.dm b/code/game/antagonist/alien/xenomorph.dm
index f6a8bc5cb1..4603fc5d1c 100644
--- a/code/game/antagonist/alien/xenomorph.dm
+++ b/code/game/antagonist/alien/xenomorph.dm
@@ -9,6 +9,7 @@ var/datum/antagonist/xenos/xenomorphs
bantype = "Xenomorph"
flags = ANTAG_OVERRIDE_MOB | ANTAG_RANDSPAWN | ANTAG_OVERRIDE_JOB | ANTAG_VOTABLE
welcome_text = "Hiss! You are a larval alien. Hide and bide your time until you are ready to evolve."
+ antaghud_indicator = "hudalien"
hard_cap = 5
hard_cap_round = 8
diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm
index 3be89beba1..faf7526a9c 100644
--- a/code/game/antagonist/antagonist.dm
+++ b/code/game/antagonist/antagonist.dm
@@ -19,6 +19,7 @@
var/role_text_plural = "Traitors" // As above but plural.
// Visual references.
+ var/antaghud_indicator = "hudsyndicate" // Used by the ghost antagHUD.
var/antag_indicator // icon_state for icons/mob/mob.dm visual indicator.
var/faction_indicator // See antag_indicator, but for factionalized people only.
var/faction_invisible // Can members of the faction identify other antagonists?
@@ -76,6 +77,11 @@
role_text_plural = role_text
if(config.protect_roles_from_antagonist)
restricted_jobs |= protected_jobs
+ if(antaghud_indicator)
+ if(!hud_icon_reference)
+ hud_icon_reference = list()
+ if(role_text) hud_icon_reference[role_text] = antaghud_indicator
+ if(faction_role_text) hud_icon_reference[faction_role_text] = antaghud_indicator
/datum/antagonist/proc/tick()
return 1
diff --git a/code/game/antagonist/outsider/deathsquad.dm b/code/game/antagonist/outsider/deathsquad.dm
index afd1d8b253..2740adf8ae 100644
--- a/code/game/antagonist/outsider/deathsquad.dm
+++ b/code/game/antagonist/outsider/deathsquad.dm
@@ -9,6 +9,7 @@ var/datum/antagonist/deathsquad/deathsquad
landmark_id = "Commando"
flags = ANTAG_OVERRIDE_JOB | ANTAG_OVERRIDE_MOB | ANTAG_HAS_NUKE | ANTAG_HAS_LEADER
default_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
+ antaghud_indicator = "huddeathsquad"
hard_cap = 4
hard_cap_round = 8
diff --git a/code/game/antagonist/outsider/ert.dm b/code/game/antagonist/outsider/ert.dm
index 64338c5a93..67d98f8ae5 100644
--- a/code/game/antagonist/outsider/ert.dm
+++ b/code/game/antagonist/outsider/ert.dm
@@ -10,6 +10,7 @@ var/datum/antagonist/ert/ert
leader_welcome_text = "As leader of the Emergency Response Team, you answer only to CentComm, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however."
landmark_id = "Response Team"
flags = ANTAG_OVERRIDE_JOB | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER | ANTAG_CHOOSE_NAME
+ antaghud_indicator = "hudloyalist"
hard_cap = 5
hard_cap_round = 7
diff --git a/code/game/antagonist/outsider/mercenary.dm b/code/game/antagonist/outsider/mercenary.dm
index 69d9f60420..a8b03e605d 100644
--- a/code/game/antagonist/outsider/mercenary.dm
+++ b/code/game/antagonist/outsider/mercenary.dm
@@ -12,6 +12,7 @@ var/datum/antagonist/mercenary/mercs
welcome_text = "To speak on the strike team's private channel use :t."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_HAS_NUKE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER
id_type = /obj/item/weapon/card/id/syndicate
+ antaghud_indicator = "hudoperative"
hard_cap = 4
hard_cap_round = 8
diff --git a/code/game/antagonist/outsider/ninja.dm b/code/game/antagonist/outsider/ninja.dm
index d44f9c545a..7a4b135db5 100644
--- a/code/game/antagonist/outsider/ninja.dm
+++ b/code/game/antagonist/outsider/ninja.dm
@@ -9,6 +9,7 @@ var/datum/antagonist/ninja/ninjas
landmark_id = "ninjastart"
welcome_text = "You are an elite mercenary assassin of the Spider Clan. You have a variety of abilities at your disposal, thanks to your nano-enhanced cyber armor."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_RANDSPAWN | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE
+ antaghud_indicator = "hudninja"
initial_spawn_req = 1
initial_spawn_target = 1
diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm
index 9f93d39738..c74afc2acd 100644
--- a/code/game/antagonist/outsider/raider.dm
+++ b/code/game/antagonist/outsider/raider.dm
@@ -10,6 +10,7 @@ var/datum/antagonist/raider/raiders
landmark_id = "voxstart"
welcome_text = "Use :H to talk on your encrypted channel."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER
+ antaghud_indicator = "hudmutineer"
hard_cap = 6
hard_cap_round = 10
diff --git a/code/game/antagonist/outsider/wizard.dm b/code/game/antagonist/outsider/wizard.dm
index af1fc09e8e..f6741cafa0 100644
--- a/code/game/antagonist/outsider/wizard.dm
+++ b/code/game/antagonist/outsider/wizard.dm
@@ -9,6 +9,7 @@ var/datum/antagonist/wizard/wizards
landmark_id = "wizard"
welcome_text = "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.
In your pockets you will find a teleport scroll. Use it as needed."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE
+ antaghud_indicator = "hudwizard"
hard_cap = 1
hard_cap_round = 3
diff --git a/code/game/antagonist/station/changeling.dm b/code/game/antagonist/station/changeling.dm
index f6307b8ae8..a592bc03c1 100644
--- a/code/game/antagonist/station/changeling.dm
+++ b/code/game/antagonist/station/changeling.dm
@@ -9,6 +9,7 @@
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain")
welcome_text = "Use say \":g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you absorb them."
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
+ antaghud_indicator = "hudchangeling"
/datum/antagonist/changeling/get_special_objective_text(var/datum/mind/player)
return "
Changeling ID: [player.changeling.changelingID].
Genomes Absorbed: [player.changeling.absorbedcount]"
diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm
index ff0d049b67..dda799ba11 100644
--- a/code/game/antagonist/station/cultist.dm
+++ b/code/game/antagonist/station/cultist.dm
@@ -26,6 +26,7 @@ var/datum/antagonist/cultist/cult
hard_cap_round = 6
initial_spawn_req = 4
initial_spawn_target = 6
+ antaghud_indicator = "hudcultist"
var/allow_narsie = 1
var/datum/mind/sacrifice_target
diff --git a/code/game/antagonist/station/loyalist.dm b/code/game/antagonist/station/loyalist.dm
index 4b95467691..fddf0c3796 100644
--- a/code/game/antagonist/station/loyalist.dm
+++ b/code/game/antagonist/station/loyalist.dm
@@ -13,6 +13,7 @@ var/datum/antagonist/loyalists/loyalists
loss_text = "The heads of staff did not stop the revolution!"
victory_feedback_tag = "win - rev heads killed"
loss_feedback_tag = "loss - heads killed"
+ antaghud_indicator = "hudloyalist"
flags = 0
hard_cap = 2
diff --git a/code/game/antagonist/station/revolutionary.dm b/code/game/antagonist/station/revolutionary.dm
index f3454cf756..96e3752991 100644
--- a/code/game/antagonist/station/revolutionary.dm
+++ b/code/game/antagonist/station/revolutionary.dm
@@ -14,6 +14,7 @@ var/datum/antagonist/revolutionary/revs
victory_feedback_tag = "win - heads killed"
loss_feedback_tag = "loss - rev heads killed"
flags = ANTAG_SUSPICIOUS | ANTAG_VOTABLE
+ antaghud_indicator = "hudrevolutionary"
hard_cap = 2
hard_cap_round = 4
diff --git a/code/game/antagonist/station/rogue_ai.dm b/code/game/antagonist/station/rogue_ai.dm
index c8dcaff19e..52fa7e3f38 100644
--- a/code/game/antagonist/station/rogue_ai.dm
+++ b/code/game/antagonist/station/rogue_ai.dm
@@ -15,7 +15,7 @@ var/datum/antagonist/rogue_ai/malf
hard_cap_round = 1
initial_spawn_req = 1
initial_spawn_target = 1
-
+ antaghud_indicator = "hudmalai"
/datum/antagonist/rogue_ai/New()
..()
diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm
deleted file mode 100644
index bfe0e1d90d..0000000000
--- a/code/game/gamemodes/intercept_report.dm
+++ /dev/null
@@ -1,187 +0,0 @@
-/datum/intercept_text
- var/text
- /*
- var/prob_correct_person_lower = 20
- var/prob_correct_person_higher = 80
- var/prob_correct_job_lower = 20
- var/prob_correct_job_higher = 80
- var/prob_correct_prints_lower = 20
- var/prob_correct_print_higher = 80
- var/prob_correct_objective_lower = 20
- var/prob_correct_objective_higher = 80
- */
- var/list/org_names_1 = list(
- "Blighted",
- "Defiled",
- "Unholy",
- "Murderous",
- "Ugly",
- "French",
- "Blue",
- "Farmer"
- )
- var/list/org_names_2 = list(
- "Reapers",
- "Swarm",
- "Rogues",
- "Menace",
- "Jeff Worshippers",
- "Drunks",
- "Strikers",
- "Creed"
- )
- var/list/anomalies = list(
- "Huge electrical storm",
- "Photon emitter",
- "Meson generator",
- "Blue swirly thing"
- )
- var/list/SWF_names = list(
- "Grand Wizard",
- "His Most Unholy Master",
- "The Most Angry",
- "Bighands",
- "Tall Hat",
- "Deadly Sandals"
- )
- var/list/changeling_names = list(
- "Odo",
- "The Thing",
- "Booga",
- "The Goatee of Wrath",
- "Tam Lin",
- "Species 3157",
- "Small Prick"
- )
-
-// TODO: Update to new antagonist system.
-/datum/intercept_text/proc/build(var/mode_type, datum/mind/correct_person)
- switch(mode_type)
- if("revolution")
- src.text = ""
- src.build_rev(correct_person)
- return src.text
- if("cult")
- src.text = ""
- src.build_cult(correct_person)
- return src.text
- if("wizard")
- src.text = ""
- src.build_wizard(correct_person)
- return src.text
- if("nuke")
- src.text = ""
- src.build_nuke(correct_person)
- return src.text
- if("traitor")
- src.text = ""
- src.build_traitor(correct_person)
- return src.text
- if("malf")
- src.text = ""
- src.build_malf(correct_person)
- return src.text
- if("changeling","traitorchan")
- src.text = ""
- src.build_changeling(correct_person)
- return src.text
- else
- return null
-
-/datum/intercept_text/proc/get_suspect()
- var/list/dudes = list()
- for(var/mob/living/carbon/human/man in player_list) if(man.client && man.client.prefs.nanotrasen_relation == "Opposed")
- dudes += man
- for(var/i = 0, i < max(player_list.len/10,2), i++)
- dudes += pick(player_list)
- return pick(dudes)
-
-/datum/intercept_text/proc/build_traitor(datum/mind/correct_person)
- var/name_1 = pick(src.org_names_1)
- var/name_2 = pick(src.org_names_2)
-
- var/mob/living/carbon/human/H = get_suspect()
- if(!H) return
-
- var/fingerprints = num2text(md5(H.dna.uni_identity))
- var/traitor_name = H.real_name
- var/prob_right_dude = rand(1, 100)
-
- src.text += "
The [name_1] [name_2] implied an undercover operative was acting on their behalf on the station currently."
- src.text += "It would be in your best interests to suspect everybody, as these undercover operatives could have implants which trigger them to have their memories removed until they are needed. He, or she, could even be a high ranking officer."
-
- src.text += "After some investigation, we "
- if(prob(50))
- src.text += "are [prob_right_dude]% sure that [traitor_name] may have been involved, and should be closely observed."
- src.text += "
Note: This group are known to be untrustworthy, so do not act on this information without proper discourse."
- else
- src.text += "discovered the following set of fingerprints ([fingerprints]) on sensitive materials, and their owner should be closely observed."
- src.text += "However, these could also belong to a current Cent. Com employee, so do not act on this without reason."
-
-
-
-/datum/intercept_text/proc/build_cult(datum/mind/correct_person)
- var/name_1 = pick(src.org_names_1)
- var/name_2 = pick(src.org_names_2)
-
- var/prob_right_dude = rand(1, 100)
- var/mob/living/carbon/human/H = get_suspect()
- if(!H) return
- var/traitor_job = H.mind.assigned_role
-
- src.text += "
It has been brought to our attention that the [name_1] [name_2] have stumbled upon some dark secrets. They apparently want to spread the dangerous knowledge onto as many stations as they can."
- src.text += "Watch out for the following: praying to an unfamilar god, preaching the word of \[REDACTED\], sacrifices, magical dark power, living constructs of evil and a portal to the dimension of the underworld."
-
- src.text += "Based on our intelligence, we are [prob_right_dude]% sure that if true, someone doing the job of [traitor_job] on your station may have been converted "
- src.text += "and instilled with the idea of the flimsiness of the real world, seeking to destroy it. "
-
- src.text += "
However, if this information is acted on without substantial evidence, those responsible will face severe repercussions."
-
-
-
-/datum/intercept_text/proc/build_rev(datum/mind/correct_person)
- var/name_1 = pick(src.org_names_1)
- var/name_2 = pick(src.org_names_2)
-
- var/prob_right_dude = rand(1, 100)
- var/mob/living/carbon/human/H = get_suspect()
- if(!H) return
- var/traitor_job = H.mind.assigned_role
-
- src.text += "
It has been brought to our attention that the [name_1] [name_2] are attempting to stir unrest on one of our stations in your sector."
- src.text += "Watch out for suspicious activity among the crew and make sure that all heads of staff report in periodically."
-
- src.text += "Based on our intelligence, we are [prob_right_dude]% sure that if true, someone doing the job of [traitor_job] on your station may have been brainwashed "
- src.text += "at a recent conference, and their department should be closely monitored for signs of mutiny. "
-
- src.text += "
However, if this information is acted on without substantial evidence, those responsible will face severe repercussions."
-
-
-
-/datum/intercept_text/proc/build_wizard(datum/mind/correct_person)
- var/SWF_desc = pick(SWF_names)
-
- src.text += "
The evil Space Wizards Federation have recently broke their most feared wizard, known only as \"[SWF_desc]\" out of space jail. "
- src.text += "He is on the run, last spotted in a system near your present location. If anybody suspicious is located aboard, please "
- src.text += "approach with EXTREME caution. Cent. Com also recommends that it would be wise to not inform the crew of this, due to their fearful nature."
- src.text += "Known attributes include: Brown sandals, a large blue hat, a voluptous white beard, and an inclination to cast spells."
-
-/datum/intercept_text/proc/build_nuke(datum/mind/correct_person)
- src.text += "
Cent. Com recently recieved a report of a plot to destroy one of our stations in your area. We believe the Nuclear Authentication Disc "
- src.text += "that is standard issue aboard your vessel may be a target. We recommend removal of this object, and it's storage in a safe "
- src.text += "environment. As this may cause panic among the crew, all efforts should be made to keep this information a secret from all but "
- src.text += "the most trusted crew-members."
-
-/datum/intercept_text/proc/build_malf(datum/mind/correct_person)
- var/a_name = pick(src.anomalies)
- src.text += "
A [a_name] was recently picked up by a nearby stations sensors in your sector. If it came into contact with your ship or "
- src.text += "electrical equipment, it may have had hazardarous and unpredictable effect. Closely observe any non carbon based life forms "
- src.text += "for signs of unusual behaviour, but keep this information discreet at all times due to this possibly dangerous scenario."
-
-/datum/intercept_text/proc/build_changeling(datum/mind/correct_person)
- var/cname = pick(src.changeling_names)
- var/orgname1 = pick(src.org_names_1)
- var/orgname2 = pick(src.org_names_2)
- src.text += "
We have received a report that a dangerous alien lifeform known only as \"[cname]\" may have infiltrated your crew. "
- src.text += "These lifeforms are assosciated with the [orgname1] [orgname2] and may be attempting to acquire sensitive materials on their behalf. "
- src.text += "Please take care not to alarm the crew, as [cname] may take advantage of a panic situation. Remember, they can be anybody, suspect everybody!"
diff --git a/code/global.dm b/code/global.dm
index bfb1806b80..7d7b21970a 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -12,6 +12,7 @@ var/global/list/processing_power_items = list()
var/global/list/active_diseases = list()
var/global/list/med_hud_users = list() // List of all entities using a medical HUD.
var/global/list/sec_hud_users = list() // List of all entities using a security HUD.
+var/global/list/hud_icon_reference = list()
// Those networks can only be accessed by pre-existing terminals. AIs and new terminals can't use them.
var/list/restricted_camera_networks = list("thunder","ERT","NUKE","Secret")
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 25ba18a479..675b017936 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -123,7 +123,7 @@ Works together with spawning an observer, noted above.
if(antagHUD)
var/list/target_list = list()
for(var/mob/living/target in oview(src, 14))
- if(target.mind&&(target.mind.special_role||issilicon(target)) )
+ if(target.mind && target.mind.special_role)
target_list += target
if(target_list.len)
assess_targets(target_list, src)
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 75a07a528c..b9f5b513e8 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1679,35 +1679,11 @@
if (BITTEST(hud_updateflag, SPECIALROLE_HUD))
var/image/holder = hud_list[SPECIALROLE_HUD]
holder.icon_state = "hudblank"
- if(mind)
-
- // TODO: Update to new antagonist system.
- switch(mind.special_role)
- if("traitor","Mercenary")
- holder.icon_state = "hudsyndicate"
- if("Revolutionary")
- holder.icon_state = "hudrevolutionary"
- if("Head Revolutionary")
- holder.icon_state = "hudheadrevolutionary"
- if("Cultist")
- holder.icon_state = "hudcultist"
- if("Changeling")
- holder.icon_state = "hudchangeling"
- if("Wizard","Fake Wizard")
- holder.icon_state = "hudwizard"
- if("Death Commando")
- holder.icon_state = "huddeathsquad"
- if("Ninja")
- holder.icon_state = "hudninja"
- if("head_loyalist")
- holder.icon_state = "hudloyalist"
- if("loyalist")
- holder.icon_state = "hudloyalist"
- if("head_mutineer")
- holder.icon_state = "hudmutineer"
- if("mutineer")
- holder.icon_state = "hudmutineer"
-
+ if(mind && mind.special_role)
+ if(hud_icon_reference[mind.special_role])
+ holder.icon_state = hud_icon_reference[mind.special_role]
+ else
+ holder.icon_state = "hudsyndicate"
hud_list[SPECIALROLE_HUD] = holder
hud_updateflag = 0
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index f6da88ca35..0d3e68db03 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ