diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 1a6bc4eb1c7..dd1a88b8b36 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -1666,9 +1666,8 @@
zealot_objective.target = missionary.mind
zealot_objective.owner = src
zealot_objective.explanation_text = "Obey every order from and protect [missionary.real_name], the [missionary.mind.assigned_role == missionary.mind.special_role ? (missionary.mind.special_role) : (missionary.mind.assigned_role)]."
- var/datum/antagonist/mindslave/S = new()
- S.add_objective(zealot_objective)
- add_antag_datum(S)
+ objectives += zealot_objective
+ add_antag_datum(/datum/antagonist/mindslave)
var/datum/antagonist/traitor/T = missionary.mind.has_antag_datum(/datum/antagonist)
T.update_traitor_icons_added(missionary.mind)
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index ed12291c79b..bc5eace7338 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -73,10 +73,14 @@
objective = "Make certain at least 80% of the station evacuates on the shuttle."
var/datum/objective/custom_objective = new(objective)
+ custom_objective.owner = N.mind
+ N.mind.objectives += custom_objective
+ var/datum/objective/escape/escape_objective = new
+ escape_objective.owner = N.mind
+ N.mind.objectives += escape_objective
+
var/datum/antagonist/traitor/T = new()
T.give_objectives = FALSE
- T.add_objective(custom_objective)
- T.add_objective(/datum/objective/escape)
N.mind.add_antag_datum(T)
to_chat(M, "You have joined the ranks of the Syndicate and become a traitor to the station!")
diff --git a/code/game/objects/items/weapons/implants/implant_traitor.dm b/code/game/objects/items/weapons/implants/implant_traitor.dm
index 743488e4354..f281353c62f 100644
--- a/code/game/objects/items/weapons/implants/implant_traitor.dm
+++ b/code/game/objects/items/weapons/implants/implant_traitor.dm
@@ -56,7 +56,6 @@
SSticker.mode.implanted.Add(mindslave_target.mind)
SSticker.mode.implanted[mindslave_target.mind] = user.mind
SSticker.mode.implanter[user.mind] = implanters
- SSticker.mode.traitors += mindslave_target.mind
to_chat(mindslave_target, "You're now completely loyal to [user.name]! You now must lay down your life to protect [user.p_them()] and assist in [user.p_their()] goals at any cost.")
@@ -64,10 +63,8 @@
MS.owner = mindslave_target.mind
MS.target = user.mind
MS.explanation_text = "Obey every order from and protect [user.real_name], the [user.mind.assigned_role == user.mind.special_role ? (user.mind.special_role) : (user.mind.assigned_role)]."
-
- var/datum/antagonist/mindslave/S = new()
- S.add_objective(MS)
- mindslave_target.mind.add_antag_datum(S)
+ mindslave_target.mind.objectives += MS
+ mindslave_target.mind.add_antag_datum(/datum/antagonist/mindslave)
var/datum/mindslaves/slaved = user.mind.som
mindslave_target.mind.som = slaved
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index 9203477c7f9..9ed6f0cd997 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -502,6 +502,9 @@
if(SSticker.mode.traitors.len)
dat += check_role_table("Traitors", SSticker.mode.traitors)
+ if(SSticker.mode.implanted.len)
+ dat += check_role_table("Mindslaves", SSticker.mode.implanted)
+
if(SSticker.mode.shadows.len)
dat += check_role_table("Shadowlings", SSticker.mode.shadows)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 603873cc4fb..98c83f4e612 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1985,9 +1985,9 @@
kill_objective.target = H.mind
kill_objective.owner = newtraitormind
kill_objective.explanation_text = "Assassinate [H.mind], the [H.mind.assigned_role]"
+ H.mind.objectives += kill_objective
var/datum/antagonist/traitor/T = new()
T.give_objectives = FALSE
- T.add_objective(kill_objective)
to_chat(newtraitormind, "ATTENTION: It is time to pay your debt to the Syndicate...")
to_chat(newtraitormind, "Goal: KILL [H.real_name], currently in [get_area(H.loc)]")
newtraitormind.add_antag_datum(T)
diff --git a/code/modules/antagonists/traitor/datum_mindslave.dm b/code/modules/antagonists/traitor/datum_mindslave.dm
index ae728b95773..c96b2182d9e 100644
--- a/code/modules/antagonists/traitor/datum_mindslave.dm
+++ b/code/modules/antagonists/traitor/datum_mindslave.dm
@@ -7,8 +7,9 @@
var/special_role = ROLE_MINDSLAVE
/datum/antagonist/mindslave/on_gain()
- // Handling mindslave objectives on top of other antag objective sucks, so Im just gonna do it like this
- to_chat(owner.current, "New Objective: [objectives[objectives.len].explanation_text]")
+ owner.special_role = special_role
+ // Will print the most recent objective which is probably going the mindslave objective
+ to_chat(owner.current, "New Objective: [owner.objectives[owner.objectives.len].explanation_text]")
update_mindslave_icons_added()
/datum/antagonist/mindslave/on_removal()
@@ -37,10 +38,10 @@
slave_mob.mutations.Add(CLUMSY)
/datum/antagonist/mindslave/proc/add_objective(datum/objective/O)
- objectives += O
+ owner.objectives += O
/datum/antagonist/mindslave/proc/remove_objective(datum/objective/O)
- objectives -= O
+ owner.objectives -= O
/datum/antagonist/mindslave/proc/update_mindslave_icons_added()
var/datum/atom_hud/antag/traitorhud = huds[ANTAG_HUD_TRAITOR]