diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index d8f50cacf2..caf4151b2b 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -1412,3 +1412,86 @@ desc = "This cane seems to have 'Ryals' engraved on its handle." icon_state = "cane" item_state = "stick" + +////////////////////////////// Foxler - Erstatz Vryroxes ///////////////////////////////////////////////// + +/obj/item/weapon/holder/cat/fluff/bones + name = "Bones" + desc = "It's Bones! Meow." + gender = MALE + icon_state = "cat3" + +//Use this subtype for spawning in the custom item. +/obj/item/weapon/holder/cat/fluff/bones/custom_item + +/obj/item/weapon/holder/cat/fluff/bones/custom_item/New() + if (!contents.len) + new/mob/living/simple_animal/cat/fluff/bones (src) + ..() + +/mob/living/simple_animal/cat/fluff/bones + name = "Bones" + desc = "That's Bones the cat. He's a laid back, black cat. Meow." + gender = MALE + icon_state = "cat3" + icon_living = "cat3" + icon_dead = "cat3_dead" + holder_type = /obj/item/weapon/holder/cat/fluff/bones + bff_name = "Erstatz Vryroxes" + +/mob/living/simple_animal/cat/fluff + var/bff_name + var/mob/living/carbon/human/bff + +/mob/living/simple_animal/cat/fluff/handle_movement_target() + if (!bff) + for (var/mob/living/carbon/human/M in player_list) + if (M.real_name == bff_name) + bff = M + break + + if (bff) + var/follow_dist = 5 + if (bff.stat >= DEAD || bff.health <= config.health_threshold_softcrit) //danger + follow_dist = 1 + else if (bff.stat || bff.health <= 50) //danger or just sleeping + follow_dist = 2 + var/near_dist = max(follow_dist - 3, 1) + var/current_dist = get_dist(src, bff) + + if (movement_target != bff) + if (current_dist > follow_dist && !istype(movement_target, /mob/living/simple_animal/mouse) && (bff in oview(src))) + //stop existing movement + walk_to(src,0) + turns_since_scan = 0 + + //walk to bff + stop_automated_movement = 1 + movement_target = bff + walk_to(src, movement_target, near_dist, 4) + + //already following and close enough, stop + else if (current_dist <= near_dist) + walk_to(src,0) + movement_target = null + stop_automated_movement = 0 + + if (!(bff && movement_target == bff)) + ..() + +/mob/living/simple_animal/cat/fluff/Life() + ..() + if (stat || !bff) + return + if (get_dist(src, bff) <= 1) + if (bff.stat >= DEAD || bff.health <= config.health_threshold_softcrit) + if (prob((bff.stat < DEAD)? 50 : 15)) + audible_emote(pick("meows in distress.", "meows anxiously.")) + else + if (prob(5)) + visible_emote(pick("nuzzles [bff].", + "brushes against [bff].", + "rubs against [bff].", + "purrs.")) + else if (bff.health <= 50) + if (prob(10)) audible_emote("meows anxiously.") \ No newline at end of file diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 3e2d037d13..09418b8bb0 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -1,4 +1,6 @@ // All mobs should have custom emote, really.. +//m_type == 1 --> visual. +//m_type == 2 --> audible /mob/proc/custom_emote(var/m_type=1,var/message = null) if(stat || !use_me && usr == src) diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm index 593c41b742..3591523477 100644 --- a/code/modules/mob/living/simple_animal/borer/borer.dm +++ b/code/modules/mob/living/simple_animal/borer/borer.dm @@ -7,8 +7,8 @@ speak_emote = list("chirrups") emote_hear = list("chirrups") response_help = "pokes" - response_disarm = "prods the" - response_harm = "stomps on the" + response_disarm = "prods" + response_harm = "stomps on" icon_state = "brainslug" icon_living = "brainslug" icon_dead = "brainslug_dead" diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 4678531947..56f615c77f 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -8,14 +8,14 @@ speak = list("Meow!","Esp!","Purr!","HSSSSS") speak_emote = list("purrs", "meows") emote_hear = list("meows","mews") - emote_see = list("shakes its head", "shivers") + emote_see = list("shakes their head", "shivers") speak_chance = 1 turns_per_move = 5 see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target min_oxy = 16 //Require atleast 16kPA oxygen @@ -27,40 +27,45 @@ //MICE! if((src.loc) && isturf(src.loc)) if(!stat && !resting && !buckled) - for(var/mob/living/simple_animal/mouse/M in view(1,src)) + for(var/mob/living/simple_animal/mouse/M in loc) if(!M.stat) M.splat() - emote(pick("\red splats the [M]!","\red toys with the [M]","worries the [M]")) + visible_emote(pick("bites \the [M]!","toys with \the [M].","chomps on \the [M]!")) movement_target = null stop_automated_movement = 0 break ..() - for(var/mob/living/simple_animal/mouse/snack in oview(src, 3)) - if(prob(15)) - emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily.")) + for(var/mob/living/simple_animal/mouse/snack in oview(src,5)) + if(snack.stat < DEAD && prob(15)) + audible_emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily.")) break if(!stat && !resting && !buckled) - turns_since_scan++ - if(turns_since_scan > 5) - walk_to(src,0) - turns_since_scan = 0 - if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) - movement_target = null - stop_automated_movement = 0 - if( !movement_target || !(movement_target.loc in oview(src, 3)) ) - movement_target = null - stop_automated_movement = 0 - for(var/mob/living/simple_animal/mouse/snack in oview(src,3)) - if(isturf(snack.loc) && !snack.stat) - movement_target = snack - break - if(movement_target) - stop_automated_movement = 1 - walk_to(src,movement_target,0,3) + handle_movement_target() +/mob/living/simple_animal/cat/proc/handle_movement_target() + turns_since_scan++ + if(turns_since_scan > 5) + walk_to(src,0) + turns_since_scan = 0 + + if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) + movement_target = null + stop_automated_movement = 0 + if( !movement_target || !(movement_target.loc in oview(src, 4)) ) + movement_target = null + stop_automated_movement = 0 + for(var/mob/living/simple_animal/mouse/snack in oview(src)) + if(isturf(snack.loc) && !snack.stat) + movement_target = snack + world << "[src]: mouse located." + break + if(movement_target) + world << "[src]: locking on [movement_target]" + stop_automated_movement = 1 + walk_to(src,movement_target,0,3) /mob/living/simple_animal/cat/MouseDrop(atom/over_object) @@ -73,10 +78,16 @@ else return ..() +/mob/living/simple_animal/cat/get_scooped(var/mob/living/carbon/grabber) + if (stat >= DEAD) + return //since the holder icon looks like a living cat + ..() + //RUNTIME IS ALIVE! SQUEEEEEEEE~ /mob/living/simple_animal/cat/Runtime name = "Runtime" desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally." + gender = FEMALE icon_state = "cat" icon_living = "cat" icon_dead = "cat_dead" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index a7b7cbc622..1e41a1d5d1 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -14,9 +14,9 @@ turns_per_move = 10 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi meat_amount = 3 - response_help = "pets the" - response_disarm = "bops the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" see_in_dark = 5 var/obj/item/inventory_head var/obj/item/inventory_back @@ -58,7 +58,7 @@ for (var/mob/M in viewers(src, null)) M.show_message("\red [user] gently taps [src] with the [O]. ") if(prob(15)) - emote("looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression on \his face") + visible_emote("looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression on \his face") return ..() @@ -310,10 +310,10 @@ if(isturf(movement_target.loc) ) UnarmedAttack(movement_target) else if(ishuman(movement_target.loc) && prob(20)) - custom_emote(1,"stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.") + visible_emote("stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.") if(prob(1)) - emote(pick("dances around","chases its tail")) + visible_emote(pick("dances around","chases their tail")) spawn(0) for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) dir = i @@ -467,7 +467,7 @@ if(prob(1)) - emote(pick("dances around","chases her tail")) + visible_emote(pick("dances around","chases her tail")) spawn(0) for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) dir = i diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 6eccd808c0..c85f5bc734 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -12,9 +12,9 @@ speak_chance = 1 turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "stomps the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "stomps" stop_automated_movement = 1 friendly = "pinches" var/obj/item/inventory_head 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 ef9731bb0b..b40e6fb819 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -14,9 +14,9 @@ see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 4 - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" faction = "goat" attacktext = "kicked" health = 40 @@ -99,9 +99,9 @@ see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 6 - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" attacktext = "kicked" health = 50 var/datum/reagents/udder = null @@ -160,9 +160,9 @@ turns_per_move = 2 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 1 - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" attacktext = "kicked" health = 1 var/amount_grown = 0 @@ -201,9 +201,9 @@ var/global/chicken_count = 0 turns_per_move = 3 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 2 - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" attacktext = "kicked" health = 10 var/eggsleft = 0 diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index f6200a3e7e..c6f3cfb87c 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -1,7 +1,7 @@ /mob/living/simple_animal/mouse name = "mouse" real_name = "mouse" - desc = "It's a small, disease-ridden rodent." + desc = "It's a small rodent." icon_state = "mouse_gray" icon_living = "mouse_gray" icon_dead = "mouse_gray_dead" @@ -17,9 +17,9 @@ maxHealth = 5 health = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "stamps on the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "stamps on" density = 0 var/body_color //brown, gray and white, leave blank for random layer = MOB_LAYER @@ -47,7 +47,7 @@ icon_state = "mouse_[body_color]" wander = 1 else if(prob(5)) - emote("snuffles") + audible_emote("snuffles.") /mob/living/simple_animal/mouse/New() ..() @@ -110,9 +110,6 @@ /mob/living/simple_animal/mouse/brown/Tom name = "Tom" desc = "Jerry the cat is not amused." - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "splats" /mob/living/simple_animal/mouse/can_use_vents() return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/mushroom.dm b/code/modules/mob/living/simple_animal/friendly/mushroom.dm index ef2eb6cd61..5b4121bedd 100644 --- a/code/modules/mob/living/simple_animal/friendly/mushroom.dm +++ b/code/modules/mob/living/simple_animal/friendly/mushroom.dm @@ -10,7 +10,7 @@ maxHealth = 5 health = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "whacks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "whacks" harm_intent_damage = 5 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/tomato.dm b/code/modules/mob/living/simple_animal/friendly/tomato.dm index 1248e702d2..57c0f4c939 100644 --- a/code/modules/mob/living/simple_animal/friendly/tomato.dm +++ b/code/modules/mob/living/simple_animal/friendly/tomato.dm @@ -9,7 +9,7 @@ maxHealth = 15 health = 15 meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat - response_help = "prods the" - response_disarm = "pushes aside the" - response_harm = "smacks the" + response_help = "prods" + response_disarm = "pushes aside" + response_harm = "smacks" harm_intent_damage = 5 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/head.dm b/code/modules/mob/living/simple_animal/head.dm index 9b12edb4ed..227d2bcf04 100644 --- a/code/modules/mob/living/simple_animal/head.dm +++ b/code/modules/mob/living/simple_animal/head.dm @@ -12,9 +12,9 @@ speak_chance = 1 turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "punches the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" var/list/insults = list( "Man you suck", "You look like the most retarded douche around", diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index ab6874276a..447ad6b1c9 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -6,9 +6,9 @@ icon_living = "alienh_running" icon_dead = "alien_l" icon_gib = "syndicate_gib" - response_help = "pokes the" - response_disarm = "shoves the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" speed = -1 meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 15786b6751..fa3e8c2385 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -14,9 +14,9 @@ turns_per_move = 5 see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "pokes the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "pokes" stop_automated_movement_when_pulled = 0 maxHealth = 60 health = 60 @@ -90,7 +90,7 @@ if(HOSTILE_STANCE_ATTACKING) if(stance_step >= 20) //attacks for 20 ticks, then it gets tired and needs to rest - custom_emote(1, "is worn out and needs to rest" ) + custom_emote(1, "is worn out and needs to rest." ) stance = HOSTILE_STANCE_TIRED stance_step = 0 walk(src, 0) //This stops the bear's walking diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index d69ac01012..14b069a6a1 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -6,9 +6,9 @@ icon_dead = "faithless_dead" speak_chance = 0 turns_per_move = 5 - response_help = "passes through the" + response_help = "passes through" response_disarm = "shoves" - response_harm = "hits the" + response_harm = "hits" speed = -1 maxHealth = 80 health = 80 @@ -38,7 +38,7 @@ /mob/living/simple_animal/hostile/faithless/FindTarget() . = ..() if(.) - emote("wails at [.]") + audible_emote("wails at [.]") /mob/living/simple_animal/hostile/faithless/AttackingTarget() . =..() diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 3b82b64540..4d0792d789 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -17,9 +17,9 @@ turns_per_move = 5 see_in_dark = 10 meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "pokes the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "pokes" stop_automated_movement_when_pulled = 0 maxHealth = 200 health = 200 diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 6e43df9378..9900249c34 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -10,9 +10,9 @@ icon_living = "crate" meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat - response_help = "touches the" - response_disarm = "pushes the" - response_harm = "hits the" + response_help = "touches" + response_disarm = "pushes" + response_harm = "hits" speed = 4 maxHealth = 250 health = 250 @@ -39,7 +39,7 @@ /mob/living/simple_animal/hostile/mimic/FindTarget() . = ..() if(.) - emote("growls at [.]") + audible_emote("growls at [.]") /mob/living/simple_animal/hostile/mimic/death() ..() diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 2ccf788893..e3a4ce4667 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -6,9 +6,9 @@ icon_dead = "piratemelee_dead" speak_chance = 0 turns_per_move = 5 - response_help = "pushes the" + response_help = "pushes" response_disarm = "shoves" - response_harm = "hits the" + response_harm = "hits" speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 2bb2610f66..cdaf72f6bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -1,5 +1,5 @@ /mob/living/simple_animal/hostile/retaliate/clown - name = "Clown" + name = "clown" desc = "A denizen of clown planet" icon_state = "clown" icon_living = "clown" @@ -7,9 +7,9 @@ icon_gib = "clown_gib" speak_chance = 0 turns_per_move = 5 - response_help = "pokes the" - response_disarm = "gently pushes aside the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "gently pushes aside" + response_harm = "hits" speak = list("HONK", "Honk!", "Welcome to clown planet!") emote_see = list("honks") speak_chance = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index ddbd35d0e3..65f4e6f787 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -10,9 +10,9 @@ rapid = 1 speak_chance = 5 turns_per_move = 3 - response_help = "pokes the" - response_disarm = "gently pushes aside the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "gently pushes aside" + response_harm = "hits" speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.") emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity") a_intent = "harm" diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 8c2a470dcd..b09a6ec548 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -1,5 +1,5 @@ /mob/living/simple_animal/hostile/russian - name = "Russian" + name = "russian" desc = "For the Motherland!" icon_state = "russianmelee" icon_living = "russianmelee" @@ -7,9 +7,9 @@ icon_gib = "syndicate_gib" speak_chance = 0 turns_per_move = 5 - response_help = "pokes the" - response_disarm = "shoves the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 11a81284f2..6a38202135 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -1,5 +1,5 @@ /mob/living/simple_animal/hostile/syndicate - name = "Syndicate Operative" + name = "\improper Syndicate operative" desc = "Death to Nanotrasen." icon_state = "syndicate" icon_living = "syndicate" @@ -7,9 +7,9 @@ icon_gib = "syndicate_gib" speak_chance = 0 turns_per_move = 5 - response_help = "pokes the" - response_disarm = "shoves the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index b263cd2112..a908af9868 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -9,9 +9,9 @@ speak_chance = 0 turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat - response_help = "brushes the" - response_disarm = "pushes the" - response_harm = "hits the" + response_help = "brushes" + response_disarm = "pushes" + response_harm = "hits" speed = -1 maxHealth = 250 health = 250 @@ -40,7 +40,7 @@ /mob/living/simple_animal/hostile/tree/FindTarget() . = ..() if(.) - emote("growls at [.]") + audible_emote("growls at [.]") /mob/living/simple_animal/hostile/tree/AttackingTarget() . =..() diff --git a/code/modules/mob/living/simple_animal/kobold.dm b/code/modules/mob/living/simple_animal/kobold.dm index 3d9515c88b..3e52a40874 100644 --- a/code/modules/mob/living/simple_animal/kobold.dm +++ b/code/modules/mob/living/simple_animal/kobold.dm @@ -14,9 +14,9 @@ turns_per_move = 5 see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" minbodytemp = 250 min_oxy = 16 //Require atleast 16kPA oxygen minbodytemp = 223 //Below -50 Degrees Celcius diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 21833161ad..7790f9ecd8 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -44,9 +44,9 @@ turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/cracker/ - response_help = "pets the" - response_disarm = "gently moves aside the" - response_harm = "swats the" + response_help = "pets" + response_disarm = "gently moves aside" + response_harm = "swats" stop_automated_movement = 1 universal_speak = 1 @@ -342,7 +342,7 @@ //Search for item to steal parrot_interest = search_for_item() if(parrot_interest) - emote("looks in [parrot_interest]'s direction and takes flight") + visible_emote("looks in [parrot_interest]'s direction and takes flight") parrot_state = PARROT_SWOOP | PARROT_STEAL icon_state = "parrot_fly" return @@ -364,7 +364,7 @@ if(AM) if(istype(AM, /obj/item) || isliving(AM)) //If stealable item parrot_interest = AM - emote("turns and flies towards [parrot_interest]") + visible_emote("turns and flies towards [parrot_interest]") parrot_state = PARROT_SWOOP | PARROT_STEAL return else //Else it's a perch @@ -478,11 +478,11 @@ var/datum/organ/external/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone))) H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"), sharp=1) - emote(pick("pecks [H]'s [affecting]", "cuts [H]'s [affecting] with its talons")) + visible_emote(pick("pecks [H]'s [affecting].", "cuts [H]'s [affecting] with its talons.")) else L.adjustBruteLoss(damage) - emote(pick("pecks at [L]", "claws [L]")) + visible_emote(pick("pecks at [L].", "claws [L].")) return //Otherwise, fly towards the mob! diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index ed5f35d55b..c200ef6f70 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -13,7 +13,7 @@ emote_hear = list("wails","screeches") response_help = "puts their hand through" response_disarm = "flails at" - response_harm = "punches the" + response_harm = "punches" melee_damage_lower = 5 melee_damage_upper = 15 attacktext = "drained the life from" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 078159c12d..8695741ed8 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -114,23 +114,23 @@ else randomValue -= speak.len if(emote_see && randomValue <= emote_see.len) - emote(pick(emote_see),1) + visible_emote("[pick(emote_see)].") else - emote(pick(emote_hear),2) + audible_emote("[pick(emote_hear)].") else say(pick(speak)) else if(!(emote_hear && emote_hear.len) && (emote_see && emote_see.len)) - emote(pick(emote_see),1) + visible_emote("[pick(emote_see)].") if((emote_hear && emote_hear.len) && !(emote_see && emote_see.len)) - emote(pick(emote_hear),2) + audible_emote("[pick(emote_hear)].") if((emote_hear && emote_hear.len) && (emote_see && emote_see.len)) var/length = emote_hear.len + emote_see.len var/pick = rand(1,length) if(pick <= emote_see.len) - emote(pick(emote_see),1) + visible_emote("[pick(emote_see)].") else - emote(pick(emote_hear),2) + audible_emote("[pick(emote_hear)].") //Atmos @@ -207,9 +207,14 @@ /mob/living/simple_animal/emote(var/act, var/type, var/desc) if(act) - if(act == "scream") act = "whimper" //ugly hack to stop animals screaming when crushed :P ..(act, type, desc) +/mob/living/simple_animal/proc/visible_emote(var/act_desc) + custom_emote(1, act_desc) + +/mob/living/simple_animal/proc/audible_emote(var/act_desc) + custom_emote(2, act_desc) + /mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) if(!Proj || Proj.nodamage) return @@ -224,9 +229,11 @@ if("help") if (health > 0) - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message("\blue [M] [response_help] [src]") + M.visible_message("\blue [M] [response_help] \the [src]") + + if("disarm") + M.visible_message("\blue [M] [response_disarm] \the [src]") + //TODO: Push the mob away or something if("grab") if (M == src) @@ -242,15 +249,11 @@ G.affecting = src LAssailant = M - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red [] has grabbed [] passively!", M, src), 1) + M.visible_message("\red [M] has grabbed [src] passively!") - if("hurt", "disarm") + if("hurt") adjustBruteLoss(harm_intent_damage) - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message("\red [M] [response_harm] [src]") + M.visible_message("\red [M] [response_harm] \the [src]") return diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 20cb0a702c..3ebd2534d8 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 56fbb33331..1ca02caac5 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index ddea2d9156..ce4472f3f8 100644 Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 2990e374cc..2dc3c52abb 100644 Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index e50759742c..a30feb163e 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ