diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm
index c765c669dd..60015e8427 100644
--- a/code/game/dna/dna2.dm
+++ b/code/game/dna/dna2.dm
@@ -118,6 +118,10 @@ var/global/list/datum/dna/gene/dna_genes[0]
var/base_species = "Human"
var/list/species_traits = list()
var/blood_color = "#A10808"
+ var/custom_say
+ var/custom_ask
+ var/custom_whisper
+ var/custom_exclaim
// VOREStation
// New stuff
@@ -139,6 +143,10 @@ var/global/list/datum/dna/gene/dna_genes[0]
new_dna.custom_species=custom_species //VOREStaton Edit
new_dna.species_traits=species_traits.Copy() //VOREStation Edit
new_dna.blood_color=blood_color //VOREStation Edit
+ new_dna.custom_say=custom_say //VOREStaton Edit
+ new_dna.custom_ask=custom_ask //VOREStaton Edit
+ new_dna.custom_whisper=custom_whisper //VOREStaton Edit
+ new_dna.custom_exclaim=custom_exclaim //VOREStaton Edit
for(var/b=1;b<=DNA_SE_LENGTH;b++)
new_dna.SE[b]=SE[b]
if(b<=DNA_UI_LENGTH)
@@ -205,6 +213,10 @@ var/global/list/datum/dna/gene/dna_genes[0]
src.base_species = character.species.base_species
src.blood_color = character.species.blood_color
src.species_traits = character.species.traits.Copy()
+ src.custom_say = character.custom_say
+ src.custom_ask = character.custom_ask
+ src.custom_whisper = character.custom_whisper
+ src.custom_exclaim = character.custom_exclaim
// +1 to account for the none-of-the-above possibility
SetUIValueRange(DNA_UI_EAR_STYLE, ear_style + 1, ear_styles_list.len + 1, 1)
diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm
index 758f74d873..d250c441ad 100644
--- a/code/game/dna/dna2_helpers.dm
+++ b/code/game/dna/dna2_helpers.dm
@@ -237,6 +237,10 @@
// Technically custom_species is not part of the UI, but this place avoids merge problems.
H.custom_species = dna.custom_species
+ H.custom_say = dna.custom_say
+ H.custom_ask = dna.custom_ask
+ H.custom_whisper = dna.custom_whisper
+ H.custom_exclaim = dna.custom_exclaim
H.species.blood_color = dna.blood_color
var/datum/species/S = H.species
S.produceCopy(dna.base_species,dna.species_traits,src)
diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm
index 7a2d7e6099..04ee5a32ed 100644
--- a/code/modules/client/preference_setup/vore/07_traits.dm
+++ b/code/modules/client/preference_setup/vore/07_traits.dm
@@ -10,6 +10,11 @@
var/custom_base // What to base the custom species on
var/blood_color = "#A10808"
+ var/custom_say = null
+ var/custom_whisper = null
+ var/custom_ask = null
+ var/custom_exclaim = null
+
var/list/pos_traits = list() // What traits they've selected for their custom species
var/list/neu_traits = list()
var/list/neg_traits = list()
@@ -33,9 +38,14 @@
S["neg_traits"] >> pref.neg_traits
S["blood_color"] >> pref.blood_color
- S["traits_cheating"]>> pref.traits_cheating
+ S["traits_cheating"] >> pref.traits_cheating
S["max_traits"] >> pref.max_traits
S["trait_points"] >> pref.starting_trait_points
+
+ S["custom_say"] >> pref.custom_say
+ S["custom_whisper"] >> pref.custom_whisper
+ S["custom_ask"] >> pref.custom_ask
+ S["custom_exclaim"] >> pref.custom_exclaim
/datum/category_item/player_setup_item/vore/traits/save_character(var/savefile/S)
S["custom_species"] << pref.custom_species
@@ -45,9 +55,14 @@
S["neg_traits"] << pref.neg_traits
S["blood_color"] << pref.blood_color
- S["traits_cheating"]<< pref.traits_cheating
+ S["traits_cheating"] << pref.traits_cheating
S["max_traits"] << pref.max_traits
S["trait_points"] << pref.starting_trait_points
+
+ S["custom_say"] << pref.custom_say
+ S["custom_whisper"] << pref.custom_whisper
+ S["custom_ask"] << pref.custom_ask
+ S["custom_exclaim"] << pref.custom_exclaim
/datum/category_item/player_setup_item/vore/traits/sanitize_character()
if(!pref.pos_traits) pref.pos_traits = list()
@@ -86,6 +101,10 @@
/datum/category_item/player_setup_item/vore/traits/copy_to_mob(var/mob/living/carbon/human/character)
character.custom_species = pref.custom_species
+ character.custom_say = pref.custom_say
+ character.custom_ask = pref.custom_ask
+ character.custom_whisper = pref.custom_whisper
+ character.custom_exclaim = pref.custom_exclaim
if(character.isSynthetic()) //Checking if we have a synth on our hands, boys.
pref.dirty_synth = 1
@@ -159,6 +178,16 @@
. += "Blood Color: " //People that want to use a certain species to have that species traits (xenochimera/promethean/spider) should be able to set their own blood color.
. += "Set Color"
. += "R
"
+ . += "
"
+
+ . += "Custom Say: "
+ . += "Set Say Verb
"
+ . += "Custom Whisper: "
+ . += "Set Whisper Verb
"
+ . += "Custom Ask: "
+ . += "Set Ask Verb
"
+ . += "Custom Exclaim: "
+ . += "Set Exclaim Verb
"
/datum/category_item/player_setup_item/vore/traits/OnTopic(var/href,var/list/href_list, var/mob/user)
if(!CanUseTopic(user))
@@ -222,6 +251,30 @@
pref.neg_traits -= trait
return TOPIC_REFRESH
+ else if(href_list["custom_say"])
+ var/say_choice = sanitize(input(usr, "This word or phrase will appear instead of 'says': [pref.real_name] says, \"Hi.\"", "Custom Say", pref.custom_say) as null|text, 12)
+ if(say_choice)
+ pref.custom_say = say_choice
+ return TOPIC_REFRESH
+
+ else if(href_list["custom_whisper"])
+ var/whisper_choice = sanitize(input(usr, "This word or phrase will appear instead of 'whispers': [pref.real_name] whispers, \"Hi...\"", "Custom Whisper", pref.custom_whisper) as null|text, 12)
+ if(whisper_choice)
+ pref.custom_whisper = whisper_choice
+ return TOPIC_REFRESH
+
+ else if(href_list["custom_ask"])
+ var/ask_choice = sanitize(input(usr, "This word or phrase will appear instead of 'asks': [pref.real_name] asks, \"Hi?\"", "Custom Ask", pref.custom_ask) as null|text, 12)
+ if(ask_choice)
+ pref.custom_ask = ask_choice
+ return TOPIC_REFRESH
+
+ else if(href_list["custom_exclaim"])
+ var/exclaim_choice = sanitize(input(usr, "This word or phrase will appear instead of 'exclaims', 'shouts' or 'yells': [pref.real_name] exclaims, \"Hi!\"", "Custom Exclaim", pref.custom_exclaim) as null|text, 12)
+ if(exclaim_choice)
+ pref.custom_exclaim = exclaim_choice
+ return TOPIC_REFRESH
+
else if(href_list["add_trait"])
var/mode = text2num(href_list["add_trait"])
var/list/picklist