Files
2024-10-24 03:07:38 -07:00

106 lines
3.2 KiB
Plaintext

/mob/living/basic/pet/chinchilla
name = "chinchilla"
desc = "They're like a mouse, but Australian."
icon = 'modular_skyrat/master_files/icons/mob/newmobs.dmi'
held_lh = 'modular_skyrat/master_files/icons/mob/inhands/pets_held_lh.dmi'
held_rh = 'modular_skyrat/master_files/icons/mob/inhands/pets_held_rh.dmi'
icon_state = "chinchilla_white"
icon_living = "chinchilla_white"
icon_dead = "chinchilla_white_dead"
maxHealth = 10
health = 10
mob_size = MOB_SIZE_TINY
speed = 1.25 //speedy little fuckers
see_in_dark = 6
butcher_results = list(/obj/item/food/meat/slab = 1)
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
response_disarm_simple = "gently push aside"
response_harm_continuous = "kick"
response_harm_simple = "kicks"
gold_core_spawnable = FRIENDLY_SPAWN
can_be_held = TRUE
held_w_class = WEIGHT_CLASS_TINY
held_state = "chinchilla_white"
///In the case 'melee_damage_upper' is somehow raised above 0
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
ai_controller = /datum/ai_controller/basic_controller/chinchilla
/// The color (i.e. "black" or "white") of this chinchilla, to determine the `icon_state`s to use for
/// this specific instance. `null` by default, which makes it pick a valid value at random in
/// Initialize()`.
var/body_color
/mob/living/basic/pet/chinchilla/Initialize(mapload)
. = ..()
AddElement(/datum/element/pet_bonus, "squeaks happily!")
if(isnull(body_color))
body_color = pick("black", "white")
held_state = "chinchilla_[body_color]" // not handled by variety element
AddElement(/datum/element/animal_variety, "chinchilla", body_color, FALSE)
//ai behavior
/datum/ai_controller/basic_controller/chinchilla
blackboard = list(
BB_CURRENT_HUNTING_TARGET = null, // dust to take dust baths
)
ai_traits = STOP_MOVING_WHEN_PULLED
ai_movement = /datum/ai_movement/basic_avoidance
idle_behavior = /datum/idle_behavior/idle_random_walk
planning_subtrees = list(
// chinchillas will try to look for dust to roll around in
/datum/ai_planning_subtree/find_and_hunt_target/look_for_dust,
// randomly squeak and shit
/datum/ai_planning_subtree/random_speech/chinchilla,
)
/datum/ai_planning_subtree/find_and_hunt_target/look_for_dust
hunting_behavior = /datum/ai_behavior/hunt_target/dust_roll
hunt_targets = list(/obj/effect/decal/cleanable/ash, /obj/effect/decal/cleanable/food/flour)
hunt_range = 0 //need to be on top of anything dusty
hunt_chance = 50
/datum/ai_behavior/hunt_target/dust_roll
hunt_cooldown = 20 SECONDS
/datum/ai_behavior/hunt_target/dust_roll/target_caught(mob/living/basic/pet/hunter, obj/effect/decal/cleanable/dust)
hunter.visible_message(span_notice("[hunter] starts taking a dust bath in [dust]."))
hunter.spin(10, 1)
qdel(dust)
/datum/ai_planning_subtree/random_speech/chinchilla
speech_chance = 5
emote_hear = list(
"squeaks.",
"chirps.",
)
emote_see = list(
"sniffs around.",
"jumps around.",
)
//subtypes
/mob/living/basic/pet/chinchilla/white
body_color = "white"
/mob/living/basic/pet/chinchilla/black
body_color = "black"