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,