mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-13 16:13:19 +01:00
b0463d3c83
* spanish? * aaaagain * keep maptext * Update robot_items.dm * Update span_defines.dm * compiles * Update silicon_mob.dm * compile
146 lines
4.5 KiB
Plaintext
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)
|