Files
kyunkyunkyun b0463d3c83 Convert most spans to defines (#31080)
* spanish?

* aaaagain

* keep maptext

* Update robot_items.dm

* Update span_defines.dm

* compiles

* Update silicon_mob.dm

* compile
2025-12-13 23:55:48 +00:00

146 lines
4.5 KiB
Plaintext

/// Gutlunches, passive mods that devour blood and gibs
/mob/living/basic/mining/gutlunch
name = "gutlunch"
desc = "A scavenger that eats raw meat, often found alongside ash walkers. Produces a thick, medicinally nutritious milk."
icon_state = "gutlunch"
icon_living = "gutlunch"
icon_dead = "gutlunch"
speak_emote = list("warbles", "quavers")
weather_immunities = list("lava","ash")
faction = list("mining", "ashwalker")
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
response_disarm_simple = "gently push aside"
response_harm_continuous = "squishes"
response_harm_simple = "squish"
friendly_verb_continuous = "pinches"
friendly_verb_simple = "pinch"
density = FALSE
obj_damage = 0
environment_smash = ENVIRONMENT_SMASH_NONE
a_intent = INTENT_HELP
ventcrawler = VENTCRAWLER_ALWAYS
gold_core_spawnable = FRIENDLY_SPAWN
loot = list(/obj/effect/decal/cleanable/blood/gibs)
deathmessage = "is pulped into bugmash."
ai_controller = /datum/ai_controller/basic_controller/gutlunch
var/list/food_types = list(
/obj/effect/decal/cleanable/blood/gibs,
/obj/item/organ/internal/eyes,
/obj/item/organ/internal/heart,
/obj/item/organ/internal/lungs,
/obj/item/organ/internal/liver,
/obj/item/organ/internal/kidneys,
/obj/item/organ/internal/appendix
)
var/obj/item/udder/gutlunch/udder
/// can we breed?
var/can_breed = TRUE
/mob/living/basic/mining/gutlunch/Initialize(mapload)
. = ..()
udder = new()
// Have all eating components share the same exact list per mob subtype
var/static/list/static_food_types
if(!static_food_types)
static_food_types = food_types.Copy()
AddElement(/datum/element/basic_eating, food_types_ = static_food_types)
AddElement(/datum/element/ai_retaliate)
ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(static_food_types))
if(can_breed)
add_breeding_component()
/mob/living/basic/mining/gutlunch/Destroy()
QDEL_NULL(udder)
return ..()
/mob/living/basic/mining/gutlunch/regenerate_icons()
..()
if(udder.reagents.total_volume == udder.reagents.maximum_volume)
add_overlay("gl_full")
/mob/living/basic/mining/gutlunch/item_interaction(mob/living/user, obj/item/O, list/modifiers)
if(stat == CONSCIOUS && istype(O, /obj/item/reagent_containers/glass))
udder.milkAnimal(O, user)
regenerate_icons()
return ITEM_INTERACT_COMPLETE
/obj/item/udder/gutlunch
name = "nutrient sac"
/obj/item/udder/gutlunch/generateMilk()
if(prob(60))
reagents.add_reagent("cream", rand(2, 5))
if(prob(45))
reagents.add_reagent("salglu_solution", rand(2, 5))
if(prob(30))
reagents.add_reagent("epinephrine", rand(2, 5))
/mob/living/basic/mining/gutlunch/proc/add_breeding_component()
var/static/list/partner_paths = typecacheof(list(/mob/living/basic/mining/gutlunch))
var/static/list/baby_paths = list(
/mob/living/basic/mining/gutlunch/grublunch = 1,
)
AddComponent(\
/datum/component/breed,\
can_breed_with = partner_paths,\
baby_paths = baby_paths,\
breed_timer = 3 MINUTES,\
)
// Male gutlunch. They're smaller and more colorful!
/mob/living/basic/mining/gutlunch/gubbuck
name = "gubbuck"
gender = MALE
ai_controller = /datum/ai_controller/basic_controller/gutlunch/gubbuck
/mob/living/basic/mining/gutlunch/gubbuck/Initialize(mapload)
. = ..()
add_atom_colour(pick("#E39FBB", "#D97D64", "#CF8C4A"), FIXED_COLOUR_PRIORITY)
resize = 0.85
update_transform()
/// Lady gutlunch. They make the babby.
/mob/living/basic/mining/gutlunch/guthen
name = "guthen"
gender = FEMALE
ai_controller = /datum/ai_controller/basic_controller/gutlunch/guthen
/// Baby gutlunch
/mob/living/basic/mining/gutlunch/grublunch
name = "grublunch"
food_types = list() //They don't eat.
gold_core_spawnable = NO_SPAWN
ai_controller = /datum/ai_controller/basic_controller/gutlunch/gutlunch_baby
var/growth = 0
/mob/living/basic/mining/gutlunch/grublunch/Initialize(mapload)
. = ..()
add_atom_colour("#9E9E9E", FIXED_COLOUR_PRIORITY) // Somewhat hidden
resize = 0.45
update_transform()
/mob/living/basic/mining/gutlunch/grublunch/Life()
..()
growth++
if(growth > 50) //originally used a timer for this but was more problem that it's worth.
growUp()
/mob/living/basic/mining/gutlunch/grublunch/proc/growUp()
var/mob/living/L
if(prob(45))
L = new /mob/living/basic/mining/gutlunch/gubbuck(loc)
else
L = new /mob/living/basic/mining/gutlunch/guthen(loc)
mind?.transfer_to(L)
L.faction = faction.Copy()
L.setDir(dir)
visible_message(SPAN_NOTICE("[src] grows up into [L]."))
qdel(src)