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]