diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 1e2bc75649b..43d5cbfbb29 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -410,3 +410,8 @@ description = "I just got squeezed way too hard." mood_change = -1 timeout = 2 MINUTES + +/datum/mood_event/rippedtail + description = "I ripped their tail right off, what have I done!" + mood_change = -5 + timeout = 30 SECONDS diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 7bf76318e3f..291925815d6 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -512,6 +512,17 @@ else add_mood_event("tailpulled", /datum/mood_event/tailpulled) + else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && (istype(head, /obj/item/clothing/head/costume/kitty) || istype(head, /obj/item/clothing/head/collectable/kitty))) + var/obj/item/clothing/head/faketail = head + helper.visible_message(span_danger("[helper] pulls on [src]'s tail... and it rips off!"), \ + null, span_hear("You hear a ripping sound."), DEFAULT_MESSAGE_RANGE, list(helper, src)) + to_chat(helper, span_danger("You pull on [src]'s tail... and it rips off!")) + to_chat(src, span_userdanger("[helper] pulls on your tail... and it rips off!")) + playsound(loc, 'sound/effects/cloth_rip.ogg', 75, TRUE) + dropItemToGround(faketail) + helper.put_in_hands(faketail) + helper.add_mood_event("rippedtail", /datum/mood_event/rippedtail) + else if (helper.grab_state >= GRAB_AGGRESSIVE) helper.visible_message(span_notice("[helper] embraces [src] in a tight bear hug!"), \ diff --git a/sound/effects/cloth_rip.ogg b/sound/effects/cloth_rip.ogg new file mode 100644 index 00000000000..6000881a7a1 Binary files /dev/null and b/sound/effects/cloth_rip.ogg differ