diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 4a0602726a0..9e5854e71a8 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -680,7 +680,7 @@ var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list( "assassinate", "assassinateonce", "blood", "debrain", "protect", "prevent", "hijack", "escape", "survive", "steal", - "nuclear", "absorb", "destroy", "maroon", "identity theft", "custom") + "nuclear", "absorb", "destroy", "maroon", "identity theft", "incriminate", "custom") if(!new_obj_type) return @@ -798,6 +798,9 @@ new_objective.update_explanation_text() var/datum/objective/escape/escape_with_identity/O = new_objective O.target_real_name = new_objective.target.current.real_name + if("incriminate") + new_objective = /datum/objective/incriminate + if("custom") var/expl = sanitize(copytext_char(input("Custom objective:", "Objective", objective ? objective.explanation_text : "") as text|null, 1, MAX_MESSAGE_LEN)) if(!expl) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 503df087e69..45aabf4101a 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -595,6 +595,18 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) var/theft_area var/datum/theft_objective/steal_target +/datum/objective/incriminate + name = "Incriminate" + martyr_compatible = TRUE + delayed_objective_text = "Your objective is to incriminate a crew member for a major level crime without revealing yourself. You will receive further information in a few minutes." + completed = TRUE + +/datum/objective/incriminate/update_explanation_text() + if(target?.current) + explanation_text = "Deceive the station. Incriminate [target.current.real_name], the [target.assigned_role] for a major level crime and ensure that you are not revealed as the perpetrator." + else + explanation_text = "Free Objective" + /datum/objective/steal/found_target() return steal_target diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index 4592d214f52..aea1088d048 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -429,6 +429,7 @@ GLOBAL_LIST_EMPTY(antagonists) #define KILL_OBJECTIVE "KILL" #define THEFT_OBJECTIVE "STEAL" +#define INCRIMINATE_OBJECTIVE "INCRIMINATE" #define DESTROY_OBJECTIVE "DESTROY" #define DEBRAIN_OBJECTIVE "DEBRAIN" @@ -445,7 +446,7 @@ GLOBAL_LIST_EMPTY(antagonists) */ /datum/antagonist/proc/forge_single_human_objective() var/datum/objective/objective_to_add - var/list/static/the_objective_list = list(KILL_OBJECTIVE = 50, THEFT_OBJECTIVE = 50) + var/list/static/the_objective_list = list(KILL_OBJECTIVE = 50, THEFT_OBJECTIVE = 45, INCRIMINATE_OBJECTIVE = 5) var/list/the_nonstatic_kill_list = list(DEBRAIN_OBJECTIVE = 50, MAROON_OBJECTIVE = 285, ASS_ONCE_OBJECTIVE = 199, ASS_OBJECTIVE = 466) // If our org has an objectives list, give one to us if we pass a roll on the org's focus @@ -475,6 +476,8 @@ GLOBAL_LIST_EMPTY(antagonists) objective_to_add = /datum/objective/assassinate if(THEFT_OBJECTIVE) objective_to_add = /datum/objective/steal + if(INCRIMINATE_OBJECTIVE) + objective_to_add = /datum/objective/incriminate if(delayed_objectives) objective_to_add = new /datum/objective/delayed(objective_to_add) @@ -482,6 +485,7 @@ GLOBAL_LIST_EMPTY(antagonists) #undef KILL_OBJECTIVE #undef THEFT_OBJECTIVE +#undef INCRIMINATE_OBJECTIVE #undef DESTROY_OBJECTIVE #undef DEBRAIN_OBJECTIVE