mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 10:01:58 +00:00
108 lines
3.2 KiB
Plaintext
108 lines
3.2 KiB
Plaintext
GLOBAL_DATUM(cargo_sloth, /mob/living/basic/sloth)
|
|
|
|
/mob/living/basic/sloth
|
|
name = "sloth"
|
|
desc = "An adorable, sleepy creature."
|
|
icon = 'icons/mob/simple/pets.dmi'
|
|
icon_state = "sloth"
|
|
icon_living = "sloth"
|
|
icon_dead = "sloth_dead"
|
|
|
|
speak_emote = list("yawns")
|
|
|
|
can_be_held = TRUE
|
|
held_state = "sloth"
|
|
|
|
response_help_continuous = "pets"
|
|
response_help_simple = "pet"
|
|
response_disarm_continuous = "gently pushes aside"
|
|
response_disarm_simple = "gently push aside"
|
|
response_harm_continuous = "kicks"
|
|
response_harm_simple = "kick"
|
|
|
|
attack_verb_continuous = "bites"
|
|
attack_verb_simple = "bite"
|
|
attack_sound = 'sound/items/weapons/bite.ogg'
|
|
attack_vis_effect = ATTACK_EFFECT_BITE
|
|
|
|
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
|
gold_core_spawnable = FRIENDLY_SPAWN
|
|
|
|
melee_damage_lower = 18
|
|
melee_damage_upper = 18
|
|
health = 50
|
|
maxHealth = 50
|
|
speed = 10 // speed is fucking weird man. they aren't fast though don't worry
|
|
butcher_results = list(/obj/item/food/meat/slab = 3)
|
|
|
|
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, "ssmile")
|
|
AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW)
|
|
AddElement(/datum/element/ai_retaliate)
|
|
AddComponent(/datum/component/tree_climber)
|
|
|
|
if(!mapload || !isnull(GLOB.cargo_sloth) || !is_station_level(z))
|
|
return
|
|
|
|
// If someone adds non-cargo sloths to maps we'll have a problem but we're fine for now
|
|
GLOB.cargo_sloth = src
|
|
GLOB.gorilla_start += get_turf(src)
|
|
|
|
/mob/living/basic/sloth/Destroy()
|
|
if(GLOB.cargo_sloth == src)
|
|
GLOB.cargo_sloth = null
|
|
|
|
return ..()
|
|
|
|
/mob/living/basic/sloth/paperwork
|
|
name = "Paperwork"
|
|
desc = "Cargo's pet sloth. About as useful as the rest of the techs."
|
|
gender = MALE
|
|
gold_core_spawnable = NO_SPAWN
|
|
|
|
/mob/living/basic/sloth/citrus
|
|
name = "Citrus"
|
|
desc = "Cargo's pet sloth. She's dressed in a horrible sweater."
|
|
icon_state = "cool_sloth"
|
|
icon_living = "cool_sloth"
|
|
icon_dead = "cool_sloth_dead"
|
|
gender = FEMALE
|
|
butcher_results = list(/obj/item/toy/spinningtoy = 1)
|
|
gold_core_spawnable = NO_SPAWN
|
|
|
|
/// They're really passive in game, so they just wanna get away if you start smacking them. No trees in space from them to use for clawing your eyes out, but they will try if desperate.
|
|
/datum/ai_controller/basic_controller/sloth
|
|
blackboard = list(
|
|
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
|
|
BB_FLEE_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
|
|
)
|
|
|
|
ai_traits = PASSIVE_AI_FLAGS
|
|
ai_movement = /datum/ai_movement/basic_avoidance
|
|
idle_behavior = /datum/idle_behavior/idle_random_walk
|
|
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/target_retaliate/to_flee,
|
|
/datum/ai_planning_subtree/flee_target/from_flee_key,
|
|
/datum/ai_planning_subtree/climb_trees,
|
|
/datum/ai_planning_subtree/random_speech/sloth,
|
|
)
|
|
|
|
/datum/ai_planning_subtree/random_speech/sloth
|
|
speech_chance = 1
|
|
emote_hear = list("snores.", "yawns.")
|
|
emote_see = list("dozes off.", "looks around sleepily.")
|