From bdba094ba4e6eca80e920664085acebb43e1624d Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Thu, 12 Jun 2025 08:09:04 -0700 Subject: [PATCH] Add safewords to succubi (#17837) * Add safewords to succubi * Revert stomach mode to drain after safeword --- .../simple_mob/subtypes/vore/succubi.dm | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm b/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm index 61ca1c4279..118725afaf 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm @@ -1,3 +1,18 @@ +GLOBAL_LIST_INIT(succubus_safewords, list( + "pineapple", + "red", + "snuggletime", + "bad touch", + "hyperdodecahedron", + "sriracha", + "alright bingle", + "abracadabra", + "bicycle", + "submarine", + "avacado", + "safe word", +)) + /mob/living/simple_mob/vore/succubus name = "succubus" desc = "She's giving you the 'come hither' look." @@ -28,11 +43,13 @@ "succubusbobclothed", "succubusgingerclothed" ) + var/safeword faction = FACTION_SUCCUBUS /mob/living/simple_mob/vore/succubus/Initialize(mapload) . = ..() + safeword = pick(GLOB.succubus_safewords) if(random_skin) icon_living = pick(skins) icon_rest = "[icon_living]asleep" @@ -120,3 +137,31 @@ "Try as you might, you barely make an impression before %pred simply clenches with the most minimal effort, binding you back into her %belly.", "Unfortunately, %pred seems to have absolutely no intention of letting you go, and your futile effort goes nowhere.", "Strain as you might, you can't keep up the effort long enough before you sink back into %pred's %belly.") + +/mob/living/simple_mob/vore/succubus/hear_say(list/message_pieces, verb, italics, mob/speaker, sound/speech_sound, sound_vol) + . = ..() + + // Don't do this if we have a player + if(!has_AI()) + return + + // Ignore ourselves + if(speaker == src) + return + + // Only allow people inside us~ish to safeword + if(get_turf(speaker) != get_turf(src)) + return + + var/string = multilingual_to_message(message_pieces) + + if(findtext(lowertext(string), safeword)) + vore_selected?.digest_mode = DM_DRAIN + release_vore_contents() + SetStunned(10) + say("I'm sorry sweetie, are you okay?") + +/mob/living/simple_mob/vore/succubus/animal_nom() + . = ..() + if(has_AI()) + whisper("Remember cutie, the safeword is \"[safeword]\"~")