Makes catslugs slightly less annoying

This commit is contained in:
Chompstation Bot
2021-08-24 23:58:48 +00:00
committed by Darlantan
parent 145f8172f4
commit c8f595b31f
17 changed files with 85 additions and 15 deletions

View File

@@ -254,6 +254,10 @@
on_attacked(attacker) // So we attack immediately and not threaten.
return give_target(attacker) // Also handles setting the appropiate stance.
if(holder.resting) // I can't kill someone while I'm laying down!
ai_log("react_to_attack() : AI is resting. Getting up.", AI_LOG_TRACE)
holder.lay_down()
if(stance == STANCE_SLEEP) // If we're asleep, try waking up if someone's wailing on us.
ai_log("react_to_attack() : AI is asleep. Waking up.", AI_LOG_TRACE)
go_wake()

View File

@@ -2,7 +2,7 @@
/datum/category_item/catalogue/fauna/catslug
name = "Alien Wildlife - Catslug"
desc = "The catslug is an omnivorous terrestrial creature.\
desc = "The Catslug is an omnivorous terrestrial creature.\
Exhibiting properties of both a cat and a slug (hence its name)\
it moves somewhat awkwardly. However, the unique qualities of\
its body make it exceedingly flexible and smooth, allowing it to\
@@ -29,6 +29,7 @@
movement_cooldown = 2
meat_amount = 2
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
holder_type = /obj/item/weapon/holder/catslug
response_help = "hugs"
response_disarm = "rudely paps"
@@ -39,11 +40,13 @@
melee_damage_upper = 5
has_hands = TRUE
mob_size = MOB_MEDIUM
mob_size = MOB_SMALL
friendly = list("hugs")
see_in_dark = 8
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug)
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/catslug
say_list_type = /datum/say_list/catslug
player_msg = "You have escaped the foul weather, into this much more pleasant place. You are an intelligent creature capable of more than most think. You can pick up and use many things, and even carry some of them with you into the vents, which you can use to move around quickly. You're quiet and capable, you speak with your hands and your deeds! <br>- - - - -<br> <span class='notice'>Keep in mind, your goal should generally be to survive. You're expected to follow the same rules as everyone else, so don't go self antagging without permission from the staff team, but you are able and capable of defending yourself from those who would attack you for no reason.</span>"
has_langs = list("Sign Language")
@@ -61,12 +64,28 @@
/atom/movable/emissive_blocker,
/obj/item/weapon/material,
/obj/item/weapon/melee,
/obj/item/stack/material,
/obj/item/stack/,
/obj/item/weapon/tool,
/obj/item/weapon/reagent_containers/food,
/obj/item/weapon/coin,
/obj/item/weapon/aliencoin,
/obj/item/weapon/ore
/obj/item/weapon/ore,
/obj/item/weapon/disk/nuclear,
/obj/item/toy,
/obj/item/weapon/card,
/obj/item/device/radio,
/obj/item/device/perfect_tele_beacon,
/obj/item/weapon/clipboard,
/obj/item/weapon/paper,
/obj/item/weapon/pen,
/obj/item/canvas,
/obj/item/paint_palette,
/obj/item/paint_brush,
/obj/item/device/camera,
/obj/item/weapon/photo,
/obj/item/device/camera_film,
/obj/item/device/taperecorder,
/obj/item/device/tape
)
vore_active = 1
@@ -80,6 +99,12 @@
vore_default_contamination_color = "grey"
vore_default_item_mode = IM_DIGEST
/datum/say_list/catslug //Quiet quiet, no noise! We speak in sign so only people with sign will understand our questions.
speak = list("Have any porl?", "What is that?", "Where is this?", "What are you doing?", "How did you get here?", "Don't go into the rain.")
emote_hear = list()
emote_see = list("turns their head.", "looks at you.", "watches something unseen.", "sways its tail.", "flicks its ears.", "stares at you.", "gestures an unintelligible message.", "points into the distance!")
say_maybe_target = list()
say_got_target = list()
/mob/living/simple_mob/vore/alienanimals/catslug/init_vore()
..()
@@ -98,7 +123,7 @@
hostile = FALSE
cooperative = FALSE
retaliate = TRUE
speak_chance = 0
speak_chance = 0.5
wander = TRUE
/mob/living/simple_mob/vore/alienanimals/catslug/Initialize()
@@ -137,6 +162,16 @@
to_chat(user, "<span class='notice'>\The [user] feeds \the [O] to you.</span>")
playsound(src, 'sound/items/eatfood.ogg', 75, 1)
/mob/living/simple_mob/vore/alienanimals/catslug/attack_hand(mob/living/carbon/human/M as mob)
if(stat != DEAD && M.a_intent == I_HELP && resting)
M.visible_message("<span class='notice'>\The [M.name] shakes \the [src] awake from their nap.</span>","<span class='notice'>You shake \the [src] awake!</span>")
playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
lay_down()
ai_holder.go_wake()
return
else
return ..()
/mob/living/simple_mob/vore/alienanimals/catslug/Life()
. = ..()
if(nutrition < 150)
@@ -178,22 +213,53 @@
color = newcolor
picked_color = TRUE
/datum/ai_holder/simple_mob/melee/evasive/catslug/handle_wander_movement()
if(holder.client)
return
/datum/ai_holder/simple_mob/melee/evasive/catslug/proc/consider_awakening()
if(holder.resting)
if(prob(5))
holder.lay_down()
return
if(prob(0.5))
holder.lay_down()
go_wake()
/datum/ai_holder/simple_mob/melee/evasive/catslug/handle_wander_movement()
if(holder.client || holder.resting)
return
return ..()
else if(prob(0.5))
holder.lay_down()
go_sleep()
addtimer(CALLBACK(src, .proc/consider_awakening), rand(1 MINUTE, 5 MINUTES), TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE)
else
return ..()
/datum/ai_holder/simple_mob/melee/evasive/catslug/on_hear_say(mob/living/speaker, message)
if(holder.client)
if(holder.client || !speaker.client)
return
if(!speaker.client)
if(findtext(message, "psps") && stance == STANCE_IDLE)
set_follow(speaker, follow_for = 5 SECONDS)
if(holder.stat || !holder.say_list || !message || speaker == holder) //Copied from parrots
return
var/datum/say_list/S = holder.say_list
S.speak |= message
/mob/living/simple_mob/vore/alienanimals/catslug/horrible
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/catslug/horrible
/datum/ai_holder/simple_mob/melee/evasive/catslug/horrible/on_hear_say(mob/living/speaker, message) //this was an accident originally but it was very funny so here you go
if(holder.client || !speaker.client)
return
if(findtext(message, "psps") || stance == STANCE_IDLE)
set_follow(speaker, follow_for = 5 SECONDS)
if(holder.stat || !holder.say_list || !message || speaker == holder) //Copied from parrots
return
var/datum/say_list/S = holder.say_list
S.speak |= message
/obj/item/weapon/holder/catslug
origin_tech = list(TECH_BIO = 2)
icon = 'icons/mob/alienanimals_x32.dmi'
item_state = "catslug"
/obj/item/weapon/holder/catslug/Initialize(mapload, mob/held)
. = ..()
color = held.color

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB