diff --git a/apollo.dme b/apollo.dme
index 0ad8ca6925..4251292bdd 100644
--- a/apollo.dme
+++ b/apollo.dme
@@ -1195,12 +1195,16 @@
#include "code\modules\mob\living\carbon\human\species\species.dm"
#include "code\modules\mob\living\carbon\human\species\species_attack.dm"
#include "code\modules\mob\living\carbon\human\species\species_hud.dm"
+#include "code\modules\mob\living\carbon\human\species\species_sounds.dm"
#include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm"
#include "code\modules\mob\living\carbon\human\species\outsider\vox.dm"
#include "code\modules\mob\living\carbon\human\species\station\golem.dm"
#include "code\modules\mob\living\carbon\human\species\station\monkey.dm"
#include "code\modules\mob\living\carbon\human\species\station\slime.dm"
#include "code\modules\mob\living\carbon\human\species\station\station.dm"
+#include "code\modules\mob\living\carbon\human\species\station\sounds\human.dm"
+#include "code\modules\mob\living\carbon\human\species\station\sounds\monkey.dm"
+#include "code\modules\mob\living\carbon\human\species\station\sounds\robot.dm"
#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_embryo.dm"
#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_facehugger.dm"
#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_powers.dm"
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 6c35714b5a..229bee01ee 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -172,20 +172,9 @@
m_type = 1
else
if (!muzzled)
- var/scream_sound
-
- if( gender == "male" )
- scream_sound = pick(\
- 'sound/voice/cough01_man.ogg',
- 'sound/voice/cough02_man.ogg',
- 'sound/voice/cough03_man.ogg')
- else if( gender == "female" )
- scream_sound = pick(\
- 'sound/voice/cough01_woman.ogg',
- 'sound/voice/cough02_woman.ogg',
- 'sound/voice/cough03_woman.ogg')
-
- playsound(loc, scream_sound, 80, 1)
+ var/emote_sound = species.voice_sounds.getCough( gender )
+ if( emote_sound )
+ playsound(loc, emote_sound, 8, species.mod_sound )
message = "[src] coughs!"
m_type = 2
@@ -220,21 +209,11 @@
else
if (!muzzled)
message = "[src] gasps!"
- var/gasp_sound = null
- if( istype( type, /mob/living/silicon ) || get_species() == "Machine" )
- gasp_sound = 'sound/voice/rscream1.ogg'
- message = "[src] plays gasp.ogg"
- else
- if( gender == "male" )
- gasp_sound = pick(\
- 'sound/voice/gasp01_male.ogg',
- 'sound/voice/gasp02_male.ogg' )
- else if( gender == "female" )
- gasp_sound = pick(\
- 'sound/voice/gasp01_female.ogg',
- 'sound/voice/gasp02_female.ogg' )
- if( gasp_sound )
- playsound(loc, gasp_sound, 50, 1)
+
+ var/emote_sound = species.voice_sounds.getGasp( gender )
+ if( emote_sound )
+ playsound(loc, emote_sound, 80, species.mod_sound )
+
m_type = 2
else
message = "[src] makes a weak noise."
@@ -570,21 +549,14 @@
else
if (!muzzled)
message = "[src] screams!"
- var/scream_sound
+
+ var/emote_sound = species.voice_sounds.getScream( gender )
+ if( emote_sound )
+ playsound(loc, emote_sound, 80, species.mod_sound )
if( istype( type, /mob/living/silicon ) || get_species() == "Machine" )
- scream_sound = 'sound/voice/rscream1.ogg'
- message = "[src] plays scream.ogg"
- else
- if( gender == "male" )
- scream_sound = pick(\
- 'sound/voice/mscream1.ogg',
- 'sound/voice/mscream2.ogg',
- 'sound/voice/mscream3.ogg')
- else if( gender == "female" )
- scream_sound = 'sound/voice/wscream1.ogg'
-
- playsound(loc, scream_sound, 80, 1)
+ message = "[src] plays scream.mp3"
+
m_type = 2
else
message = "[src] makes a very loud noise."
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 3fd313ef1d..eec90f1edb 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -36,6 +36,8 @@
var/secondary_langs = list() // The names of secondary languages that are available to this species.
var/list/speech_sounds // A list of sounds to potentially play when speaking.
var/list/speech_chance // The likelihood of a speech sound playing.
+ var/datum/species_sounds/voice_sounds = new /datum/species_sounds/human
+ var/mod_sound = 1 // Should the sounds made by this creature be modulated?
// Combat vars.
var/total_health = 100 // Point at which the mob will enter crit.
diff --git a/code/modules/mob/living/carbon/human/species/species_sounds.dm b/code/modules/mob/living/carbon/human/species/species_sounds.dm
new file mode 100644
index 0000000000..ad1a0ae377
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/species_sounds.dm
@@ -0,0 +1,30 @@
+/datum/species_sounds
+ var/list/m_scream = null
+ var/list/f_scream = null
+
+ var/list/m_gasp = null
+ var/list/f_gasp = null
+
+ var/list/m_cough = null
+ var/list/f_cough = null
+
+/datum/species_sounds/proc/getScream( var/gender = null )
+ if( gender == FEMALE && f_scream )
+ return pick( f_scream )
+
+ if( m_scream ) // male screams are default, down with the patriarchy
+ return pick( m_scream )
+
+/datum/species_sounds/proc/getGasp( var/gender = null )
+ if( gender == FEMALE && f_gasp )
+ return pick( f_gasp )
+
+ if( m_gasp )
+ return pick( m_gasp )
+
+/datum/species_sounds/proc/getCough( var/gender = null )
+ if( gender == FEMALE && f_cough )
+ return pick( f_cough )
+
+ if( m_cough )
+ return pick( m_cough )
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm
index dad0eefe2c..b77bc23cab 100644
--- a/code/modules/mob/living/carbon/human/species/station/monkey.dm
+++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm
@@ -21,6 +21,9 @@
death_message = "lets out a faint chimper as it collapses and stops moving..."
tail = "chimptail"
+ voice_sounds = new /datum/species_sounds/monkey
+ mod_sound = 0
+
unarmed_types = list(/datum/unarmed_attack/bite, /datum/unarmed_attack/claws)
inherent_verbs = list(/mob/living/proc/ventcrawl)
hud_type = /datum/hud_data/monkey
diff --git a/code/modules/mob/living/carbon/human/species/station/sounds/human.dm b/code/modules/mob/living/carbon/human/species/station/sounds/human.dm
new file mode 100644
index 0000000000..ffd2dad770
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/station/sounds/human.dm
@@ -0,0 +1,18 @@
+/datum/species_sounds/human
+ m_scream = list( 'sound/voice/mscream1.ogg',
+ 'sound/voice/mscream2.ogg',
+ 'sound/voice/mscream3.ogg' )
+ f_scream = list( 'sound/voice/fscream1.ogg' )
+
+ m_cough = list( 'sound/voice/cough01_man.ogg',
+ 'sound/voice/cough02_man.ogg',
+ 'sound/voice/cough03_man.ogg')
+ f_cough = list( 'sound/voice/cough01_woman.ogg',
+ 'sound/voice/cough02_woman.ogg',
+ 'sound/voice/cough03_woman.ogg')
+
+ m_gasp = list( 'sound/voice/gasp01_male.ogg',
+ 'sound/voice/gasp02_male.ogg' )
+
+ f_gasp = list( 'sound/voice/gasp01_female.ogg',
+ 'sound/voice/gasp02_female.ogg' )
diff --git a/code/modules/mob/living/carbon/human/species/station/sounds/monkey.dm b/code/modules/mob/living/carbon/human/species/station/sounds/monkey.dm
new file mode 100644
index 0000000000..1b25f98d35
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/station/sounds/monkey.dm
@@ -0,0 +1,6 @@
+/datum/species_sounds/monkey
+ m_scream = list( 'sound/voice/monkey/chimpanzee_scream1.ogg' )
+
+ m_gasp = list( 'sound/voice/monkey/chimpanzee_chimper1.ogg',
+ 'sound/voice/monkey/chimpanzee_chimper2.ogg',
+ 'sound/voice/monkey/chimpanzee_whimper1.ogg' )
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/sounds/robot.dm b/code/modules/mob/living/carbon/human/species/station/sounds/robot.dm
new file mode 100644
index 0000000000..8202db28f3
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/station/sounds/robot.dm
@@ -0,0 +1,2 @@
+/datum/species_sounds/robot
+ m_scream = list( 'sound/voice/rscream1.ogg' )
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm
index d92357ee80..926d22301d 100644
--- a/code/modules/mob/living/carbon/human/species/station/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station.dm
@@ -186,6 +186,8 @@
unarmed_types = list(/datum/unarmed_attack/punch)
rarity_value = 2
+ voice_sounds = new /datum/species_sounds/robot
+
eyes = "blank_eyes"
brute_mod = 0.75
burn_mod = 1
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index 09d76bc6df..ba814559a2 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -4,7 +4,9 @@
speak = list("Woof!", "Bark!")
speak_emote = list("barks", "woofs")
+ speak_emote_sound = list("barks" = 'sound/voice/dog/bark1.ogg', "woofs" = 'sound/voice/dog/bark2.ogg')
emote_hear = list("barks", "woofs","pants")
+ emote_hear = list("barks" = 'sound/voice/dog/bark1.ogg', "woofs" = 'sound/voice/dog/bark2.ogg')
emote_see = list("shakes its head", "shivers")
speak_chance = 1
turns_per_move = 10
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index 57e4f1edc8..a940dc43bc 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -7,7 +7,9 @@
icon_dead = "goat_dead"
speak = list("EHEHEHEHEH","eh?")
speak_emote = list("brays")
+ speak_emote_sound = list( "brays" = 'sound/voice/goat/bray1.ogg' )
emote_hear = list("brays")
+ emote_hear_sound = list( "brays" = 'sound/voice/goat/bray1.ogg' )
emote_see = list("shakes its head", "stamps a foot", "glares around")
speak_chance = 1
turns_per_move = 5
@@ -96,7 +98,9 @@
icon_gib = "cow_gib"
speak = list("moo?","moo","MOOOOOO")
speak_emote = list("moos","moos hauntingly")
- emote_hear = list("brays")
+ speak_emote_sound = list( "moos" = 'sound/voice/cow/moo2.ogg', "moos hauntingly" = 'sound/voice/cow/moo1.ogg' )
+ emote_hear = list("moos")
+ emote_hear_sound = list( "moos" = 'sound/voice/cow/moo2.ogg' )
emote_see = list("shakes its head")
speak_chance = 1
turns_per_move = 5
@@ -158,7 +162,9 @@
icon_gib = "chick_gib"
speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
speak_emote = list("cheeps")
+ speak_emote_sound = list( "cheeps" = 'sound/voice/chicken/cheep1.ogg' )
emote_hear = list("cheeps")
+ emote_hear_sound = list( "cheeps" = 'sound/voice/chicken/cheep1.ogg' )
emote_see = list("pecks at the ground","flaps its tiny wings")
speak_chance = 2
turns_per_move = 2
@@ -199,7 +205,9 @@ var/global/chicken_count = 0
icon_dead = "chicken_dead"
speak = list("Cluck!","BWAAAAARK BWAK BWAK BWAK!","Bwaak bwak.")
speak_emote = list("clucks","croons")
+ speak_emote_sound = list( "clucks" = 'sound/voice/chicken/cluck1.ogg', "croons" = 'sound/voice/chicken/croon1.ogg' )
emote_hear = list("clucks")
+ emote_hear_sound = list( "clucks" = 'sound/voice/chicken/cluck1.ogg' )
emote_see = list("pecks at the ground","flaps its wings viciously")
speak_chance = 2
turns_per_move = 3
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index d850546d58..bc006a6d34 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -9,8 +9,10 @@
var/icon_gib = null //We only try to show a gibbing animation if this exists.
var/list/speak = list()
+ var/list/speak_emote_sound = list()
var/speak_chance = 0
var/list/emote_hear = list() //Hearable emotes
+ var/list/emote_hear_sound = list() // Accompanying sounds for hearable emotes
var/list/emote_see = list() //Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps
var/turns_per_move = 1
@@ -120,7 +122,12 @@
if(emote_see && randomValue <= emote_see.len)
visible_emote("[pick(emote_see)].")
else
- audible_emote("[pick(emote_hear)].")
+ var/emoted = pick(emote_hear)
+
+ audible_emote("[emoted].")
+ if( emote_hear_sound["[emoted]"] )
+ playsound(src, emote_hear_sound["[emoted]"], 100)
+
else
say(pick(speak))
else
@@ -374,8 +381,12 @@
if(speak_emote.len)
verb = pick(speak_emote)
+
message = capitalize(trim_left(message))
+ if( speak_emote_sound["[verb]"] )
+ playsound(src, speak_emote_sound["[verb]"], 100)
+
..(message, null, verb, nolog = !ckey) //if the animal has a ckey then it will log the message
/mob/living/simple_animal/put_in_hands(var/obj/item/W) // No hands.
diff --git a/sound/voice/chicken/cheep1.ogg b/sound/voice/chicken/cheep1.ogg
new file mode 100644
index 0000000000..b4d5de4bca
Binary files /dev/null and b/sound/voice/chicken/cheep1.ogg differ
diff --git a/sound/voice/chicken/cluck1.ogg b/sound/voice/chicken/cluck1.ogg
new file mode 100644
index 0000000000..ab8a140bf6
Binary files /dev/null and b/sound/voice/chicken/cluck1.ogg differ
diff --git a/sound/voice/chicken/croon1.ogg b/sound/voice/chicken/croon1.ogg
new file mode 100644
index 0000000000..07f59c1e83
Binary files /dev/null and b/sound/voice/chicken/croon1.ogg differ
diff --git a/sound/voice/cow/moo2.ogg b/sound/voice/cow/moo2.ogg
new file mode 100644
index 0000000000..6051c4f9dc
Binary files /dev/null and b/sound/voice/cow/moo2.ogg differ
diff --git a/sound/voice/wscream1.ogg b/sound/voice/fscream1.ogg
similarity index 100%
rename from sound/voice/wscream1.ogg
rename to sound/voice/fscream1.ogg
diff --git a/sound/voice/goat/bray1.ogg b/sound/voice/goat/bray1.ogg
new file mode 100644
index 0000000000..87a78cb6ec
Binary files /dev/null and b/sound/voice/goat/bray1.ogg differ
diff --git a/sound/voice/monkey/chimpanzee_scream1.ogg b/sound/voice/monkey/chimpanzee_scream1.ogg
index 01f63afd19..fdeb68bf1b 100644
Binary files a/sound/voice/monkey/chimpanzee_scream1.ogg and b/sound/voice/monkey/chimpanzee_scream1.ogg differ