Files

181 lines
6.3 KiB
Plaintext

/mob/living/basic/skeleton
name = "reanimated skeleton"
desc = "A real bonefied skeleton, doesn't seem like it wants to socialize."
gender = NEUTER
icon = 'icons/mob/simple/simple_human.dmi'
mob_biotypes = MOB_UNDEAD|MOB_HUMANOID
speak_emote = list("rattles")
maxHealth = 40
health = 40
basic_mob_flags = DEL_ON_DEATH
melee_damage_lower = 15
melee_damage_upper = 15
unsuitable_atmos_damage = 0
unsuitable_cold_damage = 0
unsuitable_heat_damage = 0
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
attack_sound = 'sound/items/weapons/slash.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
faction = list(FACTION_SKELETON)
// Going for a sort of pale bluegreen here, shooting for boneish
lighting_cutoff_red = 15
lighting_cutoff_green = 25
lighting_cutoff_blue = 35
death_message = "collapses into a pile of bones!"
ai_controller = /datum/ai_controller/basic_controller/skeleton
/// Loot this mob drops on death.
var/list/loot = list(/obj/effect/decal/remains/human)
/// Path of the outfit we give to the mob's visuals.
var/outfit = null
/// Path of the species we give to the mob's visuals.
var/species = /datum/species/skeleton
/// Path of the held item we give to the mob's visuals.
var/held_item
/// Types of milk skeletons like to drink
var/static/list/good_drinks = list(
/obj/item/reagent_containers/condiment/milk,
)
/// Bad milk that skeletons hate
var/static/list/bad_drinks = list(
/obj/item/reagent_containers/condiment/soymilk,
)
/mob/living/basic/skeleton/Initialize(mapload)
. = ..()
apply_dynamic_human_appearance(src, outfit, species, r_hand = held_item)
AddElement(/datum/element/footstep, FOOTSTEP_MOB_SHOE)
if(LAZYLEN(loot))
loot = string_list(loot)
AddElement(/datum/element/death_drops, loot)
AddElement(/datum/element/basic_eating, heal_amt = 50, drinking = TRUE, food_types = good_drinks)
AddElement(/datum/element/basic_eating, heal_amt = 0, damage_amount = 25, damage_type = BURN, drinking = TRUE, food_types = bad_drinks)
ADD_TRAIT(src, TRAIT_SNOWSTORM_IMMUNE, INNATE_TRAIT)
var/list/foods_list = good_drinks + bad_drinks
ai_controller?.set_blackboard_key(BB_BASIC_FOODS, typecacheof(foods_list))
/mob/living/basic/skeleton/settler
name = "undead settler"
desc = "The reanimated remains of some poor settler."
maxHealth = 55
health = 55
melee_damage_lower = 17
melee_damage_upper = 20
attack_verb_continuous = "jabs"
attack_verb_simple = "jab"
attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
death_message = "collapses into a pile of bones, its gear falling to the floor!"
loot = list(
/obj/effect/decal/remains/human,
/obj/item/spear,
/obj/item/clothing/shoes/winterboots,
/obj/item/clothing/suit/hooded/wintercoat,
)
outfit = /datum/outfit/settler
held_item = /obj/item/spear
/datum/outfit/settler
name = "Settler"
suit = /obj/item/clothing/suit/hooded/wintercoat
shoes = /obj/item/clothing/shoes/winterboots
/mob/living/basic/skeleton/templar
name = "undead templar"
desc = "The reanimated remains of a holy templar knight."
maxHealth = 150
health = 150
speed = 2
damage_coeff = list(BRUTE = 0.5, BURN = 0.5, TOX = 0, STAMINA = 0, OXY = 0) //trying to simulate actually having armor
obj_damage = 50
melee_damage_lower = 25
melee_damage_upper = 30
attack_verb_continuous = "slices"
attack_verb_simple = "slice"
attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
death_message = "collapses into a pile of bones, its gear clanging as it hits the ground!"
loot = list(
/obj/effect/decal/remains/human,
/obj/item/clothing/suit/chaplainsuit/armor/templar,
/obj/item/clothing/head/helmet/chaplain,
/obj/item/claymore/weak{name = "holy sword"}
)
outfit = /datum/outfit/templar
/datum/outfit/templar
name = "Templar"
head = /obj/item/clothing/head/helmet/chaplain
suit = /obj/item/clothing/suit/chaplainsuit/armor/templar
r_hand = /obj/item/claymore/weak
/mob/living/basic/skeleton/ice
name = "ice skeleton"
desc = "A reanimated skeleton protected by a thick sheet of natural ice armor. Looks slow, though."
speed = 5
maxHealth = 75
health = 75
color = rgb(114,228,250)
loot = list(/obj/effect/decal/remains/human{color = rgb(114,228,250)})
/mob/living/basic/skeleton/plasmaminer
name = "shambling miner"
desc = "A plasma-soaked miner, their exposed limbs turned into a grossly incandescent bone seemingly made of plasma."
icon_state = "plasma_miner"
icon_living = "plasma_miner"
icon_dead = "plasma_miner"
maxHealth = 150
health = 150
melee_damage_lower = 15
melee_damage_upper = 20
light_color = LIGHT_COLOR_PURPLE
light_range = 2
death_message = "collapses into a pile of bones, their suit dissolving among the plasma!"
loot = list(/obj/effect/decal/remains/plasma)
outfit = /datum/outfit/plasma_miner
species = /datum/species/plasmaman
/mob/living/basic/skeleton/plasmaminer/jackhammer
desc = "A plasma-soaked miner, their exposed limbs turned into a grossly incandescent bone seemingly made of plasma. They seem to still have their mining tool in their hand, gripping tightly."
icon_state = "plasma_miner_tool"
icon_living = "plasma_miner_tool"
icon_dead = "plasma_miner_tool"
maxHealth = 185
health = 185
melee_damage_lower = 20
melee_damage_upper = 25
attack_verb_continuous = "blasts"
attack_verb_simple = "blast"
attack_sound = 'sound/items/weapons/sonic_jackhammer.ogg'
attack_vis_effect = null
loot = list(/obj/effect/decal/remains/plasma, /obj/item/pickaxe/drill/jackhammer)
held_item = /obj/item/pickaxe/drill/jackhammer
/datum/outfit/plasma_miner
name = "Plasma Miner"
uniform = /obj/item/clothing/under/rank/cargo/miner/lavaland
suit = /obj/item/clothing/suit/hooded/explorer
mask = /obj/item/clothing/mask/gas/explorer
// Skeleton AI
/// Skeletons mostly just beat people to death, but they'll also find and drink milk.
/datum/ai_controller/basic_controller/skeleton
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
BB_TARGET_MINIMUM_STAT = HARD_CRIT,
BB_EMOTE_KEY = "rattles",
BB_EMOTE_CHANCE = 20,
)
ai_movement = /datum/ai_movement/basic_avoidance
idle_behavior = /datum/idle_behavior/idle_random_walk
planning_subtrees = list(
/datum/ai_planning_subtree/escape_captivity,
/datum/ai_planning_subtree/run_emote,
/datum/ai_planning_subtree/find_food,
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/basic_melee_attack_subtree,
)