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