mirror of
https://github.com/Yawn-Wider/YWPolarisVore.git
synced 2026-08-30 08:32:39 +01:00
Merge pull request #14874 from Runa-Dacino/subtlenoms
Adds new preference for vore privacy
This commit is contained in:
@@ -54,6 +54,7 @@
|
||||
var/emote_active = TRUE // Are we even giving emotes out at all or not?
|
||||
var/next_emote = 0 // When we're supposed to print our next emote, as a world.time
|
||||
var/selective_preference = DM_DIGEST // Which type of selective bellymode do we default to?
|
||||
var/eating_privacy_local = "default" //Overrides eating_privacy_global if not "default". Determines if attempt/success messages are subtle/loud
|
||||
|
||||
// Generally just used by AI
|
||||
var/autotransferchance = 0 // % Chance of prey being autotransferred to transfer location
|
||||
@@ -226,7 +227,8 @@
|
||||
"belly_fullscreen_color",
|
||||
"colorization_enabled",
|
||||
"egg_type",
|
||||
"save_digest_mode"
|
||||
"save_digest_mode",
|
||||
"eating_privacy_local"
|
||||
)
|
||||
|
||||
if (save_digest_mode == 1)
|
||||
@@ -391,16 +393,28 @@
|
||||
if(!ishuman(owner))
|
||||
owner.update_icons()
|
||||
|
||||
//Determines privacy
|
||||
var/privacy_range = world.view
|
||||
var/privacy_volume = 100
|
||||
switch(eating_privacy_local) //Third case of if("loud") not defined, as it'd just leave privacy_range and volume untouched
|
||||
if("default")
|
||||
if(owner.eating_privacy_global)
|
||||
privacy_range = 1
|
||||
privacy_volume = 25
|
||||
if("subtle")
|
||||
privacy_range = 1
|
||||
privacy_volume = 25
|
||||
|
||||
//Print notifications/sound if necessary
|
||||
if(!silent && count)
|
||||
owner.visible_message("<font color='green'><b>[owner] [release_verb] everything from their [lowertext(name)]!</b></font>")
|
||||
owner.visible_message("<font color='green'><b>[owner] [release_verb] everything from their [lowertext(name)]!</b></font>", range = privacy_range)
|
||||
var/soundfile
|
||||
if(!fancy_vore)
|
||||
soundfile = classic_release_sounds[release_sound]
|
||||
else
|
||||
soundfile = fancy_release_sounds[release_sound]
|
||||
if(soundfile)
|
||||
playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
|
||||
playsound(src, soundfile, vol = privacy_volume, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
|
||||
|
||||
return count
|
||||
|
||||
@@ -459,16 +473,28 @@
|
||||
if(!ishuman(owner))
|
||||
owner.update_icons()
|
||||
|
||||
//Determines privacy
|
||||
var/privacy_range = world.view
|
||||
var/privacy_volume = 100
|
||||
switch(eating_privacy_local) //Third case of if("loud") not defined, as it'd just leave privacy_range and volume untouched
|
||||
if("default")
|
||||
if(owner.eating_privacy_global)
|
||||
privacy_range = 1
|
||||
privacy_volume = 25
|
||||
if("subtle")
|
||||
privacy_range = 1
|
||||
privacy_volume = 25
|
||||
|
||||
//Print notifications/sound if necessary
|
||||
if(!silent)
|
||||
owner.visible_message("<font color='green'><b>[owner] [release_verb] [M] from their [lowertext(name)]!</b></font>")
|
||||
owner.visible_message("<font color='green'><b>[owner] [release_verb] [M] from their [lowertext(name)]!</b></font>",range = privacy_range)
|
||||
var/soundfile
|
||||
if(!fancy_vore)
|
||||
soundfile = classic_release_sounds[release_sound]
|
||||
else
|
||||
soundfile = fancy_release_sounds[release_sound]
|
||||
if(soundfile)
|
||||
playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
|
||||
playsound(src, soundfile, vol = privacy_volume, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
|
||||
//Should fix your view not following you out of mobs sometimes!
|
||||
if(ismob(M))
|
||||
var/mob/ourmob = M
|
||||
@@ -1187,6 +1213,7 @@
|
||||
dupe.emote_active = emote_active
|
||||
dupe.selective_preference = selective_preference
|
||||
dupe.save_digest_mode = save_digest_mode
|
||||
dupe.eating_privacy_local = eating_privacy_local
|
||||
|
||||
//// Object-holding variables
|
||||
//struggle_messages_outside - strings
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
var/selective_preference = DM_DEFAULT // Preference for selective bellymode
|
||||
var/appendage_color = "#e03997" //Default pink. Used for the 'long_vore' trait.
|
||||
var/appendage_alt_setting = FALSE // Dictates if 'long_vore' user pulls prey to them or not. 1 = user thrown towards target.
|
||||
var/eating_privacy_global = FALSE //Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var
|
||||
var/regen_sounds = list(
|
||||
'sound/effects/mob_effects/xenochimera/regen_1.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_2.ogg',
|
||||
@@ -286,6 +287,7 @@
|
||||
P.slip_vore = src.slip_vore
|
||||
P.throw_vore = src.throw_vore
|
||||
P.stumble_vore = src.stumble_vore
|
||||
P.eating_privacy_global = src.eating_privacy_global
|
||||
|
||||
P.nutrition_message_visible = src.nutrition_message_visible
|
||||
P.nutrition_messages = src.nutrition_messages
|
||||
@@ -335,6 +337,7 @@
|
||||
slip_vore = P.slip_vore
|
||||
throw_vore = P.throw_vore
|
||||
stumble_vore = P.stumble_vore
|
||||
eating_privacy_global = P.eating_privacy_global
|
||||
|
||||
nutrition_message_visible = P.nutrition_message_visible
|
||||
nutrition_messages = P.nutrition_messages
|
||||
@@ -600,6 +603,18 @@
|
||||
to_chat(user, "<span class='warning'>They aren't aren't in a state to be devoured.</span>")
|
||||
return FALSE
|
||||
|
||||
//Determining vore attempt privacy
|
||||
var/message_range = world.view
|
||||
if(!pred.is_slipping && !prey.is_slipping) //We only care about privacy preference if it's NOT a spontaneous vore.
|
||||
switch(belly.eating_privacy_local) //if("loud") case not added, as it would not modify message_range
|
||||
if("default")
|
||||
if(pred.eating_privacy_global)
|
||||
message_range = 1
|
||||
if("subtle")
|
||||
message_range = 1
|
||||
|
||||
|
||||
|
||||
// Slipnoms from chompstation downstream, credit to cadyn for the original PR.
|
||||
// Prepare messages
|
||||
if(prey.is_slipping)
|
||||
@@ -616,7 +631,10 @@
|
||||
success_msg = "<span class='warning'>[user] manages to make [pred] [lowertext(belly.vore_verb)] [prey] into their [lowertext(belly.name)]!</span>"
|
||||
|
||||
// Announce that we start the attempt!
|
||||
user.visible_message(attempt_msg)
|
||||
|
||||
|
||||
user.visible_message(attempt_msg, range = message_range)
|
||||
|
||||
|
||||
// Now give the prey time to escape... return if they did
|
||||
var/swallow_time
|
||||
@@ -633,7 +651,7 @@
|
||||
return FALSE // Prey escpaed (or user disabled) before timer expired.
|
||||
|
||||
// If we got this far, nom successful! Announce it!
|
||||
user.visible_message(success_msg)
|
||||
user.visible_message(success_msg, range = message_range)
|
||||
|
||||
// Actually shove prey into the belly.
|
||||
if(istype(prey.loc, /obj/item/weapon/holder))
|
||||
@@ -1079,6 +1097,7 @@
|
||||
dispvoreprefs += "<b>Spontaneous transformation:</b> [allow_spontaneous_tf ? "Enabled" : "Disabled"]<br>"
|
||||
dispvoreprefs += "<b>Can be stepped on/over:</b> [step_mechanics_pref ? "Allowed" : "Disallowed"]<br>"
|
||||
dispvoreprefs += "<b>Can be picked up:</b> [pickup_pref ? "Allowed" : "Disallowed"]<br>"
|
||||
dispvoreprefs += "<b>Global Vore Privacy is:</b> [eating_privacy_global ? "Subtle" : "Loud"]<br>"
|
||||
user << browse("<html><head><title>Vore prefs: [src]</title></head><body><center>[dispvoreprefs]</center></body></html>", "window=[name]mvp;size=300x400;can_resize=1;can_minimize=0")
|
||||
onclose(user, "[name]")
|
||||
return
|
||||
|
||||
@@ -55,6 +55,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
var/allowmobvore = TRUE
|
||||
var/permit_healbelly = TRUE
|
||||
var/noisy = FALSE
|
||||
var/eating_privacy_global = FALSE //Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var
|
||||
|
||||
// These are 'modifier' prefs, do nothing on their own but pair with drop_prey/drop_pred settings.
|
||||
var/drop_vore = TRUE
|
||||
@@ -192,6 +193,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
nutrition_messages = json_from_file["nutrition_messages"]
|
||||
weight_message_visible = json_from_file["weight_message_visible"]
|
||||
weight_messages = json_from_file["weight_messages"]
|
||||
eating_privacy_global = json_from_file["eating_privacy_global"]
|
||||
|
||||
//Quick sanitize
|
||||
if(isnull(digestable))
|
||||
@@ -246,6 +248,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
nutrition_message_visible = TRUE
|
||||
if(isnull(weight_message_visible))
|
||||
weight_message_visible = TRUE
|
||||
if(isnull(eating_privacy_global))
|
||||
eating_privacy_global = FALSE
|
||||
if(isnull(nutrition_messages))
|
||||
nutrition_messages = list(
|
||||
"They are starving! You can hear their stomach snarling from across the room!",
|
||||
@@ -316,6 +320,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
"nutrition_messages" = nutrition_messages,
|
||||
"weight_message_visible" = weight_message_visible,
|
||||
"weight_messages" = weight_messages,
|
||||
"eating_privacy_global" = eating_privacy_global,
|
||||
)
|
||||
|
||||
//List to JSON
|
||||
|
||||
@@ -191,6 +191,7 @@
|
||||
"belly_fullscreen" = selected.belly_fullscreen,
|
||||
"belly_fullscreen_color" = selected.belly_fullscreen_color,
|
||||
"colorization_enabled" = selected.colorization_enabled,
|
||||
"eating_privacy_local" = selected.eating_privacy_local
|
||||
)
|
||||
|
||||
var/list/addons = list()
|
||||
@@ -284,7 +285,8 @@
|
||||
"nutrition_message_visible" = host.nutrition_message_visible,
|
||||
"nutrition_messages" = host.nutrition_messages,
|
||||
"weight_message_visible" = host.weight_message_visible,
|
||||
"weight_messages" = host.weight_messages
|
||||
"weight_messages" = host.weight_messages,
|
||||
"eating_privacy_global" = host.eating_privacy_global
|
||||
)
|
||||
|
||||
return data
|
||||
@@ -450,6 +452,12 @@
|
||||
host.client.prefs_vr.digestable = host.digestable
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
if("toggle_global_privacy")
|
||||
host.eating_privacy_global = !host.eating_privacy_global
|
||||
if(host.client.prefs_vr)
|
||||
host.eating_privacy_global = host.eating_privacy_global
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
if("toggle_devour")
|
||||
host.devourable = !host.devourable
|
||||
if(host.client.prefs_vr)
|
||||
@@ -1101,6 +1109,12 @@
|
||||
|
||||
host.vore_selected.release_verb = new_release_verb
|
||||
. = TRUE
|
||||
if("b_eating_privacy")
|
||||
var/privacy_choice = tgui_input_list(usr, "Choose your belly-specific preference. Default uses global preference!", "Eating message privacy", list("default", "subtle", "loud"), "default")
|
||||
if(privacy_choice == null)
|
||||
return FALSE
|
||||
host.vore_selected.eating_privacy_local = privacy_choice
|
||||
. = TRUE
|
||||
if("b_fancy_sound")
|
||||
host.vore_selected.fancy_vore = !host.vore_selected.fancy_vore
|
||||
host.vore_selected.vore_sound = "Gulp"
|
||||
|
||||
@@ -245,6 +245,7 @@
|
||||
new_mob.vore_smell = vore_smell
|
||||
new_mob.nutrition_message_visible = nutrition_message_visible
|
||||
new_mob.allow_spontaneous_tf = allow_spontaneous_tf
|
||||
new_mob.eating_privacy_global = eating_privacy_global
|
||||
|
||||
/////SUBTYPES/////
|
||||
|
||||
|
||||
Reference in New Issue
Block a user