From eecf8a080ec9e782aa6f1eb00742343cc26c4dc6 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 16 Aug 2023 18:06:08 +0200 Subject: [PATCH] [MIRROR] Dismemberment moodlets are alleviated when recovering your limbs. [MDB IGNORE] (#23121) * Dismemberment moodlets are alleviated when recovering your limbs. (#77581) ## About The Pull Request What it says on the tin. When reattaching a limb, the respective dismemberment debuff will be replaced by a significantly less severe one (-3 for 2 minutes as opposed to -10 for 8 minutes) However, the way I've done it, to that ensure replacing a leg when you're missing 4 limbs doesn't clear the moodbuff, has the entertaining side effect of **allowing dismemberment moodlets to stack for each limb you've lost, and being cleared separately.** I honestly kind of like it. Their description changes in accordance to what limb it is as well. ## Why It's Good For The Game It doesn't make much sense for your character to continue lamenting the loss of their arm/leg after they've already acquired a replacement. I also like that this makes losing multiple limbs worse than losing just one, as someone who's been nugget-ed would have a far worse day than someone who has simply lost an arm. Closes #77388. ## Changelog :cl: fix: dismemberment moodlets are replaced by a lesser mood debuff when you recover the limb in question. balance: dismemberment moodlets can now stack for each limb you lose, and are cleared separately. Their descriptions have been updated to reflect this. /:cl: --------- Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> * Dismemberment moodlets are alleviated when recovering your limbs. --------- Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> --- code/datums/mood_events/generic_negative_events.dm | 13 +++++++++++++ code/modules/surgery/bodyparts/dismemberment.dm | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 27e2645efd3..28526d9b8b3 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -82,6 +82,19 @@ mood_change = -10 timeout = 8 MINUTES +/datum/mood_event/dismembered/add_effects(obj/item/bodypart/limb) + if(limb) + description = "AHH! I WAS USING THAT [full_capitalize(limb.plaintext_zone)]" + +/datum/mood_event/reattachment + description = "Ouch! My limb feels like I fell asleep on it." + mood_change = -3 + timeout = 2 MINUTES + +/datum/mood_event/reattachment/add_effects(obj/item/bodypart/limb) + if(limb) + description = "Ouch! My [limb.plaintext_zone] feels like I fell asleep on it." + /datum/mood_event/tased description = "There's no \"z\" in \"taser\". It's in the zap." mood_change = -3 diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 4ca20c0fc92..850bfc7b9e7 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -20,7 +20,7 @@ limb_owner.visible_message(span_danger("[limb_owner]'s [name] is violently dismembered!")) INVOKE_ASYNC(limb_owner, TYPE_PROC_REF(/mob, emote), "scream") playsound(get_turf(limb_owner), 'sound/effects/dismember.ogg', 80, TRUE) - limb_owner.add_mood_event("dismembered", /datum/mood_event/dismembered) + limb_owner.add_mood_event("dismembered_[body_zone]", /datum/mood_event/dismembered, src) limb_owner.add_mob_memory(/datum/memory/was_dismembered, lost_limb = src) drop_limb() @@ -351,6 +351,10 @@ scar.victim = new_limb_owner LAZYADD(new_limb_owner.all_scars, scar) + if(!special && new_limb_owner.mob_mood.has_mood_of_category("dismembered_[body_zone]")) + new_limb_owner.clear_mood_event("dismembered_[body_zone]") + new_limb_owner.add_mood_event("phantom_pain_[body_zone]", /datum/mood_event/reattachment, src) + update_bodypart_damage_state() if(can_be_disabled) update_disabled()