diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index a80af293bd4..bc87275800b 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -291,7 +291,7 @@
if (!steal.select_target())
return
- if("download","capture","absorb")
+ if("download","capture","absorb", "vore")
var/def_num
if(objective&&objective.type==text2path("/datum/objective/[new_obj_type]"))
def_num = objective.target_amount
@@ -310,6 +310,9 @@
if("absorb")
new_objective = new /datum/objective/absorb
new_objective.explanation_text = "Absorb [target_number] compatible genomes."
+ if("vore")
+ new_objective = new /datum/objective/vore
+ new_objective.explanation_text = "Devour [target_number] [target_number == 1 ? "person" : "people"]. What happens to them after you do that is irrelevant."
new_objective.owner = src
new_objective.target_amount = target_number
diff --git a/code/datums/mind_vr.dm b/code/datums/mind_vr.dm
index d2ae478410f..a6758ca229c 100644
--- a/code/datums/mind_vr.dm
+++ b/code/datums/mind_vr.dm
@@ -4,6 +4,7 @@
var/directory_tag
var/directory_erptag
var/directory_ad
+ var/vore_prey_eaten = 0
/mob/living/mind_initialize()
. = ..()
diff --git a/code/game/antagonist/antagonist_print.dm b/code/game/antagonist/antagonist_print.dm
index 99216b9ef55..16fa6176dfd 100644
--- a/code/game/antagonist/antagonist_print.dm
+++ b/code/game/antagonist/antagonist_print.dm
@@ -23,10 +23,10 @@
feedback_add_details(feedback_tag,"[O.type]|FAIL")
failed = TRUE
num++
- if(failed)
- text += "
The [role_text] has failed."
- else
- text += "
The [role_text] was successful!"
+ if(failed)
+ text += "
The [role_text] has failed."
+ else
+ text += "
The [role_text] was successful!"
if(global_objectives && global_objectives.len)
text += "
Their objectives were:"
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 2818e3e7b4d..53e6c61304b 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -627,6 +627,12 @@ var/global/list/all_objectives = list()
else
return 0
+/datum/objective/vore/check_completion()
+ if(owner && owner.vore_prey_eaten >= target_amount)
+ return 1
+ else
+ return 0
+
// Heist objectives.
/datum/objective/heist/proc/choose_target()
return
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 060ac056541..2ae59893136 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -498,6 +498,8 @@
if(prey.ckey)
GLOB.prey_eaten_roundstat++
+ if(owner.mind)
+ owner.mind.vore_prey_eaten++
// Get the line that should show up in Examine message if the owner of this belly
// is examined. By making this a proc, we not only take advantage of polymorphism,