diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm
index 2573ac15f49..b056bdcac71 100644
--- a/code/datums/components/spooky.dm
+++ b/code/datums/components/spooky.dm
@@ -34,7 +34,7 @@
/datum/component/spooky/proc/spectral_change(mob/living/carbon/human/H, mob/user)
if((H.getStaminaLoss() > 95) && (!istype(H.dna.species, /datum/species/diona) && !istype(H.dna.species, /datum/species/machine) && !istype(H.dna.species, /datum/species/slime) && !istype(H.dna.species, /datum/species/golem) && !istype(H.dna.species, /datum/species/plasmaman) && !istype(H.dna.species, /datum/species/skeleton)))
H.Stun(40 SECONDS)
- H.set_species(/datum/species/skeleton)
+ H.set_species(/datum/species/skeleton) // Makes the OP skelly
H.visible_message("[H] has given up on life as a mortal.")
var/T = get_turf(H)
if(too_spooky)
diff --git a/code/datums/spells/lichdom.dm b/code/datums/spells/lichdom.dm
index fb867cb905d..5327f2d18d4 100644
--- a/code/datums/spells/lichdom.dm
+++ b/code/datums/spells/lichdom.dm
@@ -69,7 +69,7 @@
lich.real_name = M.mind.name
M.mind.transfer_to(lich)
- lich.set_species(/datum/species/skeleton)
+ lich.set_species(/datum/species/skeleton/lich) // Wizard variant
to_chat(lich, "Your bones clatter and shutter as they're pulled back into this world!")
cooldown_handler.recharge_duration += 1 MINUTES
var/mob/old_body = current_body
@@ -121,7 +121,7 @@
current_body = M.mind.current
if(ishuman(M))
var/mob/living/carbon/human/H = M
- H.set_species(/datum/species/skeleton)
+ H.set_species(/datum/species/skeleton/lich)
H.unEquip(H.wear_suit)
H.unEquip(H.head)
H.unEquip(H.shoes)
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index 1b5857d166c..07ed5b28332 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -704,7 +704,7 @@ GLOBAL_LIST_EMPTY(multiverse)
if(heresy)
spawnheresy(M)//oh god why
else
- M.set_species(/datum/species/skeleton)
+ M.set_species(/datum/species/skeleton) // OP skellybones
M.visible_message(" A massive amount of flesh sloughs off [M] and a skeleton rises up!")
M.grab_ghost() // yoinks the ghost if its not in the body
M.revive()
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index de165fd14b0..6191dce21c0 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -544,13 +544,14 @@
/obj/effect/mob_spawn/human/skeleton
name = "skeletal remains"
mob_name = "skeleton"
- mob_species = /datum/species/skeleton
+ mob_species = /datum/species/skeleton/brittle
mob_gender = NEUTER
/obj/effect/mob_spawn/human/skeleton/alive
death = FALSE
roundstart = FALSE
icon = 'icons/effects/blood.dmi'
+ mob_species = /datum/species/skeleton
icon_state = "remains"
description = "Be a spooky scary skeleton." //not mapped in anywhere so admin spawner, who knows what they'll use this for.
flavour_text = "By unknown powers, your skeletal remains have been reanimated! Walk this mortal plain and terrorize all living adventurers who dare cross your path."
diff --git a/code/modules/mob/living/carbon/human/human_mob.dm b/code/modules/mob/living/carbon/human/human_mob.dm
index 94c2e7dc8cb..15ed356d2a6 100644
--- a/code/modules/mob/living/carbon/human/human_mob.dm
+++ b/code/modules/mob/living/carbon/human/human_mob.dm
@@ -94,6 +94,12 @@
/mob/living/carbon/human/skeleton/Initialize(mapload)
. = ..(mapload, /datum/species/skeleton)
+/mob/living/carbon/human/skeleton/lich/Initialize(mapload)
+ . = ..(mapload, /datum/species/skeleton/lich)
+
+/mob/living/carbon/human/skeleton/brittle/Initialize(mapload)
+ . = ..(mapload, /datum/species/skeleton/brittle)
+
/mob/living/carbon/human/kidan/Initialize(mapload)
. = ..(mapload, /datum/species/kidan)
diff --git a/code/modules/mob/living/carbon/human/species/skeleton_species.dm b/code/modules/mob/living/carbon/human/species/skeleton_species.dm
index 0bfdb8a575d..699c2fc3391 100644
--- a/code/modules/mob/living/carbon/human/species/skeleton_species.dm
+++ b/code/modules/mob/living/carbon/human/species/skeleton_species.dm
@@ -1,6 +1,7 @@
+/// The OG skellybones, quite OP. As of this comment, only available through ash-drake loot (2023-03-07)
/datum/species/skeleton
- name = "Skeleton"
- name_plural = "Skeletons"
+ name = "Ancient Skeleton"
+ name_plural = "Ancient Skeletons"
blurb = "Spoopy and scary."
@@ -32,11 +33,16 @@
"brain" = /obj/item/organ/internal/brain/golem,
) //Has default darksight of 2.
+ /// How much brute and burn does milk heal per handle_reagents()
+ var/milk_heal_amount = 4
+ /// How likely (in %) are we to heal a fracture?
+ var/milk_fracture_repair_probability = 5
+
/datum/species/skeleton/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
// Crazylemon is still silly
if(R.id == "milk")
- H.heal_overall_damage(4, 4)
- if(prob(5)) // 5% chance per proc to find a random limb, and mend it
+ H.heal_overall_damage(milk_heal_amount, milk_heal_amount)
+ if(prob(milk_fracture_repair_probability)) // 5% chance per proc to find a random limb, and mend it
var/list/our_organs = H.bodyparts.Copy()
shuffle(our_organs)
for(var/obj/item/organ/external/L in our_organs)
@@ -47,3 +53,16 @@
return TRUE
return ..()
+
+/// Wizard subtype, subtype to allow balancing separately from other skellies
+/datum/species/skeleton/lich
+ name = "Lich"
+ name_plural = "Liches"
+
+/// The most common (and weakest) type, legion corpses and skeleton map spawners are these
+/datum/species/skeleton/brittle
+ name = "Brittle Skeleton"
+ name_plural = "Brittle Skeletons"
+ inherent_traits = list(TRAIT_RESISTHEAT, TRAIT_NOBREATH, TRAIT_RESISTHIGHPRESSURE, TRAIT_RADIMMUNE, TRAIT_PIERCEIMMUNE, TRAIT_NOHUNGER, TRAIT_XENO_IMMUNE)
+ milk_heal_amount = 0.66 // On par with saline-glucose (after averaging that out)
+ milk_fracture_repair_probability = 0 //no bone juice here
diff --git a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm
index 78c1d803b7e..8eaaa54f53d 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm
@@ -327,7 +327,7 @@
mob_name = "ashen skeleton"
mob_gender = NEUTER
husk = FALSE
- mob_species = /datum/species/skeleton
+ mob_species = /datum/species/skeleton/brittle
mob_color = "#454545"
//Legion infested mobs