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()