diff --git a/code/game/gamemodes/antag_hud.dm b/code/game/gamemodes/antag_hud.dm
index e7df5173c1b..0b2ee9320de 100644
--- a/code/game/gamemodes/antag_hud.dm
+++ b/code/game/gamemodes/antag_hud.dm
@@ -1,20 +1,20 @@
/datum/atom_hud/antag
hud_icons = list(SPECIALROLE_HUD,NATIONS_HUD)
-/datum/atom_hud/antag/proc/join_hud(mob/M)
+/datum/atom_hud/antag/proc/join_hud(mob/M,var/slave)
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
+ if(M.mind.antag_hud && !slave) //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)
if(!ismask(M))//FUCK YOU MASK OF NARNAR!
add_to_hud(M)
add_hud_to(M)
M.mind.antag_hud = src
-/datum/atom_hud/antag/proc/join_solo_hud(mob/M)//for non team antags and for observer huds
+/datum/atom_hud/antag/proc/join_solo_hud(mob/M,var/slave)//for non team antags and for observer huds
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
+ if(M.mind.antag_hud && !slave) //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)
add_to_hud(M)
M.mind.antag_hud = src
@@ -91,7 +91,7 @@
thrallhud = new()
/datum/mindslaves/proc/add_serv_hud(datum/mind/serv_mind,var/icon)
- thrallhud.join_hud(serv_mind.current)
+ thrallhud.join_hud(serv_mind.current,1)
icontype = "hud[icon]"
ticker.mode.set_antag_hud(serv_mind.current,icontype)
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 228dc66fe30..c975aa8292c 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -358,12 +358,13 @@
implanter[ref] -= traitor_mind
implanted -= traitor_mind
traitors -= traitor_mind
- var/datum/mindslaves/slaved = traitor_mind.som
- slaved.serv -= traitor_mind
- traitor_mind.special_role = null
- traitor_mind.som = null
+ if(traitor_mind.som)
+ var/datum/mindslaves/slaved = traitor_mind.som
+ slaved.serv -= traitor_mind
+ traitor_mind.special_role = null
+ traitor_mind.som = null
+ slaved.leave_serv_hud(traitor_mind)
- slaved.leave_serv_hud(traitor_mind)
update_traitor_icons_removed(traitor_mind)
//world << "Removed [traitor_mind.current.name] from traitor shit"
traitor_mind.current << "\red The fog clouding your mind clears. You remember nothing from the moment you were implanted until now.(You don't remember who implanted you)"
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index 7d64abe7809..e07f24983b1 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -326,9 +326,10 @@
else
ticker.mode.vampire_thralls[ref] += H.mind
- //ticker.mode.update_vampire_icons_added(H.mind)
+ ticker.mode.update_vampire_icons_added(H.mind)
ticker.mode.update_vampire_icons_added(src.mind)
var/datum/mindslaves/slaved = src.mind.som
+ H.mind.som = slaved
slaved.serv += H
slaved.add_serv_hud(src.mind,"vampire")//handles master servent icons
slaved.add_serv_hud(H.mind,"vampthrall")
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 79dca7fa122..d27cd74140d 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -415,12 +415,15 @@ the implant may become unstable and either pre-maturely inject the subject or si
H << "Objective #1: [objective.explanation_text]"
ticker.mode.update_traitor_icons_added(user.mind)
- var/datum/mindslaves/slaved = user.mind.som
- slaved.serv += H
- slaved.add_serv_hud(user.mind,"syndicate")//handles master servent icons
- slaved.add_serv_hud(H.mind,"mindslave")
+ ticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds
+
+ if(user.mind.som)//do not add if not a traitor..and you just picked up an implanter in the hall...
+ var/datum/mindslaves/slaved = user.mind.som
+ H.mind.som = slaved
+ slaved.serv += H
+ slaved.add_serv_hud(user.mind,"syndicate")//handles master servent icons
+ slaved.add_serv_hud(H.mind,"mindslave")
- //ticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds
log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].")
return 1
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 0ba96f3e5bb..de34f55df94 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -307,11 +307,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
//var/datum/atom_hud/A = huds[DATA_HUD_SECURITY_ADVANCED]
//var/adding_hud = (usr in A.hudusers) ? 0 : 1
- var/serv_huds = list()//mindslaves and/or vampire thralls
- for(var/datum/mindslaves/serv in (ticker.mode.vampires | ticker.mode.traitors))
- serv_huds += serv.thrallhud
- for(var/datum/atom_hud/antag/H in (huds|serv_huds))
+ for(var/datum/atom_hud/antag/H in (huds))
//if(istype(H, /datum/atom_hud/antag))// || istype(H, /datum/atom_hud/data/human/security/advanced))
if(!M.antagHUD)
//(adding_hud) ? H.add_hud_to(usr) : H.remove_hud_from(usr)