mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 04:26:03 +01:00
cdc59c716e
## About The Pull Request For a while I've been bugged by the fact you can't pick up stoats. They also couldn't breed, meaning there was a definitive maximum stoats on station and if they all died, tough shit! This fixes that. ## Why It's Good For The Game Makes it so stoats can actually be picked up now! This is good news. Also! Adds stoat kits, which are. VERY adorable. <details><summary>Baby Soats...</summary> <img width="400" height="387" alt="Screenshot 2025-09-15 112048" src="https://github.com/user-attachments/assets/ae99483b-7c36-4e7e-9e61-943e74846e21" /> <img width="391" height="387" alt="Screenshot 2025-09-15 112053" src="https://github.com/user-attachments/assets/4b1e570a-4f52-49b0-8832-6fdd6a5ba436" /> <img width="390" height="389" alt="Screenshot 2025-09-15 112059" src="https://github.com/user-attachments/assets/09b307ff-5500-4c13-aafe-844f402772db" /> <img width="392" height="387" alt="Screenshot 2025-09-15 112105" src="https://github.com/user-attachments/assets/f5dfa294-a387-45f8-af83-613f9c96ab52" /> </details> ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> https://github.com/user-attachments/assets/2c0dae5c-27be-47e6-9450-8967ea1faf80 The main thing needing testing: baby stoats and stoat breeding. Works great! The addition of pickupable stoats was just a few lines of code, that works as expected </details> ## Changelog 🆑 add: Added the ability to pick up stoats add: Stoats can now breed! add: Baby stoat mobs are now a thing. Aww, so cute! /🆑
85 lines
2.6 KiB
Plaintext
85 lines
2.6 KiB
Plaintext
/mob/living/basic/stoat
|
|
name = "stoat"
|
|
desc = "A natural born vermin exterminator... a janitor's best friend."
|
|
icon_state = "stoat"
|
|
icon_living = "stoat"
|
|
icon_dead = "stoat_dead"
|
|
base_icon_state = "stoat"
|
|
icon = 'icons/mob/simple/pets.dmi'
|
|
butcher_results = list(/obj/item/food/meat/slab = 1)
|
|
mob_biotypes = MOB_ORGANIC
|
|
mob_size = MOB_SIZE_SMALL
|
|
pass_flags = PASSTABLE | PASSMOB
|
|
density = FALSE
|
|
health = 40
|
|
maxHealth = 40
|
|
melee_damage_lower = 6
|
|
melee_damage_upper = 9
|
|
response_help_continuous = "pets"
|
|
response_help_simple = "pet"
|
|
verb_say = "chips"
|
|
verb_ask = "chips curiously"
|
|
can_be_held = TRUE
|
|
verb_exclaim = "chips loudly"
|
|
verb_yell = "chips loudly"
|
|
faction = list(FACTION_NEUTRAL)
|
|
ai_controller = /datum/ai_controller/basic_controller/stoat
|
|
///some commands we obey
|
|
var/static/list/pet_commands = list(
|
|
/datum/pet_command/idle,
|
|
/datum/pet_command/move,
|
|
/datum/pet_command/free,
|
|
/datum/pet_command/attack,
|
|
/datum/pet_command/follow,
|
|
/datum/pet_command/fetch,
|
|
)
|
|
//can this mob breed?
|
|
var/can_breed = TRUE
|
|
|
|
/mob/living/basic/stoat/Initialize(mapload)
|
|
. = ..()
|
|
ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT)
|
|
AddElement(/datum/element/tiny_mob_hunter)
|
|
var/static/list/eatable_food = list(
|
|
/obj/item/food/deadmouse,
|
|
/obj/item/food/egg,
|
|
)
|
|
AddComponent(/datum/component/tameable, food_types = eatable_food, tame_chance = 70, bonus_tame_chance = 0)
|
|
ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(eatable_food))
|
|
AddElement(/datum/element/wears_collar)
|
|
AddComponent(/datum/component/obeys_commands, pet_commands)
|
|
if(can_breed)
|
|
add_breeding_component()
|
|
|
|
var/static/list/display_emote = list(
|
|
BB_EMOTE_SAY = list("Chirp chirp chirp!"),
|
|
BB_EMOTE_SEE = list("sweeps its tail!", "jumps around!", "licks its fur!"),
|
|
BB_SPEAK_CHANCE = 2,
|
|
BB_EMOTE_SOUND = list('sound/mobs/non-humanoids/stoat/stoat_sounds.ogg'),
|
|
)
|
|
ai_controller.set_blackboard_key(BB_BASIC_MOB_SPEAK_LINES, display_emote)
|
|
|
|
/mob/living/basic/stoat/proc/add_breeding_component()
|
|
var/static/list/partner_paths = typecacheof(list(/mob/living/basic/stoat))
|
|
var/static/list/baby_paths = list(
|
|
/mob/living/basic/stoat/kit = 100 // Placeholder until we get proper baby stoats
|
|
)
|
|
AddComponent(\
|
|
/datum/component/breed,\
|
|
can_breed_with = typecacheof(list(/mob/living/basic/stoat)),\
|
|
baby_paths = baby_paths,\
|
|
)
|
|
|
|
/mob/living/basic/stoat/kit
|
|
name = "\improper stoat kit"
|
|
real_name = "stoat"
|
|
desc = "They're a stoat kit!"
|
|
icon_state = "kit_stoat"
|
|
icon_living = "kit_stoat"
|
|
icon_dead = "kit_stoat_dead"
|
|
density = FALSE
|
|
pass_flags = PASSMOB
|
|
ai_controller = /datum/ai_controller/basic_controller/stoat/kit
|
|
mob_size = MOB_SIZE_SMALL
|
|
can_breed = FALSE
|