diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index c058e2ff5d..bee722f1b4 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -61,10 +61,13 @@
//put this here for easier tracking ingame
var/datum/money_account/initial_account
-
+
//used for antag tcrystal trading, more info in code\game\objects\items\telecrystals.dm
var/accept_tcrystals = 0
+ //used for optional self-objectives that antagonists can give themselves, which are displayed at the end of the round.
+ var/ambitions
+
/datum/mind/New(var/key)
src.key = key
@@ -147,7 +150,7 @@
if(href_list["add_antagonist"])
var/datum/antagonist/antag = all_antag_types[href_list["add_antagonist"]]
- if(antag)
+ if(antag)
if(antag.add_antagonist(src, 1, 1, 0, 1, 1)) // Ignore equipment and role type for this.
log_admin("[key_name_admin(usr)] made [key_name(src)] into a [antag.role_text].")
else
diff --git a/code/game/antagonist/antagonist_create.dm b/code/game/antagonist/antagonist_create.dm
index 65c7a080cd..5d1663b8dd 100644
--- a/code/game/antagonist/antagonist_create.dm
+++ b/code/game/antagonist/antagonist_create.dm
@@ -105,6 +105,11 @@
show_objectives(player)
+ player.current << "Once you decide on a goal to pursue, you can optionally display it to \
+ everyone at the end of the shift with the Set Ambition verb, located in the IC tab. You can change this at any time, \
+ and it otherwise has no bearing on your round."
+ player.current.verbs |= /mob/living/proc/write_ambition
+
// Clown clumsiness check, I guess downstream might use it.
if (player.current.mind)
if (player.current.mind.assigned_role == "Clown")
diff --git a/code/game/antagonist/antagonist_objectives.dm b/code/game/antagonist/antagonist_objectives.dm
index f9b3f8116b..b47bab2fe5 100644
--- a/code/game/antagonist/antagonist_objectives.dm
+++ b/code/game/antagonist/antagonist_objectives.dm
@@ -30,3 +30,21 @@
world << "[loss_text]"
if(loss_feedback_tag) feedback_set_details("round_end_result","[loss_feedback_tag]")
+/mob/living/proc/write_ambition()
+ set name = "Set Ambition"
+ set category = "IC"
+ set src = usr
+
+ if(!mind)
+ return
+ if(!src.mind.special_role)
+ src << "While you may perhaps have goals, this verb's meant to only be visible \
+ to antagonists. Please make a bug report!"
+ return
+ var/new_ambitions = input(src, "Write a short sentence of what your character hopes to accomplish \
+ today as an antagonist. Remember that this is purely optional. It will be shown at the end of the \
+ round for everybody else.", "Ambitions", mind.ambitions) as null|message
+ new_ambitions = sanitize(new_ambitions)
+ if(new_ambitions)
+ mind.ambitions = new_ambitions
+ src << "You've set your goal to be '[new_ambitions]'."
diff --git a/code/game/antagonist/antagonist_print.dm b/code/game/antagonist/antagonist_print.dm
index ea107824d5..62f9eabbd1 100644
--- a/code/game/antagonist/antagonist_print.dm
+++ b/code/game/antagonist/antagonist_print.dm
@@ -7,6 +7,9 @@
for(var/datum/mind/P in current_antagonists)
text += print_player_full(P)
text += get_special_objective_text(P)
+ if(P.ambitions)
+ text += "
Their goals for today were..."
+ text += "
[P.ambitions]"
if(!global_objectives.len && P.objectives && P.objectives.len)
var/failed
var/num = 1