From 411a5c63ee8b21d8e6bbfb511d1ca8c16d0925b2 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 29 May 2022 20:04:49 +0100 Subject: [PATCH] paper skin, glass bones --- code/__DEFINES/traits.dm | 2 ++ code/datums/traits/negative.dm | 18 ++++++++++++++++++ code/modules/surgery/bodyparts/_bodyparts.dm | 9 +++++++++ 3 files changed, 29 insertions(+) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index c8791eabb8..94ace816ac 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -233,6 +233,8 @@ #define TRAIT_TRASHCAN "trashcan" ///Used for fireman carry to have mobe not be dropped when passing by a prone individual. #define TRAIT_BEING_CARRIED "being_carried" +#define TRAIT_GLASS_BONES "glass_bones" +#define TRAIT_PAPER_SKIN "paper_skin" // mobility flag traits // IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it) diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 8958226ff4..9f8a08b226 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -425,3 +425,21 @@ GLOBAL_LIST_EMPTY(family_heirlooms) gain_text = "You can't smell anything!" lose_text = "You can smell again!" medical_record_text = "Patient suffers from anosmia and is incapable of smelling gases or particulates." + +/datum/quirk/paper_skin + name = "Paper Skin" + desc = "Your flesh is weaker, resulting in receiving cuts more easily." + value = -1 + mob_trait = TRAIT_PAPER_SKIN + gain_text = "Your flesh feels weak!" + lose_text = "Your flesh feels more durable!" + medical_record_text = "Patient suffers from weak flesh, resulting in them receiving cuts far more easily." + +/datum/quirk/glass_bones + name = "Glass Bones" + desc = "Your bones are far more brittle, and more vulnerable to breakage." + value = -1 + mob_trait = TRAIT_GLASS_BONES + gain_text = "Your bones feels weak!" + lose_text = "Your bones feels more durable!" + medical_record_text = "Patient suffers from brittle bones, resulting in them receiving breakages far more easily." diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 8f5a2bb402..2d8150d087 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -228,6 +228,8 @@ var/mangled_state = get_mangled_state() var/bio_state = owner.get_biological_state() var/easy_dismember = HAS_TRAIT(owner, TRAIT_EASYDISMEMBER) // if we have easydismember, we don't reduce damage when redirecting damage to different types (slashing weapons on mangled/skinless limbs attack at 100% instead of 50%) + var/glass_bones = HAS_TRAIT(owner, TRAIT_GLASS_BONES) + var/paper_skin = HAS_TRAIT(owner, TRAIT_PAPER_SKIN) if(wounding_type == WOUND_BLUNT) if(sharpness == SHARP_EDGED) @@ -242,9 +244,11 @@ if(wounding_type == WOUND_SLASH) wounding_type = WOUND_BLUNT wounding_dmg *= (easy_dismember ? 1 : 0.5) + wounding_dmg *= (glass_bones ? 1.5 : 1) else if(wounding_type == WOUND_PIERCE) wounding_type = WOUND_BLUNT wounding_dmg *= (easy_dismember ? 1 : 0.75) + wounding_dmg *= (glass_bones ? 1.5 : 1) if((mangled_state & BODYPART_MANGLED_BONE) && try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus)) return // if we're flesh only, all blunt attacks become weakened slashes in terms of wound damage @@ -252,12 +256,17 @@ if(wounding_type == WOUND_BLUNT) wounding_type = WOUND_SLASH wounding_dmg *= (easy_dismember ? 1 : 0.5) + wounding_dmg *= (paper_skin ? 1.5 : 1) if((mangled_state & BODYPART_MANGLED_FLESH) && try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus)) return // standard humanoids if(BIO_FLESH_BONE) // if we've already mangled the skin (critical slash or piercing wound), then the bone is exposed, and we can damage it with sharp weapons at a reduced rate // So a big sharp weapon is still all you need to destroy a limb + if(wounding_type == WOUND_SLASH || wounding_type == WOUND_PIERCE) + wounding_dmg *= (paper_skin ? 1.5 : 1) + else + wounding_dmg *= (glass_bones ? 1.5 : 1) if(mangled_state == BODYPART_MANGLED_FLESH && sharpness) playsound(src, "sound/effects/wounds/crackandbleed.ogg", 100) if(wounding_type == WOUND_SLASH && !easy_dismember)