diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 7df102efa3b..4df7cba9861 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -264,3 +264,4 @@ GLOBAL_LIST_INIT(announcer_keys, list( #define SFX_PLASTIC_BOTTLE_LIQUID_SLOSH "plastic_bottle_liquid_slosh" #define SFX_DEFAULT_LIQUID_SLOSH "default_liquid_slosh" #define SFX_PLATE_ARMOR_RUSTLE "plate_armor_rustle" +#define SFX_PIG_OINK "pig_oink" diff --git a/code/datums/elements/pet_bonus.dm b/code/datums/elements/pet_bonus.dm index a802c363f44..d809b9ef4bd 100644 --- a/code/datums/elements/pet_bonus.dm +++ b/code/datums/elements/pet_bonus.dm @@ -10,17 +10,14 @@ ///string key of the emote to do when pet. var/emote_name - ///optional cute message to send when you pet your pet! - var/emote_message ///actual moodlet given, defaults to the pet animal one var/moodlet -/datum/element/pet_bonus/Attach(datum/target, emote_message, moodlet = /datum/mood_event/pet_animal) +/datum/element/pet_bonus/Attach(datum/target, emote_name, moodlet = /datum/mood_event/pet_animal) . = ..() if(!isliving(target)) return ELEMENT_INCOMPATIBLE - src.emote_message = emote_message src.emote_name = emote_name src.moodlet = moodlet RegisterSignal(target, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) @@ -37,8 +34,6 @@ new /obj/effect/temp_visual/heart(pet.loc) SEND_SIGNAL(pet, COMSIG_ANIMAL_PET, petter, modifiers) - if(emote_message && prob(33)) - pet.manual_emote(emote_message) - if(emote_name) + if(emote_name && prob(33)) INVOKE_ASYNC(pet, TYPE_PROC_REF(/mob, emote), emote_name) petter.add_mood_event("petting_bonus", moodlet, pet) diff --git a/code/game/sound.dm b/code/game/sound.dm index fdd890b2e89..1c263170b0d 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -580,4 +580,9 @@ 'sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle4.ogg' = 23, 'sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle5.ogg' = 23, )) + if(SFX_PIG_OINK) + soundin = pick( + 'sound/mobs/non-humanoids/pig/pig1.ogg', + 'sound/mobs/non-humanoids/pig/pig2.ogg', + ) return soundin diff --git a/code/modules/mob/living/basic/farm_animals/chicken/chick.dm b/code/modules/mob/living/basic/farm_animals/chicken/chick.dm index 9e4af384aee..7ddf86b0cfb 100644 --- a/code/modules/mob/living/basic/farm_animals/chicken/chick.dm +++ b/code/modules/mob/living/basic/farm_animals/chicken/chick.dm @@ -33,6 +33,18 @@ /// What we grow into. var/grow_as = /mob/living/basic/chicken +/datum/emote/chick + mob_type_allowed_typecache = /mob/living/basic/chick + mob_type_blacklist_typecache = list() + +/datum/emote/chick/chirp + key = "chirp" + key_third_person = "chirps" + message = "chirps!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/chicken/chick_peep.ogg' + /mob/living/basic/chick/Initialize(mapload) . = ..() pixel_x = base_pixel_x + rand(-6, 6) @@ -40,7 +52,7 @@ ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "chirps!") + AddElement(/datum/element/pet_bonus, "chirp") AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) diff --git a/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm b/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm index 9508f8fae3b..4f83608b9d6 100644 --- a/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm +++ b/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm @@ -38,12 +38,24 @@ GLOBAL_VAR_INIT(chicken_count, 0) ///boolean deciding whether eggs laid by this chicken can hatch into chicks var/fertile = TRUE +/datum/emote/chicken + mob_type_allowed_typecache = /mob/living/basic/chicken + mob_type_blacklist_typecache = list() + +/datum/emote/chicken/cluck + key = "cluck" + key_third_person = "clucks" + message = "clucks happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/chicken/bagawk.ogg' + /mob/living/basic/chicken/Initialize(mapload) . = ..() GLOB.chicken_count++ ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, "clucks happily!") + AddElement(/datum/element/pet_bonus, "cluck") AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) AddElement(/datum/element/animal_variety, "chicken", pick("brown", "black", "white"), modify_pixels = TRUE) diff --git a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm index fadac576ea5..5c771e72bad 100644 --- a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm +++ b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm @@ -36,13 +36,25 @@ /// What kind of juice do we produce? var/milked_reagent = /datum/reagent/consumable/milk +/datum/emote/cow + mob_type_allowed_typecache = /mob/living/basic/cow + mob_type_blacklist_typecache = list() + +/datum/emote/cow/moo + key = "moo" + key_third_person = "moos" + message = "moos happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/cow/cow.ogg' + /mob/living/basic/cow/Initialize(mapload) AddComponent(/datum/component/tippable, \ tip_time = 0.5 SECONDS, \ untip_time = 0.5 SECONDS, \ self_right_time = rand(25 SECONDS, 50 SECONDS), \ post_tipped_callback = CALLBACK(src, PROC_REF(after_cow_tipped))) - AddElement(/datum/element/pet_bonus, "moos happily!") + AddElement(/datum/element/pet_bonus, "moo") AddElement(/datum/element/swabable, CELL_LINE_TABLE_COW, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) setup_udder() setup_eating() diff --git a/code/modules/mob/living/basic/farm_animals/pig.dm b/code/modules/mob/living/basic/farm_animals/pig.dm index d0fbb5a8247..c3cfc57ac05 100644 --- a/code/modules/mob/living/basic/farm_animals/pig.dm +++ b/code/modules/mob/living/basic/farm_animals/pig.dm @@ -28,9 +28,20 @@ blood_volume = BLOOD_VOLUME_NORMAL ai_controller = /datum/ai_controller/basic_controller/pig +/datum/emote/pig + mob_type_allowed_typecache = /mob/living/basic/pig + mob_type_blacklist_typecache = list() + +/datum/emote/pig/oink + key = "oink" + key_third_person = "oinks" + message = "oinks!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = SFX_PIG_OINK /mob/living/basic/pig/Initialize(mapload) . = ..() - AddElement(/datum/element/pet_bonus, "oinks!") + AddElement(/datum/element/pet_bonus, "oink") AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured) make_tameable() diff --git a/code/modules/mob/living/basic/farm_animals/pony.dm b/code/modules/mob/living/basic/farm_animals/pony.dm index 29672e032c8..a39fd328f11 100644 --- a/code/modules/mob/living/basic/farm_animals/pony.dm +++ b/code/modules/mob/living/basic/farm_animals/pony.dm @@ -33,11 +33,23 @@ /// Greyscale color config; 1st color is body, 2nd is mane var/list/ponycolors = list("#cc8c5d", "#cc8c5d") +/datum/emote/pony + mob_type_allowed_typecache = /mob/living/basic/pony + mob_type_blacklist_typecache = list() + +/datum/emote/pony/whicker + key = "whicker" + key_third_person = "whickers" + message = "whickers." + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/pony/snort.ogg' + /mob/living/basic/pony/Initialize(mapload) . = ..() apply_colour() - AddElement(/datum/element/pet_bonus, "whickers.") + AddElement(/datum/element/pet_bonus, "whicker") AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured) AddElementTrait(TRAIT_WADDLING, INNATE_TRAIT, /datum/element/waddling) diff --git a/code/modules/mob/living/basic/farm_animals/rabbit.dm b/code/modules/mob/living/basic/farm_animals/rabbit.dm index dec48ea8be4..c667ac311cd 100644 --- a/code/modules/mob/living/basic/farm_animals/rabbit.dm +++ b/code/modules/mob/living/basic/farm_animals/rabbit.dm @@ -39,10 +39,20 @@ /// passed to animal_varity as the prefix icon. var/icon_prefix = "rabbit" +/datum/emote/rabbit + mob_type_allowed_typecache = /mob/living/basic/rabbit + mob_type_blacklist_typecache = list() + +/datum/emote/rabbit + key = "hop" + key_third_person = "hops" + message = "hops around happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/rabbit/Initialize(mapload) . = ..() AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, "hops around happily!") + AddElement(/datum/element/pet_bonus, "hop") AddElement(/datum/element/animal_variety, icon_prefix, pick("brown", "black", "white"), TRUE) if(prob(20)) // bunny name = "bunny" diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm index b4de3d2321f..625dc4af907 100644 --- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm +++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm @@ -157,6 +157,17 @@ /// Were we tamed? If yes, tame the mob we become when we grow up too. var/was_tamed = FALSE +/datum/emote/lobstrosity_juvenile + mob_type_allowed_typecache = /mob/living/basic/mining/lobstrosity/juvenile + mob_type_blacklist_typecache = list() + +/datum/emote/lobstrosity_juvenile/chitter + key = "chitter" + key_third_person = "chitters" + message = "chitters pleasantly!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + sound = 'sound/mobs/non-humanoids/insect/chitter.ogg' + /mob/living/basic/mining/lobstrosity/juvenile/Initialize(mapload) . = ..() var/growth_step = 1000/(7 MINUTES) //It should take 7-ish minutes if you keep the happiness above 40% and at most 12 @@ -203,7 +214,7 @@ . = ..() was_tamed = TRUE // They are more pettable I guess - AddElement(/datum/element/pet_bonus, "chitters pleasantly!") + AddElement(/datum/element/pet_bonus, "chitter") REMOVE_TRAIT(src, TRAIT_MOB_HIDE_HAPPINESS, INNATE_TRAIT) /mob/living/basic/mining/lobstrosity/juvenile/proc/ready_to_grow() diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm index c911fa64c20..d62edcceebe 100644 --- a/code/modules/mob/living/basic/pets/cat/cat.dm +++ b/code/modules/mob/living/basic/pets/cat/cat.dm @@ -86,7 +86,7 @@ AddElement(/datum/element/cultist_pet, pet_cult_icon_state = cult_icon_state) AddElement(/datum/element/wears_collar, collar_icon_state = collar_icon_state, collar_resting_icon_state = TRUE) AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, null, /datum/mood_event/pet_animal, "purr") + AddElement(/datum/element/pet_bonus, "purr", /datum/mood_event/pet_animal) AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) add_cell_sample() add_verb(src, /mob/living/proc/toggle_resting) diff --git a/code/modules/mob/living/basic/pets/dog/_dog.dm b/code/modules/mob/living/basic/pets/dog/_dog.dm index 35996d4d77c..b5259d275b5 100644 --- a/code/modules/mob/living/basic/pets/dog/_dog.dm +++ b/code/modules/mob/living/basic/pets/dog/_dog.dm @@ -50,12 +50,22 @@ ///icon state of our cult icon var/cult_icon_state +/datum/emote/dog + mob_type_allowed_typecache = /mob/living/basic/pet/dog + mob_type_blacklist_typecache = list() + +/datum/emote/dog/woof + key = "woof" + key_third_person = "woof" + message = "woofs happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/pet/dog/Initialize(mapload) . = ..() AddElement(/datum/element/cultist_pet, pet_cult_icon_state = cult_icon_state) AddElement(/datum/element/wears_collar, collar_icon_state = collar_icon_state) ADD_TRAIT(src, TRAIT_WOUND_LICKER, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "woofs happily!") + AddElement(/datum/element/pet_bonus, "woof") AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) AddElement(/datum/element/unfriend_attacker, untamed_reaction = "%SOURCE% fixes %TARGET% with a look of betrayal.") AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/meat/slab/human/mutant/skeleton, /obj/item/stack/sheet/bone), tame_chance = 30, bonus_tame_chance = 15, unique = FALSE) diff --git a/code/modules/mob/living/basic/pets/fox.dm b/code/modules/mob/living/basic/pets/fox.dm index c45ff27bbc3..780b4e896e0 100644 --- a/code/modules/mob/living/basic/pets/fox.dm +++ b/code/modules/mob/living/basic/pets/fox.dm @@ -37,13 +37,22 @@ /datum/pet_command/perform_trick_sequence, ) +/datum/emote/fox + mob_type_allowed_typecache = /mob/living/basic/pet/fox + mob_type_blacklist_typecache = list() + +/datum/emote/fox/yap + key = "yap" + key_third_person = "yaps" + message = "yaps happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE /mob/living/basic/pet/fox/Initialize(mapload) . = ..() AddComponent(/datum/component/obeys_commands, pet_commands) AddElement(/datum/element/cultist_pet) AddElement(/datum/element/wears_collar) - AddElement(/datum/element/pet_bonus, "pants and yaps happily!") + AddElement(/datum/element/pet_bonus, "yap") AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) AddElement(/datum/element/tiny_mob_hunter, MOB_SIZE_SMALL) AddElement(/datum/element/ai_retaliate) diff --git a/code/modules/mob/living/basic/pets/gondolas/gondola.dm b/code/modules/mob/living/basic/pets/gondolas/gondola.dm index 9e17d1e08a5..e607a13bf1e 100644 --- a/code/modules/mob/living/basic/pets/gondolas/gondola.dm +++ b/code/modules/mob/living/basic/pets/gondolas/gondola.dm @@ -39,7 +39,7 @@ /mob/living/basic/pet/gondola/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_MUTE, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "smiles!") + AddElement(/datum/element/pet_bonus, "smile") if(LAZYLEN(loot)) loot = string_list(loot) AddElement(/datum/element/death_drops, loot) diff --git a/code/modules/mob/living/basic/pets/penguin.dm b/code/modules/mob/living/basic/pets/penguin.dm index c5829b21095..2a1b78e9dd8 100644 --- a/code/modules/mob/living/basic/pets/penguin.dm +++ b/code/modules/mob/living/basic/pets/penguin.dm @@ -17,6 +17,15 @@ ///the egg it carries var/obj/carried_egg +/datum/emote/penguin + mob_type_allowed_typecache = /mob/living/basic/pet/penguin + mob_type_blacklist_typecache = list() + +/datum/emote/penguin/honk + key = "honk" + key_third_person = "honks" + message = "honks happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE /mob/living/basic/pet/penguin/Initialize(mapload) . = ..() @@ -24,7 +33,7 @@ AddElement(/datum/element/wears_collar) AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured) - AddElement(/datum/element/pet_bonus, "honks happily!") + AddElement(/datum/element/pet_bonus, "honk") AddElementTrait(TRAIT_WADDLING, INNATE_TRAIT, /datum/element/waddling) if(!can_lay_eggs) return diff --git a/code/modules/mob/living/basic/pets/sloth.dm b/code/modules/mob/living/basic/pets/sloth.dm index 9cd7711aa06..b1f5c61001a 100644 --- a/code/modules/mob/living/basic/pets/sloth.dm +++ b/code/modules/mob/living/basic/pets/sloth.dm @@ -37,9 +37,19 @@ GLOBAL_DATUM(cargo_sloth, /mob/living/basic/sloth) ai_controller = /datum/ai_controller/basic_controller/sloth +/datum/emote/sloth + mob_type_allowed_typecache = /mob/living/basic/sloth + mob_type_blacklist_typecache = list() + +/datum/emote/sloth/smile_slow + key = "ssmile" + key_third_person = "slowlysmiles" + message = "slowly smiles!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/sloth/Initialize(mapload) . = ..() - AddElement(/datum/element/pet_bonus, "slowly smiles!") + AddElement(/datum/element/pet_bonus, "ssmile") AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) AddElement(/datum/element/ai_retaliate) AddComponent(/datum/component/tree_climber) diff --git a/code/modules/mob/living/basic/space_fauna/ant.dm b/code/modules/mob/living/basic/space_fauna/ant.dm index 7fbbe03e631..3ae46b7f539 100644 --- a/code/modules/mob/living/basic/space_fauna/ant.dm +++ b/code/modules/mob/living/basic/space_fauna/ant.dm @@ -36,10 +36,20 @@ ai_controller = /datum/ai_controller/basic_controller/ant +/datum/emote/ant + mob_type_allowed_typecache = /mob/living/basic/ant + mob_type_blacklist_typecache = list() + +/datum/emote/ant/clack + key = "clack" + key_third_person = "clacks" + message = "clacks happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/ant/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "clacks happily!") + AddElement(/datum/element/pet_bonus, "clack") AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp.dm b/code/modules/mob/living/basic/space_fauna/carp/carp.dm index f1c12cc3ce9..a315e253ece 100644 --- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm +++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm @@ -81,6 +81,16 @@ /obj/structure/window, )) +/datum/emote/carp + mob_type_allowed_typecache = /mob/living/basic/carp + mob_type_blacklist_typecache = list() + +/datum/emote/carp/bloop + key = "bloop" + key_third_person = "bloops" + message = "bloops!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/carp/Initialize(mapload, mob/tamer) ADD_TRAIT(src, TRAIT_FREE_HYPERSPACE_MOVEMENT, INNATE_TRAIT) //Need to set before init cause if we init in hyperspace we get dragged before the trait can be added . = ..() @@ -186,7 +196,7 @@ /mob/living/basic/carp/pet/Initialize(mapload) . = ..() AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, "bloops happily!") + AddElement(/datum/element/pet_bonus, "bloop") /** * Lia - Sometimes the pet of the Head of Security. @@ -291,7 +301,7 @@ /mob/living/basic/carp/passive/Initialize(mapload) . = ..() AddComponent(/datum/component/ai_retaliate_advanced, CALLBACK(src, PROC_REF(on_attacked))) - AddElement(/datum/element/pet_bonus, "bloops happily!") + AddElement(/datum/element/pet_bonus, "bloop") ADD_TRAIT(src, TRAIT_PACIFISM, INNATE_TRAIT) /// If someone slaps one of the school, scatter diff --git a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm index f293f1dcbaa..1e78bd924a8 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm @@ -608,6 +608,6 @@ /mob/living/basic/spider/giant/sgt_araneus/Initialize(mapload) . = ..() - AddElement(/datum/element/pet_bonus, "chitters proudly!") + AddElement(/datum/element/pet_bonus, "chitter") AddElement(/datum/element/ai_retaliate) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider.dm b/code/modules/mob/living/basic/space_fauna/spider/spider.dm index 9f94d839a76..195b8149833 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spider.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spider.dm @@ -49,6 +49,18 @@ /// If true then you shouldn't be told that you're a spider antagonist as soon as you are placed into this mob var/apply_spider_antag = TRUE +/datum/emote/spider + mob_type_allowed_typecache = /mob/living/basic/spider + mob_type_blacklist_typecache = list() + +/datum/emote/spider/chitter + key = "chitter" + key_third_person = "chitters" + message = "chitters." + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/insect/chitter.ogg' + /mob/living/basic/spider/Initialize(mapload) . = ..() add_traits(list(TRAIT_WEB_SURFER, TRAIT_FENCE_CLIMBER), INNATE_TRAIT) diff --git a/code/modules/mob/living/basic/vermin/lizard.dm b/code/modules/mob/living/basic/vermin/lizard.dm index da68087d70f..c1c21850ee6 100644 --- a/code/modules/mob/living/basic/vermin/lizard.dm +++ b/code/modules/mob/living/basic/vermin/lizard.dm @@ -46,10 +46,19 @@ /mob/living/basic/cockroach, )) +/datum/emote/lizard + mob_type_allowed_typecache = /mob/living/basic/lizard + mob_type_blacklist_typecache = list() + +/datum/emote/lizard/whicker + key = "tongue" + message = "sticks its tongue out contentedly!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/lizard/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "sticks its tongue out contentedly!") + AddElement(/datum/element/pet_bonus, "tongue") AddElement(/datum/element/basic_eating, heal_amt = 5, food_types = edibles) ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(edibles)) diff --git a/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm b/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm index d0605d4dc93..e4798ba2d1c 100644 --- a/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm +++ b/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm @@ -41,6 +41,16 @@ /datum/pet_command/perform_trick_sequence, ) +/datum/emote/mothroach + mob_type_allowed_typecache = /mob/living/basic/mothroach + mob_type_blacklist_typecache = list() + +/datum/emote/mothroach/squeaks + key = "squeaks" + key_third_person = "squeaks" + message = "squeaks!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/mothroach/Initialize(mapload) . = ..() var/static/list/food_types = list(/obj/item/clothing) @@ -48,7 +58,7 @@ AddComponent(/datum/component/obeys_commands, pet_commands) ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(food_types)) AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, "squeaks happily!") + AddElement(/datum/element/pet_bonus, "squeak") add_verb(src, /mob/living/proc/toggle_resting) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) diff --git a/code/modules/mob/living/basic/vermin/mouse.dm b/code/modules/mob/living/basic/vermin/mouse.dm index aba7c00d4c7..a0c1faf971d 100644 --- a/code/modules/mob/living/basic/vermin/mouse.dm +++ b/code/modules/mob/living/basic/vermin/mouse.dm @@ -44,6 +44,18 @@ /datum/pet_command/perform_trick_sequence, ) +/datum/emote/mouse + mob_type_allowed_typecache = /mob/living/basic/mouse + mob_type_blacklist_typecache = list() + +/datum/emote/mouse/squeak + key = "squeak" + key_third_person = "squeaks" + message = "squeak!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/mouse/mousesqueek.ogg' + /mob/living/basic/mouse/Initialize(mapload, tame = FALSE, new_body_color) . = ..() if(contributes_to_ratcap) @@ -278,7 +290,7 @@ . = ..() // Tom fears no cable. ADD_TRAIT(src, TRAIT_SHOCKIMMUNE, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "squeaks happily!") + AddElement(/datum/element/pet_bonus, "squeak") /mob/living/basic/mouse/brown/tom/create_a_new_rat() new /mob/living/basic/mouse/brown(loc, /* tame = */ tame) // dominant gene