[MIRROR] Add AFK pred/prey and contaminate worn items preferences (#12044)

Co-authored-by: TheGreatKitsune <88862343+TheGreatKitsune@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-11-27 18:58:46 -07:00
committed by GitHub
parent 2465e088c7
commit f10636966f
14 changed files with 145 additions and 7 deletions

View File

@@ -20,6 +20,8 @@
\
target.can_be_drop_prey = source.can_be_drop_prey; \
target.can_be_drop_pred = source.can_be_drop_pred; \
target.can_be_afk_prey = source.can_be_afk_prey; \
target.can_be_afk_pred = source.can_be_afk_pred; \
target.throw_vore = source.throw_vore; \
target.food_vore = source.food_vore; \
target.drop_vore = source.drop_vore; \
@@ -56,6 +58,7 @@
\
target.autotransferable = source.autotransferable; \
target.strip_pref = source.strip_pref; \
target.contaminate_pref = source.contaminate_pref; \
target.vore_sprite_multiply = source.vore_sprite_multiply; \
target.vore_sprite_color = source.vore_sprite_color; \
target.belly_rub_target = source.belly_rub_target; \

View File

@@ -17,6 +17,10 @@
return FALSE
if(!pred.vore_selected)
return FALSE
if(!pred.can_be_afk_pred && (!pred.client || pred.away_from_keyboard))
return FALSE
if(!prey.can_be_afk_prey && (!prey.client || prey.away_from_keyboard))
return FALSE
return TRUE
/// Basic spont vore check.

View File

@@ -32,6 +32,8 @@
feeding = client.prefs_vr.feeding
can_be_drop_prey = client.prefs_vr.can_be_drop_prey
can_be_drop_pred = client.prefs_vr.can_be_drop_pred
can_be_afk_prey = client.prefs_vr.can_be_afk_prey
can_be_afk_pred = client.prefs_vr.can_be_afk_pred
throw_vore = client.prefs_vr.throw_vore
food_vore = client.prefs_vr.food_vore
consume_liquid_belly = client.prefs_vr.consume_liquid_belly
@@ -65,6 +67,7 @@
autotransferable = client.prefs_vr.autotransferable
noisy_full = client.prefs_vr.noisy_full
strip_pref = client.prefs_vr.strip_pref
contaminate_pref = client.prefs_vr.contaminate_pref
vore_sprite_color = client.prefs_vr.vore_sprite_color
vore_sprite_multiply = client.prefs_vr.vore_sprite_multiply
no_latejoin_vore_warning = client.prefs_vr.no_latejoin_vore_warning

View File

@@ -210,7 +210,7 @@
H.forced_psay = FALSE
//Worn items flag
if(mode_flags & DM_FLAG_AFFECTWORN)
if((mode_flags & DM_FLAG_AFFECTWORN) && H.contaminate_pref)
for(var/slot in slots)
var/obj/item/I = H.get_equipped_item(slot = slot)
if(I && I.canremove)

View File

@@ -1059,10 +1059,13 @@
dat += span_bold("Affected by temperature:") + " [allowtemp ? span_green("Enabled") : span_red("Disabled")]<br>"
dat += span_bold("Autotransferable:") + " [autotransferable ? span_green("Enabled") : span_red("Disabled")]<br>"
dat += span_bold("Can be stripped:") + " [strip_pref ? span_green("Allowed") : span_red("Disallowed")]<br>"
dat += span_bold("Worn items can be contaminated:") + " [contaminate_pref ? span_green("Allowed") : span_red("Disallowed")]<br>"
dat += span_bold("Applying reagents:") + " [apply_reagents ? span_green("Allowed") : span_red("Disallowed")]<br>"
dat += span_bold("Leaves Remains:") + " [digest_leave_remains ? span_green("Enabled") : span_red("Disabled")]<br>"
dat += span_bold("Spontaneous vore prey:") + " [can_be_drop_prey ? span_green("Enabled") : span_red("Disabled")]<br>"
dat += span_bold("Spontaneous vore prey:") + " [can_be_drop_prey ? span_green("Enabled") : span_red("Disabled")]<br>"
dat += span_bold("AFK/Disconnected vore prey:") + " [can_be_afk_prey ? span_green("Enabled") : span_red("Disabled")]<br>"
dat += span_bold("Spontaneous vore pred:") + " [can_be_drop_pred ? span_green("Enabled") : span_red("Disabled")]<br>"
dat += span_bold("AFK/Disconnected vore pred:") + " [can_be_afk_pred ? span_green("Enabled") : span_red("Disabled")]<br>"
if(can_be_drop_prey || can_be_drop_pred)
dat += span_bold("Drop Vore:") + " [drop_vore ? span_green("Enabled") : span_red("Disabled")]<br>"
dat += span_bold("Slip Vore:") + " [slip_vore ? span_green("Enabled") : span_red("Disabled")]<br>"

View File

@@ -23,6 +23,8 @@
var/digest_pain = TRUE
var/can_be_drop_prey = FALSE
var/can_be_drop_pred = FALSE
var/can_be_afk_prey = TRUE
var/can_be_afk_pred = TRUE
var/allow_spontaneous_tf = FALSE // Obviously.
var/show_vore_fx = TRUE // Show belly fullscreens
var/selective_preference = DM_DEFAULT // Preference for selective bellymode
@@ -80,6 +82,7 @@
var/noisy_full = FALSE //Enables belching when a mob has overeaten
var/phase_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/strip_pref = TRUE //Enables the ability for worn items to be stripped
var/contaminate_pref = TRUE //Enables the ability for worn items to be digested/contaminated.
var/no_latejoin_vore_warning = FALSE //Auto accepts pred spwan notifications (roundbased / saveable)
var/no_latejoin_prey_warning = FALSE //Auto accepts prey spawn notifications (roundbased / saveable)
var/no_latejoin_vore_warning_time = 15 //Time until accepting prey

View File

@@ -12,6 +12,8 @@
"show_vore_fx" = owner.show_vore_fx,
"can_be_drop_prey" = owner.can_be_drop_prey,
"can_be_drop_pred" = owner.can_be_drop_pred,
"can_be_afk_prey" = owner.can_be_afk_prey,
"can_be_afk_pred" = owner.can_be_afk_pred,
"latejoin_vore" = owner.latejoin_vore,
"latejoin_prey" = owner.latejoin_prey,
"no_spawnpred_warning" = owner.no_latejoin_vore_warning,
@@ -24,6 +26,7 @@
"step_mechanics_active" = owner.step_mechanics_pref,
"pickup_mechanics_active" = owner.pickup_pref,
"strip_mechanics_active" = owner.strip_pref,
"contaminate_worn_items" = owner.contaminate_pref,
"noisy" = owner.noisy,
//liquid belly prefs
"liq_rec" = owner.receive_reagents,

View File

@@ -186,4 +186,16 @@
if(prey.absorbed || pred.absorbed)
to_chat(user, span_vwarning("They aren't aren't in a state to be devoured."))
return FALSE
if(!pred.can_be_afk_pred && (!pred.client || pred.away_from_keyboard))
if(user == pred)
to_chat(user, span_vwarning("You aren't set as being able to pred while AFK"))
return FALSE
to_chat(user, span_vnotice("The predator prefers not to be fed while AFK"))
return FALSE
if(!prey.can_be_afk_prey && (!prey.client || prey.away_from_keyboard))
if(user == prey)
to_chat(user, span_vwarning("You aren't set as being able to prey while AFK"))
return FALSE
to_chat(user, span_vnotice("The prey prefers not to be eaten while AFK"))
return FALSE
return TRUE

View File

@@ -41,6 +41,8 @@
var/feeding = TRUE
var/can_be_drop_prey = FALSE
var/can_be_drop_pred = FALSE
var/can_be_afk_prey = FALSE
var/can_be_afk_pred = FALSE
var/allow_spontaneous_tf = FALSE
var/digest_leave_remains = FALSE
var/allowmobvore = TRUE
@@ -78,6 +80,7 @@
var/latejoin_prey = FALSE
var/autotransferable = TRUE
var/strip_pref = FALSE
var/contaminate_pref = TRUE
var/no_latejoin_vore_warning = FALSE // Only load, when... no_latejoin_vore_warning_persists
var/no_latejoin_prey_warning = FALSE // Only load, when... no_latejoin_vore_warning_persists
var/no_latejoin_vore_warning_time = 15 // Only load, when... no_latejoin_vore_warning_persists
@@ -203,6 +206,8 @@
show_vore_fx = json_from_file["show_vore_fx"]
can_be_drop_prey = json_from_file["can_be_drop_prey"]
can_be_drop_pred = json_from_file["can_be_drop_pred"]
can_be_afk_prey = json_from_file["can_be_afk_prey"]
can_be_afk_pred = json_from_file["can_be_afk_pred"]
allow_spontaneous_tf = json_from_file["allow_spontaneous_tf"]
step_mechanics_pref = json_from_file["step_mechanics_pref"]
pickup_pref = json_from_file["pickup_pref"]
@@ -234,6 +239,7 @@
autotransferable = json_from_file["autotransferable"]
vore_sprite_multiply = json_from_file["vore_sprite_multiply"]
strip_pref = json_from_file["strip_pref"]
contaminate_pref = json_from_file["contaminate_pref"]
no_latejoin_vore_warning_persists = json_from_file["no_latejoin_vore_warning_persists"]
if(no_latejoin_vore_warning_persists)
@@ -278,6 +284,10 @@
can_be_drop_prey = FALSE
if(isnull(can_be_drop_pred))
can_be_drop_pred = FALSE
if(isnull(can_be_afk_prey))
can_be_afk_prey = FALSE
if(isnull(can_be_afk_pred))
can_be_afk_pred = FALSE
if(isnull(allow_spontaneous_tf))
allow_spontaneous_tf = FALSE
if(isnull(step_mechanics_pref))
@@ -363,6 +373,8 @@
vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE)
if(isnull(strip_pref))
strip_pref = TRUE
if(isnull(contaminate_pref))
contaminate_pref = TRUE
if(isnull(no_latejoin_vore_warning))
no_latejoin_vore_warning = FALSE
if(isnull(no_latejoin_prey_warning))
@@ -410,6 +422,8 @@
"show_vore_fx" = show_vore_fx,
"can_be_drop_prey" = can_be_drop_prey,
"can_be_drop_pred" = can_be_drop_pred,
"can_be_afk_prey" = can_be_afk_prey,
"can_be_afk_pred" = can_be_afk_pred,
"latejoin_vore" = latejoin_vore,
"latejoin_prey" = latejoin_prey,
"allow_spontaneous_tf" = allow_spontaneous_tf,
@@ -437,6 +451,7 @@
"allow_mimicry" = allow_mimicry,
"vore_sprite_multiply" = vore_sprite_multiply,
"strip_pref" = strip_pref,
"contaminate_pref" = contaminate_pref,
"no_latejoin_vore_warning" = no_latejoin_vore_warning,
"no_latejoin_prey_warning" = no_latejoin_prey_warning,
"no_latejoin_vore_warning_time" = no_latejoin_vore_warning_time,

View File

@@ -392,6 +392,18 @@
host.client.prefs_vr.can_be_drop_prey = host.can_be_drop_prey
unsaved_changes = TRUE
return TRUE
if("toggle_afk_pred")
host.can_be_afk_pred = !host.can_be_afk_pred
if(host.client.prefs_vr)
host.client.prefs_vr.can_be_afk_pred = host.can_be_afk_pred
unsaved_changes = TRUE
return TRUE
if("toggle_afk_prey")
host.can_be_afk_prey = !host.can_be_afk_prey
if(host.client.prefs_vr)
host.client.prefs_vr.can_be_afk_prey = host.can_be_afk_prey
unsaved_changes = TRUE
return TRUE
if("toggle_latejoin_vore")
host.latejoin_vore = !host.latejoin_vore
if(host.client.prefs_vr)
@@ -494,6 +506,12 @@
host.client.prefs_vr.strip_pref = host.strip_pref
unsaved_changes = TRUE
return TRUE
if("toggle_contaminate_pref")
host.contaminate_pref = !host.contaminate_pref
if(host.client.prefs_vr)
host.client.prefs_vr.contaminate_pref = host.contaminate_pref
unsaved_changes = TRUE
return TRUE
if("toggle_allow_mind_transfer")
host.allow_mind_transfer = !host.allow_mind_transfer
if(host.client.prefs_vr)