diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index aeca31ebd2..cf5e0f7db1 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -408,3 +408,9 @@ /datum/config_entry/number/dropped_modes config_entry_value = 3 + +/datum/config_entry/keyed_list/flavor_objective_traitor + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + splitter = "=" + lowercase = FALSE diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 464ea37d02..c25f5d5199 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -471,7 +471,8 @@ /datum/objective/nuclear, /datum/objective/capture, /datum/objective/absorb, - /datum/objective/custom + /datum/objective/custom, + /datum/objective/flavor/traitor ) for(var/T in allowed_types) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index bd8baf17db..5b3e6a1164 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -989,25 +989,25 @@ GLOBAL_LIST_EMPTY(possible_items_special) command_staff_only = TRUE -/datum/objective/horde - name = "horde" - var/obj/item/horded_item = null +/datum/objective/hoard + name = "hoard" + var/obj/item/hoarded_item = null -/datum/objective/horde/get_target() - return horded_item +/datum/objective/hoard/get_target() + return hoarded_item -/datum/objective/horde/proc/set_target(obj/item/I) +/datum/objective/hoard/proc/set_target(obj/item/I) if(I) - horded_item = I + hoarded_item = I explanation_text = "Keep [I] on your person at all costs." - return horded_item + return hoarded_item else explanation_text = "Free objective" return -/datum/objective/horde/check_completion() +/datum/objective/hoard/check_completion() var/list/datum/mind/owners = get_owners() - if(!horded_item) + if(!hoarded_item) return TRUE for(var/datum/mind/M in owners) if(!isliving(M.current)) @@ -1016,14 +1016,14 @@ GLOBAL_LIST_EMPTY(possible_items_special) var/list/all_items = M.current.GetAllContents() //this should get things in cheesewheels, books, etc. for(var/obj/I in all_items) //Check for items - if(I == horded_item) + if(I == hoarded_item) return TRUE return FALSE -/datum/objective/horde/heirloom +/datum/objective/hoard/heirloom name = "steal heirloom" -/datum/objective/horde/heirloom/find_target() +/datum/objective/hoard/heirloom/find_target() set_target(pick(GLOB.family_heirlooms)) GLOBAL_LIST_EMPTY(possible_sabotages) @@ -1068,21 +1068,17 @@ GLOBAL_LIST_EMPTY(possible_sabotages) return targetinfo.check_conditions() /datum/objective/flavor - name = "Flavor" + name = "flavor" completable = FALSE +/datum/objective/flavor/New() + ..() + forge_objective() + /datum/objective/flavor/proc/forge_objective() +/datum/objective/flavor/traitor + name = "traitor flavor" + /datum/objective/flavor/traitor/forge_objective() - explanation_text = pickweight( - "Teach the heads of staff a lesson they will never forget." = 1, - "Show Nanotrasen the utility of a pure oxygen atmosphere." = 2, - "Waffle Co. wants you! That’s right, YOU! To cause as much humorous terrorism against Nanotrasen as possible! How? We don’t care as long as it’s entertaining! Be as creative and exciting as possible when carrying out your dirty deeds. Have fun!" = 1, - "Kill one of the station's beloved pets. Make a show of it, though you don't have to reveal yourself." = 3, - "Get illegal technology spread through the station." = 3, - "Slow down the process of research as much as possible." = (owner.assigned_role in list("Research Director", "Scientist", "Roboticist") ? 6 : 0), - "Channel your inner rat. Cut wires throughout the station." = (owner.assigned_role in list("Station Engineer", "Atmos Technician", "Assistant") ? 6 : 0), - "The Animal Rights Consortium needs you to save the innocent non-humanoid creatures aboard Citadel Station by any means necessary. Use your best judgement to decide whether an animal or xenobiological is abused, but if they are, ensure the abuser is punished. Avoid killing too many people if possible, and if you do harm any creatures, you will be terminated upon extraction." = 2, - "Donk Co. wants ransom money, and you are going to get it. Your goal is to kidnap and crewmember you can get your hands on and hold them hostage until you get something of significant value. Try to work out the best deal you can. Remember that Higher Value Targets are generally going to get a better deal so try to prioritize heads of staff if possible. We do not approve of mindless killing of Nanotrasen employees, so don’t do it." = 1, - "Steal as many shoes as possible. Lay broken glass everywhere." = 2 - ) + explanation_text = pickweight(CONFIG_GET(keyed_list/flavor_objective_traitor)) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 3385991116..e0044d8c23 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -215,7 +215,6 @@ else var/datum/objective/flavor/traitor/flavor_objective = new flavor_objective.owner = owner - flavor_objective.forge_objective() add_objective(flavor_objective) /datum/antagonist/traitor/proc/forge_single_AI_objective() diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index 996e2e3168..ea131fb996 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -104,7 +104,7 @@ GLOBAL_VAR_INIT(summon_magic_triggered, FALSE) G.unlock() var/datum/antagonist/survivalist/guns/our_antag_datum = H.mind.has_antag_datum(/datum/antagonist/survivalist/guns) if(our_antag_datum) - var/datum/objective/horde/O = new() + var/datum/objective/hoard/O = new() O.owner = H O.set_target(G) our_antag_datum.objectives += O @@ -136,7 +136,7 @@ GLOBAL_VAR_INIT(summon_magic_triggered, FALSE) var/datum/antagonist/survivalist/magic/our_antag_datum = H.mind.has_antag_datum(/datum/antagonist/survivalist/magic) if(istype(our_antag_datum)) - var/datum/objective/horde/O = new() + var/datum/objective/hoard/O = new() O.owner = H O.set_target(M) our_antag_datum.objectives += O diff --git a/config/game_options.txt b/config/game_options.txt index b8b89de17c..5d1f871058 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -597,3 +597,14 @@ MODETIER_VOTING ## Number of modes dropped by the modetier vote during mode selection, after vote. DROPPED_MODES 3 + +FLAVOR_OBJECTIVE_TRAITOR Teach the heads of staff a lesson they will never forget.=1 +FLAVOR_OBJECTIVE_TRAITOR Show Nanotrasen the utility of a pure oxygen atmosphere.=2 +FLAVOR_OBJECTIVE_TRAITOR Waffle Co. wants you! That’s right, YOU! To cause as much humorous terrorism against Nanotrasen as possible! How? We don’t care as long as it’s entertaining! Be as creative and exciting as possible when carrying out your dirty deeds. Have fun!=1 +FLAVOR_OBJECTIVE_TRAITOR Kill one of the station's beloved pets. Make a show of it, though you don't have to reveal yourself.=3 +FLAVOR_OBJECTIVE_TRAITOR Get illegal technology spread through the station.=3 +FLAVOR_OBJECTIVE_TRAITOR Slow down the process of research as much as possible." = (owner.assigned_role in list("Research Director", "Scientist", "Roboticist") ? 6 : 0), +FLAVOR_OBJECTIVE_TRAITOR Channel your inner rat. Cut wires throughout the station." = (owner.assigned_role in list("Station Engineer", "Atmos Technician", "Assistant") ? 6 : 0), +FLAVOR_OBJECTIVE_TRAITOR The Animal Rights Consortium needs you to save the innocent non-humanoid creatures aboard Citadel Station by any means necessary. Use your best judgement to decide whether an animal or xenobiological is abused, but if they are, ensure the abuser is punished. Avoid killing too many people if possible, and if you do harm any creatures, you will be terminated upon extraction.=2 +FLAVOR_OBJECTIVE_TRAITOR Donk Co. wants ransom money, and you are going to get it. Your goal is to kidnap and crewmember you can get your hands on and hold them hostage until you get something of significant value. Try to work out the best deal you can. Remember that Higher Value Targets are generally going to get a better deal so try to prioritize heads of staff if possible. We do not approve of mindless killing of Nanotrasen employees, so don’t do it.=1 +FLAVOR_OBJECTIVE_TRAITOR Steal as many shoes as possible. Lay broken glass everywhere." = 2