diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index cf5e0f7db1..aeca31ebd2 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -408,9 +408,3 @@ /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 c25f5d5199..464ea37d02 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -471,8 +471,7 @@ /datum/objective/nuclear, /datum/objective/capture, /datum/objective/absorb, - /datum/objective/custom, - /datum/objective/flavor/traitor + /datum/objective/custom ) for(var/T in allowed_types) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 5b3e6a1164..11933c2717 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -1070,15 +1070,36 @@ GLOBAL_LIST_EMPTY(possible_sabotages) /datum/objective/flavor name = "flavor" completable = FALSE + var/flavor_file -/datum/objective/flavor/New() - ..() - forge_objective() +/datum/objective/flavor/proc/get_flavor_list() + return world.file2list(flavor_file) /datum/objective/flavor/proc/forge_objective() + var/flavor_list = get_flavor_list() + explanation_text = pick(flavor_list) /datum/objective/flavor/traitor name = "traitor flavor" + flavor_file = "strings/flavor_objectives/traitor.txt" -/datum/objective/flavor/traitor/forge_objective() - explanation_text = pickweight(CONFIG_GET(keyed_list/flavor_objective_traitor)) +/datum/objective/flavor/traitor/get_flavor_list() + . = ..() + switch(owner.assigned_role) + if("Station Engineer", "Atmospheric Technician") + . += world.file2list("strings/flavor_objectives/traitor/engineering.txt") + if("Medical Doctor","Chemist","Virologist","Geneticist") + . += world.file2list("strings/flavor_objectives/traitor/medical.txt") + if("Scientist","Roboticist","Geneticist") + . += world.file2list("strings/flavor_objectives/traitor/science.txt") + if("Assistant") + . += world.file2list("strings/flavor_objectives/traitor/assistant.txt") + +/datum/objective/flavor/ninja_helping + flavor_file = "strings/flavor_objectives/ninja_helping.txt" + +/datum/objective/flavor/ninja_syndie + flavor_file = "strings/flavor_objectives/ninja_syndie.txt" + +/datum/objective/flavor/wizard + flavor_file = "strings/flavor_objectives/wizard.txt" diff --git a/code/modules/antagonists/ninja/ninja.dm b/code/modules/antagonists/ninja/ninja.dm index 52e13bdc69..fe83e2fb2b 100644 --- a/code/modules/antagonists/ninja/ninja.dm +++ b/code/modules/antagonists/ninja/ninja.dm @@ -73,23 +73,16 @@ O.target = M O.explanation_text = "Protect \the [M.current.real_name], the [M.assigned_role], from harm." objectives += O - if(4) //debrain/capture - if(!possible_targets.len) continue - var/selected = rand(1,possible_targets.len) - var/datum/mind/M = possible_targets[selected] - var/is_bad_guy = possible_targets[M] - possible_targets.Cut(selected,selected+1) - - if(is_bad_guy ^ helping_station) //debrain (good-ninja + bad-guy or bad-ninja + good-guy) - var/datum/objective/debrain/O = new /datum/objective/debrain() + if(4) //flavor + if(helping_station) + var/datum/objective/flavor/ninja_helping/O = new /datum/objective/flavor/ninja_helping O.owner = owner - O.target = M - O.explanation_text = "Steal the brain of [M.current.real_name]." + O.forge_objective() objectives += O - else //capture - var/datum/objective/capture/O = new /datum/objective/capture() + else + var/datum/objective/flavor/ninja_syndie/O = new /datum/objective/flavor/ninja_helping O.owner = owner - O.gen_amount_goal() + O.forge_objective() objectives += O else break diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index e0044d8c23..3385991116 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -215,6 +215,7 @@ 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/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm index d89d6a2744..cc3cde79e4 100644 --- a/code/modules/antagonists/wizard/wizard.dm +++ b/code/modules/antagonists/wizard/wizard.dm @@ -61,9 +61,9 @@ owner.current.forceMove(pick(GLOB.wizardstart)) /datum/antagonist/wizard/proc/create_objectives() - var/datum/objective/new_objective = new("Cause as much creative mayhem as you can aboard the station! The more outlandish your methods of achieving this, the better! Make sure there's a decent amount of crew alive to tell of your tale.") - new_objective.completable = FALSE + var/datum/objective/flavor/wizard/new_objective = new new_objective.owner = owner + new_objective.forge_objective() objectives += new_objective if (!(locate(/datum/objective/escape) in objectives)) @@ -94,6 +94,7 @@ to_chat(owner, "You are the Space Wizard!") to_chat(owner, "The Space Wizards Federation has given you the following tasks:") owner.announce_objectives() + to_chat(owner, "These are merely guidelines! The federation are your masters, but you forge your own path!") to_chat(owner, "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.") to_chat(owner, "The spellbook is bound to you, and others cannot use it.") to_chat(owner, "In your pockets you will find a teleport scroll. Use it as needed.") diff --git a/config/game_options.txt b/config/game_options.txt index 5d1f871058..b8b89de17c 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -597,14 +597,3 @@ 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 diff --git a/strings/flavor_objectives/ninja_helping.txt b/strings/flavor_objectives/ninja_helping.txt new file mode 100644 index 0000000000..1280939b5c --- /dev/null +++ b/strings/flavor_objectives/ninja_helping.txt @@ -0,0 +1,6 @@ +Nanotrasen want to make sure that their employees are on the up-and-up. Try to find any blackmail you can. +Increase productivity however you can. +You are a security ninja. Answer to the Head of Security, and follow space law. +You are a cargo ninja. Answer to the Quartermaster, and do what they say. +Nanotrasen want you to ensure maximum morale. Protect the members of the crew who are on break. +Ensure that all the paperwork is being done. \ No newline at end of file diff --git a/strings/flavor_objectives/ninja_syndie.txt b/strings/flavor_objectives/ninja_syndie.txt new file mode 100644 index 0000000000..4527c693f4 --- /dev/null +++ b/strings/flavor_objectives/ninja_syndie.txt @@ -0,0 +1,5 @@ +The Gorlex Marauders want you to teach the heads of staff a lesson they will never forget. +Waffle Co. wants 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! +The Tiger Cooperative want you to kill one of the station's beloved pets. Make a show of it, though you don't have to reveal yourself. +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. +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. \ No newline at end of file diff --git a/strings/flavor_objectives/traitor.txt b/strings/flavor_objectives/traitor.txt new file mode 100644 index 0000000000..fcbbc588e9 --- /dev/null +++ b/strings/flavor_objectives/traitor.txt @@ -0,0 +1,9 @@ +The Gorlex Marauders want you to teach the heads of staff a lesson they will never forget. +Show Nanotrasen the utility of a 40% oxygen atmosphere. +Waffle Co. wants 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! +Kill one of the station's beloved pets. Make a show of it, though you don't have to reveal yourself. +The Tiger Cooperative want you to get their illegal technology spread through the station. +The Animal Rights Consortium want you to channel your inner rat. Cut wires throughout the station. +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. +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. +The Gorlex Marauders want you to steal as many shoes as possible. Lay broken glass everywhere. \ No newline at end of file diff --git a/strings/flavor_objectives/traitor/assistant.txt b/strings/flavor_objectives/traitor/assistant.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/strings/flavor_objectives/traitor/engineering.txt b/strings/flavor_objectives/traitor/engineering.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/strings/flavor_objectives/traitor/medical.txt b/strings/flavor_objectives/traitor/medical.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/strings/flavor_objectives/traitor/science.txt b/strings/flavor_objectives/traitor/science.txt new file mode 100644 index 0000000000..6367e78da2 --- /dev/null +++ b/strings/flavor_objectives/traitor/science.txt @@ -0,0 +1 @@ +The Tiger Cooperative want you to slow down the process of research as much as possible. \ No newline at end of file diff --git a/strings/flavor_objectives/wizard.txt b/strings/flavor_objectives/wizard.txt new file mode 100644 index 0000000000..e65a6052bc --- /dev/null +++ b/strings/flavor_objectives/wizard.txt @@ -0,0 +1,4 @@ +Cause as much creative mayhem as you can aboard the station! The more outlandish your methods of achieving this, the better! Make sure there's a decent amount of crew alive to tell of your tale. +The Wizard Federation have sent you to take over the station by force. Kill the captain and take their place. The magocracy starts now. +You are the slipperiest wizard there ever was. Be loud, cause a ruckus, start a manhunt, and keep it going for as long as you can. +The crew must be shown the wonders of magic. Do some tricks for them. If they stop moving, that means they're in awe. \ No newline at end of file