vorepanel setting update (#7567)

Co-authored-by: Selis <selis@xynolabs.com>
This commit is contained in:
Kashargul
2024-02-04 15:50:51 +01:00
committed by GitHub
parent da2f47c468
commit 6edb784df7
21 changed files with 1130 additions and 328 deletions

View File

@@ -702,7 +702,14 @@ var/global/datum/controller/occupations/job_master
log_admin("[key_name(C)] has requested to vore spawn into [key_name(pred)]")
message_admins("[key_name(C)] has requested to vore spawn into [key_name(pred)]")
var/confirm = alert(pred, "[C.prefs.real_name] is attempting to spawn into your [vore_spawn_gut]. Let them?", "Confirm", "No", "Yes")
var/confirm
if(pred.no_latejoin_vore_warning)
if(pred.no_latejoin_vore_warning_time > 0)
confirm = tgui_alert(pred, "[C.prefs.real_name] is attempting to spawn into your [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"), pred.no_latejoin_vore_warning_time SECONDS)
if(!confirm)
confirm = "Yes"
else
confirm = alert(pred, "[C.prefs.real_name] is attempting to spawn into your [vore_spawn_gut]. Let them?", "Confirm", "No", "Yes")
if(confirm != "Yes")
to_chat(C, "<span class='warning'>[pred] has declined your spawn request.</span>")
var/message = sanitizeSafe(input(pred,"Do you want to leave them a message?")as text|null)
@@ -763,7 +770,14 @@ var/global/datum/controller/occupations/job_master
log_admin("[key_name(C)] has requested to pred spawn onto [key_name(prey)]")
message_admins("[key_name(C)] has requested to pred spawn onto [key_name(prey)]")
var/confirm = alert(prey, "[C.prefs.real_name] is attempting to televore you into their [vore_spawn_gut]. Let them?", "Confirm", "No", "Yes")
var/confirm
if(prey.no_latejoin_prey_warning)
if(prey.no_latejoin_prey_warning_time > 0)
confirm = tgui_alert(prey, "[C.prefs.real_name] is attempting to televore you into their [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"), prey.no_latejoin_prey_warning_time SECONDS)
if(!confirm)
confirm = "Yes"
else
confirm = alert(prey, "[C.prefs.real_name] is attempting to televore you into their [vore_spawn_gut]. Let them?", "Confirm", "No", "Yes")
if(confirm != "Yes")
to_chat(C, "<span class='warning'>[prey] has declined your spawn request.</span>")
var/message = sanitizeSafe(input(prey,"Do you want to leave them a message?")as text|null)

View File

@@ -63,6 +63,10 @@
new_mob.key = picked_client.key //Finally put them in the mob
if(organs)
new_mob.copy_from_prefs_vr()
// CHOMPEdit Start
if(LAZYLEN(new_mob.vore_organs))
new_mob.vore_selected = new_mob.vore_organs[1]
// CHOMPEdit End
log_admin("[key_name_admin(src)] has spawned [new_mob.key] as mob [new_mob.type].")
message_admins("[key_name_admin(src)] has spawned [new_mob.key] as mob [new_mob.type].", 1)

View File

@@ -178,13 +178,18 @@
remove_modifiers_of_type(/datum/modifier/shadekin_phase) //CHOMPEdit - Shadekin probably shouldn't be hit while phasing
//Potential phase-in vore
if(can_be_drop_pred) //Toggleable in vore panel
if(can_be_drop_pred || can_be_drop_prey) //Toggleable in vore panel
var/list/potentials = living_mobs(0)
if(potentials.len)
var/mob/living/target = pick(potentials)
if(istype(target) && target.devourable && target.can_be_drop_prey && vore_selected)
if(can_be_drop_pred && istype(target) && target.devourable && target.can_be_drop_prey && target.phase_vore && vore_selected && phase_vore)
target.forceMove(vore_selected)
to_chat(target,"<span class='vwarning'>\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!</span>")
to_chat(target, "<span class='vwarning'>\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!</span>")
to_chat(src, "<span class='vwarning'>You phase around [target], [vore_selected.vore_verb]ing them into your [vore_selected.name]!</span>")
else if(can_be_drop_prey && istype(target) && devourable && target.can_be_drop_pred && target.phase_vore && target.vore_selected && phase_vore)
forceMove(target.vore_selected)
to_chat(target, "<span class='vwarning'>\The [src] phases into you, [target.vore_selected.vore_verb]ing them into your [target.vore_selected.name]!</span>")
to_chat(src, "<span class='vwarning'>You phase into [target], having them [target.vore_selected.vore_verb] you into their [target.vore_selected.name]!</span>")
ability_flags &= ~AB_PHASE_SHIFTING
@@ -683,7 +688,7 @@
to_chat(owner, "<span class='warning'>A dark maw you deployed has triggered!</span>")
spawn(10)
var/will_vore = 1
if(!owner || !(target in owner) || !L.devourable || !L.can_be_drop_prey || !owner.can_be_drop_pred)
if(!owner || !(target in owner) || !L.devourable || !L.can_be_drop_prey || !owner.can_be_drop_pred || !L.phase_vore)
will_vore = 0
if(!src || src.gc_destroyed)
//We got deleted probably, do nothing more

View File

@@ -27,7 +27,6 @@
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
latejoin_vore = client.prefs_vr.latejoin_vore //CHOMPedit
throw_vore = client.prefs_vr.throw_vore
food_vore = client.prefs_vr.food_vore
allow_spontaneous_tf = client.prefs_vr.allow_spontaneous_tf
@@ -47,6 +46,26 @@
step_mechanics_pref = client.prefs_vr.step_mechanics_pref
pickup_pref = client.prefs_vr.pickup_pref
//CHOMP Stuff Start
phase_vore = client.prefs_vr.phase_vore
latejoin_vore = client.prefs_vr.latejoin_vore
latejoin_prey = client.prefs_vr.latejoin_prey
receive_reagents = client.prefs_vr.receive_reagents
give_reagents = client.prefs_vr.give_reagents
apply_reagents = client.prefs_vr.apply_reagents
autotransferable = client.prefs_vr.autotransferable
noisy_full = client.prefs_vr.noisy_full
strip_pref = client.prefs_vr.strip_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
no_latejoin_prey_warning = client.prefs_vr.no_latejoin_prey_warning
no_latejoin_vore_warning_time = client.prefs_vr.no_latejoin_vore_warning_time
no_latejoin_prey_warning_time = client.prefs_vr.no_latejoin_prey_warning_time
no_latejoin_vore_warning_persists = client.prefs_vr.no_latejoin_vore_warning_persists
no_latejoin_prey_warning_persists = client.prefs_vr.no_latejoin_prey_warning_persists
//CHOMP Stuff End
/mob/living/simple_mob/proc/set_name()
set name = "Set Name"
set desc = "Sets your mobs name. You only get to do this once."

View File

@@ -412,7 +412,7 @@
remove_self(volume)
return
if(B.owner)
if(B.reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && B.reagents.total_volume < B.custom_max_volume)
if(B.show_liquids && B.reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && B.reagents.total_volume < B.custom_max_volume)
B.owner_adjust_nutrition(removed * (B.nutrition_percent / 100) * power)
B.digest_nutri_gain += removed * (B.nutrition_percent / 100) + 0.5
B.GenerateBellyReagents_digesting()
@@ -466,7 +466,7 @@
remove_self(volume)
return
if(B.owner)
if(B.reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && B.reagents.total_volume < B.custom_max_volume)
if(B.show_liquids && B.reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && B.reagents.total_volume < B.custom_max_volume)
B.owner_adjust_nutrition(volume * (B.nutrition_percent / 100) * power)
B.digest_nutri_gain += volume * (B.nutrition_percent / 100) + 0.5
B.GenerateBellyReagents_digesting()

View File

@@ -38,7 +38,7 @@
else if(prob(10))
B.absorb_living(P)
//absorption reagent production
if(B.reagent_mode_flags & DM_FLAG_REAGENTSABSORB && B.reagents.total_volume < B.reagents.maximum_volume)
if(B.show_liquids && B.reagent_mode_flags & DM_FLAG_REAGENTSABSORB && B.reagents.total_volume < B.reagents.maximum_volume)
B.GenerateBellyReagents_absorbed()
/datum/reagent/radium/concentrated
@@ -81,4 +81,4 @@
if(rad_organ && !rad_organ.is_broken())
absorbed = 1
if(!absorbed)
M.adjustToxLoss(100)
M.adjustToxLoss(100)

View File

@@ -31,6 +31,7 @@
var/custom_ingested_alpha = 255 //Custom alpha for ingested reagent layer if not using normal mush layer.
var/nutri_reagent_gen = FALSE //if belly produces reagent over time using nutrition, needs to be optimized to use subsystem - Jack
var/is_beneficial = FALSE //Sets a reagent as a beneficial one / healing reagents
var/list/generated_reagents = list("water" = 1) //Any number of reagents, the associated value is how many units are generated per process()
var/reagent_name = "water" //What is shown when reagents are removed, doesn't need to be an actual reagent
var/reagentid = "water" //Selected reagent's id, for use in puddle system currently
@@ -89,6 +90,7 @@
"Cherry Jelly",
"Digestive acid",
"Diluted digestive acid",
"Space cleaner",
"Lube",
"Biomass",
"Concentrated Radium",
@@ -182,10 +184,10 @@
///////////////////// NUTRITION REAGENT PRODUCTION /////////////////
/obj/belly/proc/HandleBellyReagents()
if(reagentbellymode && reagent_mode_flags & DM_FLAG_REAGENTSNUTRI && reagents.total_volume < custom_max_volume && !isnewplayer(owner)) //Removed if(reagentbellymode == TRUE) since that's less optimized
if(show_liquids && reagentbellymode && reagent_mode_flags & DM_FLAG_REAGENTSNUTRI && reagents.total_volume < custom_max_volume && !isnewplayer(owner)) //Removed if(reagentbellymode == TRUE) since that's less optimized
if(isrobot(owner))
var/mob/living/silicon/robot/R = owner
if(R.cell.charge >= gen_cost*10 && gen_interval >= gen_time)
if(R.cell && R.cell.charge >= gen_cost*10 && gen_interval >= gen_time)
GenerateBellyReagents()
gen_interval = 0
else
@@ -199,15 +201,22 @@
/obj/belly/proc/HandleBellyReagentEffects(var/list/touchable_atoms)
if(LAZYLEN(contents))
if(reagent_touches && reagents.total_volume >= 5)
if(show_liquids && reagent_touches && reagents.total_volume >= 5)
var/affecting_amt = reagents.total_volume / max(LAZYLEN(touchable_atoms), 1)
if(affecting_amt > 5)
affecting_amt = 5
if(affecting_amt >= 1)
for(var/mob/living/L in touchable_atoms)
if(L.digestable && digest_mode == DM_DIGEST)
if(!L.apply_reagents)
continue
if((L.digestable && digest_mode == DM_DIGEST))
if(!L.permit_healbelly && is_beneficial) // Healing reagents turned off in preferences!
continue
if(reagents.total_volume)
reagents.trans_to(L, affecting_amt, 1, FALSE)
if(L.permit_healbelly && digest_mode == DM_HEAL)
if(is_beneficial && reagents.total_volume)
reagents.trans_to(L, affecting_amt, 1, FALSE)
for(var/obj/item/I in touchable_atoms)
if(reagents.total_volume)
reagents.trans_to(I, affecting_amt, 1, FALSE)
@@ -277,88 +286,101 @@
switch(reagent_chosen)
if("Water")
generated_reagents = list("water" = 1)
reagent_name = "water"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "water"
gen_amount = 1
gen_cost = 1
reagentid = "water"
reagentcolor = "#0064C877"
if("Milk")
generated_reagents = list("milk" = 1)
reagent_name = "milk"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "milk"
gen_amount = 1
gen_cost = 5
reagentid = "milk"
reagentcolor = "#DFDFDF"
if("Cream")
generated_reagents = list("cream" = 1)
reagent_name = "cream"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "cream"
gen_amount = 1
gen_cost = 5
reagentid = "cream"
reagentcolor = "#DFD7AF"
if("Honey")
generated_reagents = list("honey" = 1)
reagent_name = "honey"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "honey"
gen_amount = 1
gen_cost = 10
reagentid = "honey"
reagentcolor = "#FFFF00"
if("Cherry Jelly") //Kinda WIP, allows slime like folks something to stuff others with, should make a generic jelly in future
generated_reagents = list("cherryjelly" = 1)
reagent_name = "cherry jelly"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "cherry jelly"
gen_amount = 1
gen_cost = 10
reagentid = "cherryjelly"
reagentcolor = "#801E28"
if("Digestive acid")
generated_reagents = list("stomacid" = 1)
reagent_name = "digestive acid"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "digestive acid"
gen_amount = 1
gen_cost = 1
reagentid = "stomacid"
reagentcolor = "#664330"
if("Diluted digestive acid")
generated_reagents = list("diet_stomacid" = 1)
reagent_name = "diluted digestive acid"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "diluted digestive acid"
gen_amount = 1
gen_cost = 1
reagentid = "diet_stomacid"
reagentcolor = "#664330"
if("Space cleaner")
generated_reagents = list("cleaner" = 1)
reagent_name = "space cleaner"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "space cleaner"
gen_amount = 1
gen_cost = 10
reagentid = "cleaner"
reagentcolor = "#A5F0EE"
if("Lube")
generated_reagents = list("lube" = 1)
reagent_name = "lube"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "lube"
gen_amount = 1
gen_cost = 10
reagentid = "lube"
reagentcolor = "#009CA8"
if("Biomass")
generated_reagents = list("biomass" = 1)
reagent_name = "biomass"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "biomass"
gen_amount = 1
gen_cost = 10
reagentid = "biomass"
reagentcolor = "#DF9FBF"
if("Concentrated Radium")
generated_reagents = list("concentrated_radium" = 1)
reagent_name = "concentrated radium"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "concentrated radium"
gen_amount = 1
gen_cost = 1
reagentid = "concentrated_radium"
reagentcolor = "#C7C7C7"
if("Tricordrazine")
generated_reagents = list("tricordrazine" = 1)
reagent_name = "tricordrazine"
if(capitalize(reagent_name) in reagent_choices)
reagent_name = "tricordrazine"
gen_amount = 1
gen_cost = 10
reagentid = "tricordrazine"
reagentcolor = "#8040FF"
is_beneficial = TRUE
/////////////////////// FULLNESS MESSAGES //////////////////////
@@ -374,7 +396,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner)
return("<span class='warning'>[formatted_message]</span><BR>")
return(span_red("[formatted_message]<BR>"))
/obj/belly/proc/get_reagent_examine_msg2()
if(fullness1_messages.len)
@@ -384,7 +406,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner)
return("<span class='warning'>[formatted_message]</span><BR>")
return(span_red("[formatted_message]<BR>"))
/obj/belly/proc/get_reagent_examine_msg3()
if(fullness1_messages.len)
@@ -394,7 +416,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner)
return("<span class='warning'>[formatted_message]</span><BR>")
return(span_red("[formatted_message]<BR>"))
/obj/belly/proc/get_reagent_examine_msg4()
if(fullness1_messages.len)
@@ -404,7 +426,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner)
return("<span class='warning'>[formatted_message]</span><BR>")
return(span_red("[formatted_message]<BR>"))
/obj/belly/proc/get_reagent_examine_msg5()
if(fullness1_messages.len)
@@ -414,7 +436,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner)
return("<span class='warning'>[formatted_message]</span><BR>")
return(span_red("[formatted_message]<BR>"))
// The next function gets the messages set on the belly, in human-readable format.

View File

@@ -575,8 +575,8 @@
//Stop AI processing in bellies
if(M.ai_holder)
M.ai_holder.go_sleep()
if(reagents.total_volume >= 5 && M.digestable) //CHOMPEdit Start
if(digest_mode == DM_DIGEST)
if(reagents.total_volume >= 5) //CHOMPEdit Start
if(digest_mode == DM_DIGEST && M.digestable)
reagents.trans_to(M, reagents.total_volume * 0.1, 1 / max(LAZYLEN(contents), 1), FALSE)
to_chat(M, "<span class='vwarning'><B>You splash into a pool of [reagent_name]!</B></span>")
if(!isliving(thing) && count_items_for_sprite) //CHOMPEdit - If this is enabled also update fullness for non-living things
@@ -727,7 +727,7 @@
I.alpha = custom_ingested_alpha
I.pixel_y = -450 + ((450 / max(max_ingested, 1)) * min(max_ingested, ingested.total_volume))
F.add_overlay(I)
if(L.liquidbelly_visuals && mush_overlay && (owner.nutrition > 0 || max_mush == 0 || min_mush > 0 || (LAZYLEN(contents) * item_mush_val) > 0))
if(show_liquids && L.liquidbelly_visuals && mush_overlay && (owner.nutrition > 0 || max_mush == 0 || min_mush > 0 || (LAZYLEN(contents) * item_mush_val) > 0))
I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "mush")
I.color = mush_color
I.alpha = mush_alpha
@@ -743,7 +743,7 @@
I.alpha = min(mush_alpha, (extra_mush / max(total_mush_content, 1)) * mush_alpha)
I.pixel_y = stored_y
F.add_overlay(I)
if(L.liquidbelly_visuals && liquid_overlay && reagents.total_volume)
if(show_liquids && L.liquidbelly_visuals && liquid_overlay && reagents.total_volume)
if(digest_mode == DM_HOLD && item_digest_mode == IM_HOLD)
I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "calm")
else
@@ -785,7 +785,7 @@
I.alpha = custom_ingested_alpha
I.pixel_y = -450 + (450 / max(max_ingested, 1) * max(min(max_ingested, ingested.total_volume), 1))
F.add_overlay(I)
if(L.liquidbelly_visuals && mush_overlay && (owner.nutrition > 0 || max_mush == 0 || min_mush > 0 || (LAZYLEN(contents) * item_mush_val) > 0))
if(show_liquids && L.liquidbelly_visuals && mush_overlay && (owner.nutrition > 0 || max_mush == 0 || min_mush > 0 || (LAZYLEN(contents) * item_mush_val) > 0))
I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "mush")
I.color = mush_color
I.alpha = mush_alpha
@@ -801,7 +801,7 @@
I.alpha = min(mush_alpha, (extra_mush / max(total_mush_content, 1)) * mush_alpha)
I.pixel_y = stored_y
F.add_overlay(I)
if(L.liquidbelly_visuals && liquid_overlay && reagents.total_volume)
if(show_liquids && L.liquidbelly_visuals && liquid_overlay && reagents.total_volume)
if(digest_mode == DM_HOLD && item_digest_mode == IM_HOLD)
I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "calm")
else

View File

@@ -101,7 +101,7 @@ GLOBAL_LIST_INIT(digest_modes, list())
var/mob/living/silicon/robot/R = B.owner
R.cell.charge += 25*damage_gain */
if(offset && damage_gain > 0) // If any different than default weight, multiply the % of offset.
if(B.reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && B.reagents.total_volume < B.reagents.maximum_volume) //digestion producing reagents
if(B.show_liquids && B.reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && B.reagents.total_volume < B.reagents.maximum_volume) //digestion producing reagents
B.owner_adjust_nutrition(offset * (3 * damage_gain / difference) * L.get_digestion_nutrition_modifier() * B.owner.get_digestion_efficiency_modifier()) //Uncertain if balanced fairly, can adjust by multiplier for the cost of reagent, dont go below 1 or else it will result in more nutrition than normal - Jack
B.digest_nutri_gain += offset * (1.5 * damage_gain / difference) * L.get_digestion_nutrition_modifier() * B.owner.get_digestion_efficiency_modifier() //for transfering nutrition value over to GenerateBellyReagents_digesting()
B.GenerateBellyReagents_digesting()
@@ -124,7 +124,7 @@ GLOBAL_LIST_INIT(digest_modes, list())
B.steal_nutrition(L)
if(L.nutrition < 100)
B.absorb_living(L)
if(B.reagent_mode_flags & DM_FLAG_REAGENTSABSORB && B.reagents.total_volume < B.reagents.maximum_volume) //CHOMPedit: absorption reagent production
if(B.show_liquids && B.reagent_mode_flags & DM_FLAG_REAGENTSABSORB && B.reagents.total_volume < B.reagents.maximum_volume) //CHOMPedit: absorption reagent production
B.GenerateBellyReagents_absorbed() //CHOMPedit end: A bonus for pred, I know for a fact prey is usually at zero nutrition when absorption finally happens
consider_healthbar(L, old_nutrition, B.owner)
return list("to_update" = TRUE)
@@ -191,7 +191,7 @@ GLOBAL_LIST_INIT(digest_modes, list())
/datum/digest_mode/heal/process_mob(obj/belly/B, mob/living/L)
var/oldstat = L.stat
if(L.stat == DEAD)
if(L.stat == DEAD || !L.permit_healbelly) //CHOMPEdit healpref check
return null // Can't heal the dead with healbelly
var/mob/living/carbon/human/H = L
if(B.owner.nutrition > 90 && H.isSynthetic())

View File

@@ -230,7 +230,7 @@
touchable_atoms |= I
//Stripping flag
if(mode_flags & DM_FLAG_STRIPPING)
if((mode_flags & DM_FLAG_STRIPPING) && H.strip_pref) //CHOMPEdit Stripping pref check
for(var/slot in slots)
var/obj/item/I = H.get_equipped_item(slot = slot)
if(I && H.unEquip(I, force = FALSE))
@@ -373,7 +373,7 @@
GenerateBellyReagents_digested()
else
R.cell.charge += (nutrition_percent / 100) * compensation * 25 * personal_nutrition_modifier*/
if(reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && reagents.total_volume < reagents.maximum_volume) //CHOMP digestion producing reagents
if(show_liquids && reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && reagents.total_volume < reagents.maximum_volume) //CHOMP digestion producing reagents
owner_adjust_nutrition((nutrition_percent / 100) * compensation * 3 * personal_nutrition_modifier)
GenerateBellyReagents_digested()
else
@@ -383,7 +383,7 @@
if(L.nutrition >= 100)
var/oldnutrition = (L.nutrition * 0.05)
L.nutrition = (L.nutrition * 0.95)
if(reagent_mode_flags & DM_FLAG_REAGENTSDRAIN && reagents.total_volume < reagents.maximum_volume) //CHOMPedit: draining reagent production //Added to this proc now since it's used for draining
if(show_liquids && reagent_mode_flags & DM_FLAG_REAGENTSDRAIN && reagents.total_volume < reagents.maximum_volume) //CHOMPedit: draining reagent production //Added to this proc now since it's used for draining
owner_adjust_nutrition(oldnutrition * 0.75) //keeping the price static, due to how much nutrition can flunctuate
GenerateBellyReagents_absorbing() //Dont need unique proc so far
else

View File

@@ -70,7 +70,7 @@
var/total_volume = B.reagents.total_volume
vore_organs_reagents += total_volume
if(B.vorefootsteps_sounds == TRUE && highest_vol < total_volume)
if(B.show_liquids && B.vorefootsteps_sounds && highest_vol < total_volume)
highest_vol = total_volume
if(highest_vol < 20) //For now the volume will be off if less than 20 units of reagent are in vorebellies
@@ -234,7 +234,7 @@
choices += rc
var/obj/item/weapon/reagent_containers/T = input(user,"Choose what to transfer to","Select Target") as null|anything in choices
if(!T)
return FALSE
return FALSE
if(!Adjacent(T) || !Adjacent(TG))
return //No long distance transfer

View File

@@ -244,14 +244,25 @@
P.weight_message_visible = src.weight_message_visible
P.weight_messages = src.weight_messages
//CHOMP stuff
//CHOMP stuff Start
P.phase_vore = src.phase_vore
P.noisy_full = src.noisy_full
P.latejoin_vore = src.latejoin_vore
P.latejoin_prey = src.latejoin_prey
P.receive_reagents = src.receive_reagents
P.give_reagents = src.give_reagents
P.apply_reagents = src.apply_reagents
P.autotransferable = src.autotransferable
P.strip_pref = src.strip_pref
P.vore_sprite_color = src.vore_sprite_color
P.vore_sprite_multiply = src.vore_sprite_multiply
P.no_latejoin_vore_warning = src.no_latejoin_vore_warning
P.no_latejoin_prey_warning = src.no_latejoin_prey_warning
P.no_latejoin_vore_warning_time = src.no_latejoin_vore_warning_time
P.no_latejoin_prey_warning_time = src.no_latejoin_prey_warning_time
P.no_latejoin_vore_warning_persists = src.no_latejoin_vore_warning_persists
P.no_latejoin_prey_warning_persists = src.no_latejoin_prey_warning_persists
//CHOMP Stuff End
var/list/serialized = list()
for(var/obj/belly/B as anything in src.vore_organs)
@@ -303,13 +314,23 @@
weight_messages = P.weight_messages
//CHOMP stuff
phase_vore = P.phase_vore
noisy_full = P.noisy_full
latejoin_vore = P.latejoin_vore
latejoin_prey = P.latejoin_prey
receive_reagents = P.receive_reagents
give_reagents = P.give_reagents
apply_reagents = P.apply_reagents
autotransferable = P.autotransferable
strip_pref = P.strip_pref
vore_sprite_color = P.vore_sprite_color
vore_sprite_multiply = P.vore_sprite_multiply
no_latejoin_vore_warning = P.no_latejoin_vore_warning
no_latejoin_prey_warning = P.no_latejoin_prey_warning
no_latejoin_vore_warning_time = P.no_latejoin_vore_warning_time
no_latejoin_prey_warning_time = P.no_latejoin_prey_warning_time
no_latejoin_vore_warning_persists = P.no_latejoin_vore_warning_persists
no_latejoin_prey_warning_persists = P.no_latejoin_prey_warning_persists
if(bellies)
if(isliving(src))
@@ -1135,31 +1156,43 @@
dispvoreprefs += "<font color='red'><b>OOC DISABLED</b></font><br>"
if("CHAT_LOOC" in client.prefs.preferences_disabled)
dispvoreprefs += "<font color='red'><b>LOOC DISABLED</b></font><br>"
dispvoreprefs += "<b>Digestable:</b> [digestable ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Devourable:</b> [devourable ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Feedable:</b> [feeding ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Autotransferable:</b> [autotransferable ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
dispvoreprefs += "<b>Absorption Permission:</b> [absorbable ? "Allowed" : "Disallowed"]<br>"
dispvoreprefs += "<b>Leaves Remains:</b> [digest_leave_remains ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Mob Vore:</b> [allowmobvore ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Healbelly permission:</b> [permit_healbelly ? "Allowed" : "Disallowed"]<br>"
dispvoreprefs += "<b>Selective Mode Pref:</b> [src.selective_preference]<br>"
dispvoreprefs += "<b>Spontaneous vore prey:</b> [can_be_drop_prey ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Spontaneous vore pred:</b> [can_be_drop_pred ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Late join spawn point belly:</b> [latejoin_vore ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
dispvoreprefs += "<b>Can be late join prey:</b> [latejoin_prey ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
dispvoreprefs += "<b>Receiving liquids:</b> [receive_reagents ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
dispvoreprefs += "<b>Giving liquids:</b> [give_reagents ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
dispvoreprefs += "<b>Drop Vore:</b> [drop_vore ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Slip Vore:</b> [slip_vore ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Throw vore:</b> [throw_vore ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Stumble Vore:</b> [stumble_vore ? "Enabled" : "Disabled"]<br>"
dispvoreprefs += "<b>Food Vore:</b> [food_vore ? "Enabled" : "Disabled"]<br>"
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>"
//CHOMPEdit Start
dispvoreprefs += "<b>Devourable:</b> [devourable ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
if(devourable)
dispvoreprefs += "<b>Healbelly permission:</b> [permit_healbelly ? "<font color='green'>Allowed</font>" : "<font color='red'>Disallowed</font>"]<br>"
dispvoreprefs += "<b>Digestable:</b> [digestable ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Absorption Permission:</b> [absorbable ? "<font color='green'>Allowed</font>" : "<font color='red'>Disallowed</font>"]<br>"
dispvoreprefs += "<b>Selective Mode Pref:</b> [src.selective_preference]<br>"
dispvoreprefs += "<b>Mob Vore:</b> [allowmobvore ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Autotransferable:</b> [autotransferable ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Can be stripped:</b> [strip_pref ? "<font color='green'>Allowed</font>" : "<font color='red'>Disallowed</font>"]<br>"
dispvoreprefs += "<b>Applying reagents:</b> [apply_reagents ? "<font color='green'>Allowed</font>" : "<font color='red'>Disallowed</font>"]<br>"
dispvoreprefs += "<b>Leaves Remains:</b> [digest_leave_remains ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Spontaneous vore prey:</b> [can_be_drop_prey ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Spontaneous vore pred:</b> [can_be_drop_pred ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
if(can_be_drop_prey || can_be_drop_pred)
dispvoreprefs += "<b>Drop Vore:</b> [drop_vore ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Slip Vore:</b> [slip_vore ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Stumble Vore:</b> [stumble_vore ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Throw vore:</b> [throw_vore ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Food Vore:</b> [food_vore ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Phase Vore:</b> [phase_vore ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Can be stepped on/over:</b> [step_mechanics_pref ? "<font color='green'>Allowed</font>" : "<font color='red'>Disallowed</font>"]<br>"
dispvoreprefs += "<b>Can be picked up:</b> [pickup_pref ? "<font color='green'>Allowed</font>" : "<font color='red'>Disallowed</font>"]<br>"
dispvoreprefs += "<b>Can be resized:</b> [resizable ? "<font color='green'>Allowed</font>" : "<font color='red'>Disallowed</font>"]<br>"
dispvoreprefs += "<b>Spontaneous transformation:</b> [allow_spontaneous_tf ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Feedable:</b> [feeding ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Receiving liquids:</b> [receive_reagents ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Giving liquids:</b> [give_reagents ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Late join spawn point belly:</b> [latejoin_vore ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
if(latejoin_vore)
dispvoreprefs += "<b>Late join spawn auto accept:</b> [no_latejoin_vore_warning ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Can be late join prey:</b> [latejoin_prey ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
if(latejoin_prey)
dispvoreprefs += "<b>Late join prey auto accept:</b> [no_latejoin_prey_warning ? "<font color='green'>Enabled</font>" : "<font color='red'>Disabled</font>"]<br>"
dispvoreprefs += "<b>Global Vore Privacy is:</b> [eating_privacy_global ? "<font color='green'>Subtle</font>" : "<font color='red'>Loud</font>"]<br>"
dispvoreprefs += "<b>Current active belly:</b> [vore_selected ? vore_selected.name : "None"]<br>"
//CHOMPEdit End
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

View File

@@ -1,6 +1,18 @@
/mob
var/receive_reagents = FALSE //Pref for people to avoid others transfering reagents into them.
var/give_reagents = FALSE //Pref for people to avoid others taking reagents from them.
var/apply_reagents = TRUE //Pref for people to avoid having stomach reagents applied to them
var/latejoin_vore = FALSE //If enabled, latejoiners can spawn into this, assuming they have a client
var/latejoin_prey = FALSE //If enabled, latejoiners can spawn ontop of and instantly eat the victim
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/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
var/no_latejoin_prey_warning_time = 15 //Time until accepting pred
var/no_latejoin_vore_warning_persists = FALSE //Do we save it?
var/no_latejoin_prey_warning_persists = FALSE //Do we save it?
// CHOMP vore icons refactor (Now on mob)
var/vore_capacity = 0 // Maximum capacity, -1 for unlimited

View File

@@ -23,9 +23,6 @@
var/can_be_drop_pred = FALSE
var/allow_spontaneous_tf = FALSE // Obviously.
var/show_vore_fx = TRUE // Show belly fullscreens
var/latejoin_vore = FALSE //CHOMPedit: If enabled, latejoiners can spawn into this, assuming they have a client
var/latejoin_prey = FALSE //CHOMPedit: If enabled, latejoiners can spawn ontop of and instantly eat the victim
var/noisy_full = FALSE //CHOMPedit: Enables belching when a mob has overeaten
var/selective_preference = DM_DEFAULT // Preference for selective bellymode
var/text_warnings = TRUE // Allows us to dismiss the text limit warning messages after viewing it once per round
var/eating_privacy_global = FALSE // Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var

View File

@@ -69,14 +69,24 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
var/pickup_pref = TRUE
//CHOMP stuff
var/phase_vore = TRUE
var/noisy_full = FALSE
var/receive_reagents = FALSE
var/give_reagents = FALSE
var/apply_reagents = TRUE
var/latejoin_vore = FALSE
var/latejoin_prey = FALSE
var/autotransferable = TRUE
var/strip_pref = FALSE
var/vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE)
var/vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000")
//CHOMP stuff end
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
var/no_latejoin_prey_warning_time = 15 // Only load, when... no_latejoin_vore_warning_persists
var/no_latejoin_vore_warning_persists = FALSE
var/no_latejoin_prey_warning_persists = FALSE
//CHOMP stuff end
var/list/belly_prefs = list()
var/vore_taste = "nothing in particular"
@@ -207,14 +217,28 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
eating_privacy_global = json_from_file["eating_privacy_global"]
//CHOMP stuff
//CHOMP stuff Start
phase_vore = json_from_file["phase_vore"]
latejoin_vore = json_from_file["latejoin_vore"]
latejoin_prey = json_from_file["latejoin_prey"]
receive_reagents = json_from_file["receive_reagents"]
noisy_full = json_from_file["noisy_full"]
give_reagents = json_from_file["give_reagents"]
apply_reagents = json_from_file["apply_reagents"]
autotransferable = json_from_file["autotransferable"]
vore_sprite_color = json_from_file["vore_sprite_color"]
vore_sprite_multiply = json_from_file["vore_sprite_multiply"]
strip_pref = json_from_file["strip_mechanics_pref"]
no_latejoin_vore_warning_persists = json_from_file["no_latejoin_vore_warning_persists"]
if(no_latejoin_vore_warning_persists)
no_latejoin_vore_warning = json_from_file["no_latejoin_vore_warning"]
no_latejoin_vore_warning_time = json_from_file["no_latejoin_vore_warning_time"]
no_latejoin_prey_warning_persists = json_from_file["no_latejoin_prey_warning_persists"]
if(no_latejoin_prey_warning_persists)
no_latejoin_prey_warning = json_from_file["no_latejoin_prey_warning"]
no_latejoin_prey_warning_time = json_from_file["no_latejoin_prey_warning_time"]
//CHOMP stuff End
//Quick sanitize
@@ -299,7 +323,9 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
while(weight_messages.len < 10)
weight_messages.Add("")
//CHOMP stuff
//CHOMP stuff Start
if(isnull(phase_vore))
phase_vore = TRUE
if(isnull(latejoin_vore))
latejoin_vore = FALSE
if(isnull(latejoin_prey))
@@ -308,12 +334,31 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
receive_reagents = FALSE
if(isnull(give_reagents))
give_reagents = FALSE
if(isnull(apply_reagents))
apply_reagents = TRUE
if(isnull(noisy_full))
noisy_full = FALSE
if(isnull(autotransferable))
autotransferable = TRUE
if(isnull(vore_sprite_color))
vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000")
if(isnull(vore_sprite_multiply))
vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE)
if(isnull(strip_pref))
strip_pref = TRUE
if(isnull(no_latejoin_vore_warning))
no_latejoin_vore_warning = FALSE
if(isnull(no_latejoin_prey_warning))
no_latejoin_prey_warning = FALSE
if(isnull(no_latejoin_vore_warning_time))
no_latejoin_vore_warning_time = 30
if(isnull(no_latejoin_prey_warning_time))
no_latejoin_prey_warning_time = 30
if(isnull(no_latejoin_vore_warning_persists))
no_latejoin_vore_warning_persists = FALSE
if(isnull(no_latejoin_prey_warning_persists))
no_latejoin_prey_warning_persists = FALSE
//CHOMP stuff End
return TRUE
@@ -335,23 +380,26 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"vore_smell" = vore_smell,
"permit_healbelly" = permit_healbelly,
"noisy" = noisy,
"noisy_full" = noisy_full, //CHOMPedit
"selective_preference" = selective_preference,
"show_vore_fx" = show_vore_fx,
"can_be_drop_prey" = can_be_drop_prey,
"can_be_drop_pred" = can_be_drop_pred,
"latejoin_vore" = latejoin_vore, //CHOMPedit
"latejoin_prey" = latejoin_prey,
"latejoin_prey" = latejoin_prey, //CHOMPedit
"allow_spontaneous_tf" = allow_spontaneous_tf,
"step_mechanics_pref" = step_mechanics_pref,
"pickup_pref" = pickup_pref,
"belly_prefs" = belly_prefs,
"receive_reagents" = receive_reagents,
"give_reagents" = give_reagents,
"receive_reagents" = receive_reagents, //CHOMPedit
"give_reagents" = give_reagents, //CHOMPedit
"apply_reagents" = apply_reagents, //CHOMPedit
"autotransferable" = autotransferable,
"drop_vore" = drop_vore,
"slip_vore" = slip_vore,
"stumble_vore" = stumble_vore,
"throw_vore" = throw_vore,
"phase_vore" = phase_vore, //CHOMPedit
"food_vore" = food_vore,
"nutrition_message_visible" = nutrition_message_visible,
"nutrition_messages" = nutrition_messages,
@@ -360,6 +408,12 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"eating_privacy_global" = eating_privacy_global,
"vore_sprite_color" = vore_sprite_color, //CHOMPEdit
"vore_sprite_multiply" = vore_sprite_multiply, //CHOMPEdit
"no_latejoin_vore_warning" = no_latejoin_vore_warning, //CHOMPEdit
"no_latejoin_prey_warning" = no_latejoin_prey_warning, //CHOMPEdit
"no_latejoin_vore_warning_time" = no_latejoin_vore_warning_time, //CHOMPEdit
"no_latejoin_prey_warning_time" = no_latejoin_prey_warning_time, //CHOMPEdit
"no_latejoin_vore_warning_persists" = no_latejoin_vore_warning_persists, //CHOMPEdit
"no_latejoin_prey_warning_persists" = no_latejoin_prey_warning_persists, //CHOMPEdit
)
//List to JSON

View File

@@ -56,6 +56,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
var/mob/host // Note, we do this in case we ever want to allow people to view others vore panels
var/unsaved_changes = FALSE
var/show_pictures = TRUE
var/icon_overflow = FALSE
var/max_icon_content = 21 //CHOMPedit: Contents above this disable icon mode. 21 for nice 3 rows to fill the default panel window.
/datum/vore_look/New(mob/new_host)
@@ -118,6 +119,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
data["unsaved_changes"] = unsaved_changes
data["show_pictures"] = show_pictures
data["overflow"] = icon_overflow
var/atom/hostloc = host.loc
//CHOMPAdd Start - Allow VorePanel to show pred belly details even while indirectly inside
@@ -152,6 +154,11 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"desc" = inside_desc,
"pred" = pred,
"ref" = "\ref[inside_belly]",
//CHOMPEdit Start
"liq_lvl" = inside_belly.reagents.total_volume,
"liq_reagent_type" = inside_belly.reagent_chosen,
"liuq_name" = inside_belly.reagent_name,
//CHOMPEdit End
)
var/list/inside_contents = list()
@@ -166,11 +173,13 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"ref" = "\ref[O]",
"outside" = FALSE,
)
if(show_pictures) //CHOMPedit: disables icon mode
if(show_pictures) //CHOMPedit Start: disables icon mode
if(inside_belly.contents.len <= max_icon_content)
icon_overflow = FALSE
info["icon"] = cached_nom_icon(O)
else
show_pictures = !show_pictures
icon_overflow = TRUE
//CHOMPEdit End
if(isliving(O))
var/mob/living/M = O
info["stat"] = M.stat
@@ -425,11 +434,13 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"ref" = "\ref[O]",
"outside" = TRUE,
)
if(show_pictures) //CHOMPedit: disables icon mode
if(show_pictures) //CHOMPedit Start: disables icon mode
if(selected.contents.len <= max_icon_content)
icon_overflow = FALSE
info["icon"] = cached_nom_icon(O)
else
show_pictures = !show_pictures
icon_overflow = TRUE
//CHOMPEdit End
if(isliving(O))
var/mob/living/M = O
info["stat"] = M.stat
@@ -499,22 +510,34 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"show_vore_fx" = host.show_vore_fx,
"can_be_drop_prey" = host.can_be_drop_prey,
"can_be_drop_pred" = host.can_be_drop_pred,
"latejoin_vore" = host.latejoin_vore, //CHOMPedit
"latejoin_prey" = host.latejoin_prey, //CHOMPedit
//CHOMPedit Start
"latejoin_vore" = host.latejoin_vore,
"latejoin_prey" = host.latejoin_prey,
"no_spawnpred_warning" = host.no_latejoin_vore_warning,
"no_spawnprey_warning" = host.no_latejoin_prey_warning,
"no_spawnpred_warning_time" = host.no_latejoin_vore_warning_time,
"no_spawnprey_warning_time" = host.no_latejoin_prey_warning_time,
"no_spawnpred_warning_save" = host.no_latejoin_vore_warning_persists,
"no_spawnprey_warning_save" = host.no_latejoin_prey_warning_persists,
//CHOMPedit End
"allow_spontaneous_tf" = host.allow_spontaneous_tf,
"step_mechanics_active" = host.step_mechanics_pref,
"pickup_mechanics_active" = host.pickup_pref,
"strip_mechanics_active" = host.strip_pref, //CHOMPedit
"noisy" = host.noisy,
//CHOMPedit start, liquid belly prefs
"liq_rec" = host.receive_reagents,
"liq_giv" = host.give_reagents,
"liq_apply" = host.apply_reagents,
"autotransferable" = host.autotransferable,
"noisy_full" = host.noisy_full, //Belching while full
"selective_active" = host.selective_preference, //Reveal active selective mode in prefs
//CHOMPedit end
"drop_vore" = host.drop_vore,
"slip_vore" = host.slip_vore,
"stumble_vore" = host.stumble_vore,
"throw_vore" = host.throw_vore,
"phase_vore" = host.phase_vore, //CHOMPedit
"food_vore" = host.food_vore,
"nutrition_message_visible" = host.nutrition_message_visible,
"nutrition_messages" = host.nutrition_messages,
@@ -1763,6 +1786,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
host.client.prefs_vr.can_be_drop_prey = host.can_be_drop_prey
unsaved_changes = TRUE
return TRUE
//CHOMPEdit Start
if("toggle_latejoin_vore")
host.latejoin_vore = !host.latejoin_vore
if(host.client.prefs_vr)
@@ -1775,6 +1799,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
host.client.prefs_vr.latejoin_prey = host.latejoin_prey
unsaved_changes = TRUE
return TRUE
//CHOMPEdit End
if("toggle_allow_spontaneous_tf")
host.allow_spontaneous_tf = !host.allow_spontaneous_tf
if(host.client.prefs_vr)
@@ -1841,6 +1866,14 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
host.client.prefs_vr.pickup_pref = host.pickup_pref
unsaved_changes = TRUE
return TRUE
//CHOMPEdit Start
if("toggle_strippref")
host.strip_pref = !host.strip_pref
if(host.client.prefs_vr)
host.client.prefs_vr.strip_pref = host.strip_pref
unsaved_changes = TRUE
return TRUE
//CHOMPEdit End
if("toggle_healbelly")
host.permit_healbelly = !host.permit_healbelly
if(host.client.prefs_vr)
@@ -1884,6 +1917,12 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
host.client.prefs_vr.give_reagents = host.give_reagents
unsaved_changes = TRUE
return TRUE
if("toggle_liq_apply")
host.apply_reagents = !host.apply_reagents
if(host.client.prefs_vr)
host.client.prefs_vr.apply_reagents = host.apply_reagents
unsaved_changes = TRUE
return TRUE
if("toggle_autotransferable")
host.autotransferable = !host.autotransferable
if(host.client.prefs_vr)
@@ -1898,22 +1937,50 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
//CHOMPedit end
if("toggle_drop_vore")
host.drop_vore = !host.drop_vore
//CHOMPEdit Start
if(host.client.prefs_vr)
host.client.prefs_vr.drop_vore = host.drop_vore
//CHOMPEdit End
unsaved_changes = TRUE
return TRUE
if("toggle_slip_vore")
host.slip_vore = !host.slip_vore
//CHOMPEdit Start
if(host.client.prefs_vr)
host.client.prefs_vr.slip_vore = host.slip_vore
//CHOMPEdit End
unsaved_changes = TRUE
return TRUE
if("toggle_stumble_vore")
host.stumble_vore = !host.stumble_vore
//CHOMPEdit Start
if(host.client.prefs_vr)
host.client.prefs_vr.stumble_vore = host.stumble_vore
//CHOMPEdit End
unsaved_changes = TRUE
return TRUE
if("toggle_throw_vore")
host.throw_vore = !host.throw_vore
//CHOMPEdit Start
if(host.client.prefs_vr)
host.client.prefs_vr.throw_vore = host.throw_vore
//CHOMPEdit End
unsaved_changes = TRUE
return TRUE
//CHOMPEdit Start
if("toggle_phase_vore")
host.phase_vore = !host.phase_vore
if(host.client.prefs_vr)
host.client.prefs_vr.phase_vore = host.phase_vore
unsaved_changes = TRUE
return TRUE
//CHOMPEdit End
if("toggle_food_vore")
host.food_vore = !host.food_vore
//CHOMPEdit Start
if(host.client.prefs_vr)
host.client.prefs_vr.food_vore = host.food_vore
//CHOMPEdit End
unsaved_changes = TRUE
return TRUE
if("switch_selective_mode_pref")
@@ -1945,6 +2012,46 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
host.vore_sprite_multiply[belly_choice] = FALSE
host.update_icons_body()
return TRUE
if("toggle_no_latejoin_vore_warning")
host.no_latejoin_vore_warning = !host.no_latejoin_vore_warning
if(host.client.prefs_vr)
host.client.prefs_vr.no_latejoin_vore_warning = host.no_latejoin_vore_warning
if(host.no_latejoin_vore_warning_persists)
unsaved_changes = TRUE
return TRUE
if("toggle_no_latejoin_prey_warning")
host.no_latejoin_prey_warning = !host.no_latejoin_prey_warning
if(host.client.prefs_vr)
host.client.prefs_vr.no_latejoin_prey_warning = host.no_latejoin_prey_warning
if(host.no_latejoin_prey_warning_persists)
unsaved_changes = TRUE
return TRUE
if("adjust_no_latejoin_vore_warning_time")
host.no_latejoin_vore_warning_time = text2num(params["new_pred_time"])
if(host.client.prefs_vr)
host.client.prefs_vr.no_latejoin_vore_warning_time = host.no_latejoin_vore_warning_time
if(host.no_latejoin_vore_warning_persists)
unsaved_changes = TRUE
return TRUE
if("adjust_no_latejoin_prey_warning_time")
host.no_latejoin_prey_warning_time = text2num(params["new_prey_time"])
if(host.client.prefs_vr)
host.client.prefs_vr.no_latejoin_prey_warning_time = host.no_latejoin_prey_warning_time
if(host.no_latejoin_prey_warning_persists)
unsaved_changes = TRUE
return TRUE
if("toggle_no_latejoin_vore_warning_persists")
host.no_latejoin_vore_warning_persists = !host.no_latejoin_vore_warning_persists
if(host.client.prefs_vr)
host.client.prefs_vr.no_latejoin_vore_warning_persists = host.no_latejoin_vore_warning_persists
unsaved_changes = TRUE
return TRUE
if("toggle_no_latejoin_prey_warning_persists")
host.no_latejoin_prey_warning_persists = !host.no_latejoin_prey_warning_persists
if(host.client.prefs_vr)
host.client.prefs_vr.no_latejoin_prey_warning_persists = host.no_latejoin_prey_warning_persists
unsaved_changes = TRUE
return TRUE
//CHOMPEdit end
/datum/vore_look/proc/pick_from_inside(mob/user, params)
@@ -3699,6 +3806,8 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
else
host.vore_selected.reagents.clear_reagents()
. = TRUE
if(.)
unsaved_changes = TRUE
/datum/vore_look/proc/liq_set_msg(mob/user, params)
if(!host.vore_selected)
@@ -3770,4 +3879,6 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
if(new_message)
host.vore_selected.set_reagent_messages(new_message,"full5")
. = TRUE
if(.)
unsaved_changes = TRUE
//CHOMPedit end

View File

@@ -259,7 +259,6 @@
new_mob.feeding = feeding
new_mob.can_be_drop_prey = can_be_drop_prey
new_mob.can_be_drop_pred = can_be_drop_pred
new_mob.latejoin_vore = latejoin_vore
new_mob.digest_leave_remains = digest_leave_remains
new_mob.allowmobvore = allowmobvore
new_mob.permit_healbelly = permit_healbelly
@@ -283,6 +282,26 @@
new_mob.eating_privacy_global = eating_privacy_global
new_mob.text_warnings = text_warnings
//CHOMP stuff Start
new_mob.phase_vore = phase_vore
new_mob.latejoin_vore = latejoin_vore
new_mob.latejoin_prey = latejoin_prey
new_mob.receive_reagents = receive_reagents
new_mob.give_reagents = give_reagents
new_mob.apply_reagents = apply_reagents
new_mob.autotransferable = autotransferable
new_mob.strip_pref = strip_pref
new_mob.vore_sprite_color = vore_sprite_color
new_mob.vore_sprite_multiply = vore_sprite_multiply
new_mob.noisy_full = noisy_full
new_mob.no_latejoin_vore_warning = no_latejoin_vore_warning
new_mob.no_latejoin_prey_warning = no_latejoin_prey_warning
new_mob.no_latejoin_vore_warning_time = no_latejoin_vore_warning_time
new_mob.no_latejoin_prey_warning_time = no_latejoin_prey_warning_time
new_mob.no_latejoin_vore_warning_persists = no_latejoin_vore_warning_persists
new_mob.no_latejoin_prey_warning_persists = no_latejoin_prey_warning_persists
//CHOMP stuff End
/////SUBTYPES/////
/obj/item/weapon/gun/energy/mouseray/medical //This just changes people back, it can't TF people into anything without shenanigans

View File

@@ -12,6 +12,9 @@
var/spitting = 0
var/spit_projectile = null // what our spit projectile is. Can be anything
//no stripping of simplemobs
strip_pref = FALSE
/mob/living/simple_mob/RangedAttack(var/atom/A)
if(!isnull(spit_projectile) && spitting)
Spit(A)

View File

@@ -4,10 +4,12 @@ import { useBackend, useLocalState } from '../backend';
import { Box, Button, Flex, Collapsible, Icon, LabeledList, NoticeBox, Section, Tabs, Divider, Stack } from '../components';
import { Window } from '../layouts';
import { classes } from 'common/react';
import { NumberInput } from '../../tgui/components';
const stats = [null, 'average', 'bad'];
const digestModeToColor = {
'Default': null,
'Hold': null,
'Digest': 'red',
'Absorb': 'purple',
@@ -21,6 +23,21 @@ const digestModeToColor = {
'Encase In Egg': 'blue',
};
const reagentToColor = {
'Water': null,
'Milk': null,
'Cream': null,
'Honey': 'teal',
'Cherry Jelly': 'teal',
'Digestive acid': 'red',
'Diluted digestive acid': 'red',
'Space cleaner': null,
'Lube': null,
'Biomass': 'teal',
'Concentrated Radium': 'orange',
'Tricordrazine': 'green',
};
const digestModeToPreyMode = {
'Hold': 'being held.',
'Digest': 'being digested.',
@@ -229,8 +246,18 @@ export const VorePanel = (props, context) => {
const VoreInsidePanel = (props, context) => {
const { act, data } = useBackend(context);
const { absorbed, belly_name, belly_mode, desc, pred, contents, ref } =
data.inside;
const {
absorbed,
belly_name,
belly_mode,
desc,
pred,
contents,
ref,
liq_lvl,
liq_reagent_type,
liuq_name,
} = data.inside;
if (!belly_name) {
return <Section title="Inside">You aren&apos;t inside anyone.</Section>;
@@ -249,6 +276,20 @@ const VoreInsidePanel = (props, context) => {
<Box color="red" inline>
{belly_name}
</Box>
{liq_lvl > 0 ? (
<>
,&nbsp;
<Box color="yellow" inline>
bathing in a pool of
</Box>
&nbsp;
<Box color={reagentToColor[liq_reagent_type]} inline>
{liuq_name}
</Box>
</>
) : (
''
)}
&nbsp;
<Box color="yellow" inline>
and you are
@@ -1142,8 +1183,9 @@ const VoreSelectedMobTypeBellyButtons = (props, context) => {
return (
<Section title={'Cyborg Controls'} width={'80%'}>
<span style={{ color: 'red' }}>
Your module does either not support vore sprites or you've selected
a belly sprite other than the sleeper within the Visuals section.
Your module does either not support vore sprites or you&apos;ve
selected a belly sprite other than the sleeper within the Visuals
section.
</span>
</Section>
);
@@ -2087,6 +2129,7 @@ const VoreSelectedBellyLiquidOptions = (props, context) => {
})
}
icon="pen"
color={reagentToColor[liq_interacts.liq_reagent_type]}
content={liq_interacts.liq_reagent_type}
/>
</LabeledList.Item>
@@ -2476,37 +2519,47 @@ const VoreUserPreferences = (props, context) => {
const {
digestable,
devourable,
resizable,
feeding,
absorbable,
digest_leave_remains,
devourable,
allowmobvore,
feeding,
permit_healbelly,
show_vore_fx,
can_be_drop_prey,
can_be_drop_pred,
drop_vore,
slip_vore,
stumble_vore,
throw_vore,
phase_vore,
food_vore,
latejoin_vore,
latejoin_prey,
allow_spontaneous_tf,
step_mechanics_active,
pickup_mechanics_active,
noisy,
noisy_full,
resizable,
step_mechanics_active,
show_vore_fx,
digest_leave_remains,
pickup_mechanics_active,
allow_spontaneous_tf,
eating_privacy_global,
strip_mechanics_active,
autotransferable,
liq_rec,
liq_giv,
autotransferable,
drop_vore,
stumble_vore,
slip_vore,
throw_vore,
food_vore,
liq_apply,
no_spawnpred_warning,
no_spawnprey_warning,
no_spawnpred_warning_time,
no_spawnprey_warning_time,
no_spawnpred_warning_save,
no_spawnprey_warning_save,
nutrition_message_visible,
weight_message_visible,
eating_privacy_global,
selective_active,
} = data.prefs;
const { show_pictures } = data;
const { show_pictures, overflow } = data;
const [tabIndex, setTabIndex] = useLocalState(context, 'tabIndex', 0);
@@ -2540,6 +2593,7 @@ const VoreUserPreferences = (props, context) => {
devour: {
action: 'toggle_devour',
test: devourable,
fluid: false,
tooltip: {
main: 'This button is to toggle your ability to be devoured by others.',
enable: 'Click here to allow being devoured.',
@@ -2580,9 +2634,7 @@ const VoreUserPreferences = (props, context) => {
action: 'toggle_healbelly',
test: permit_healbelly,
tooltip: {
main:
"This button is for those who don't like healbelly used on them as a mechanic." +
' It does not affect anything, but is displayed under mechanical prefs for ease of quick checks.',
main: "This button is for those who don't like healbelly used on them as a mechanic.",
enable: 'Click here to allow being heal-bellied.',
disable: 'Click here to prevent being heal-bellied.',
},
@@ -2594,6 +2646,7 @@ const VoreUserPreferences = (props, context) => {
dropnom_prey: {
action: 'toggle_dropnom_prey',
test: can_be_drop_prey,
fluid: false,
tooltip: {
main:
'This toggle is for spontaneous, environment related vore' +
@@ -2609,6 +2662,7 @@ const VoreUserPreferences = (props, context) => {
dropnom_pred: {
action: 'toggle_dropnom_pred',
test: can_be_drop_pred,
fluid: false,
tooltip: {
main:
'This toggle is for spontaneous, environment related vore' +
@@ -2681,6 +2735,21 @@ const VoreUserPreferences = (props, context) => {
disabled: 'Throw Vore Disabled',
},
},
toggle_phase_vore: {
action: 'toggle_phase_vore',
test: phase_vore,
tooltip: {
main:
'Allows for phasing related spontaneous vore to occur. ' +
' Note, you still need spontaneous vore pred and/or prey enabled.',
enable: 'Click here to allow for phase vore.',
disable: 'Click here to disable phase vore.',
},
content: {
enabled: 'Phase Vore Enabled',
disabled: 'Phase Vore Disabled',
},
},
toggle_food_vore: {
action: 'toggle_food_vore',
test: food_vore,
@@ -2699,6 +2768,7 @@ const VoreUserPreferences = (props, context) => {
spawnbelly: {
action: 'toggle_latejoin_vore',
test: latejoin_vore,
fluid: false,
tooltip: {
main: 'Toggle late join vore spawnpoint.',
enable: 'Click here to turn on vorish spawnpoint.',
@@ -2712,6 +2782,7 @@ const VoreUserPreferences = (props, context) => {
spawnprey: {
action: 'toggle_latejoin_prey',
test: latejoin_prey,
fluid: false,
tooltip: {
main: 'Toggle late join preds spawning on you.',
enable: 'Click here to turn on preds spawning around you.',
@@ -2870,6 +2941,23 @@ const VoreUserPreferences = (props, context) => {
disabled: 'Examine Weight Messages Inactive',
},
},
strippref: {
action: 'toggle_strippref',
test: strip_mechanics_active,
tooltip: {
main: '',
enable:
'Regardless of Predator Setting, you will not be stripped inside their bellies.' +
' Click this to allow stripping.',
disable:
'Your Predator must have this setting enabled in their belly modes to allow stripping your gear,' +
' if they do not, they will not strip your gear, even with this on. Click to disable stripping.',
},
content: {
enabled: 'Allow Worn Item Stripping',
disabled: 'Do Not Allow Worn Item Stripping',
},
},
eating_privacy_global: {
action: 'toggle_global_privacy',
test: eating_privacy_global,
@@ -2886,6 +2974,19 @@ const VoreUserPreferences = (props, context) => {
disabled: 'Global Vore Privacy: Loud',
},
},
autotransferable: {
action: 'toggle_autotransferable',
test: autotransferable,
tooltip: {
main: 'This button is for allowing or preventing belly auto-transfer mechanics from moving you.',
enable: 'Click here to allow autotransfer.',
disable: 'Click here to prevent autotransfer.',
},
content: {
enabled: 'Auto-Transfer Allowed',
disabled: 'Do Not Allow Auto-Transfer',
},
},
liquid_receive: {
action: 'toggle_liq_rec',
test: liq_rec,
@@ -2912,143 +3013,399 @@ const VoreUserPreferences = (props, context) => {
disabled: 'Do Not Allow Taking Liquids',
},
},
autotransferable: {
action: 'toggle_autotransferable',
test: autotransferable,
liquid_apply: {
action: 'toggle_liq_apply',
test: liq_apply,
tooltip: {
main: 'This button is for allowing or preventing belly auto-transfer mechanics from moving you.',
enable: 'Click here to allow autotransfer.',
disable: 'Click here to prevent autotransfer.',
main: 'This button is for allowing or preventing vorgans from applying liquids to you.',
enable: 'Click here to allow the application of liquids.',
disable: 'Click here to prevent the application of liquids.',
},
content: {
enabled: 'Auto-Transfer Allowed',
disabled: 'Do Not Allow Auto-Transfer',
enabled: 'Applying Liquids Allowed',
disabled: 'Do Not Allow Applying Liquids',
},
},
no_spawnpred_warning: {
action: 'toggle_no_latejoin_vore_warning',
test: no_spawnpred_warning,
tooltip: {
main:
'This button is to disable the vore spawnpoint confirmations ' +
(no_spawnpred_warning_save
? '(round persistent).'
: '(no round persistence).'),
enable:
'Click here to auto accept spawnpoint confirmations after ' +
String(no_spawnpred_warning_time) +
' seconds.',
disable:
'Click here to no longer auto accept spawnpoint confirmations after ' +
String(no_spawnpred_warning_time) +
' seconds.',
},
back_color: {
enabled: no_spawnpred_warning_save ? 'green' : '#8B8000',
disabled: '',
},
content: {
enabled: 'Vore Spawn Pred Auto Accept Enabled',
disabled: 'Vore Spawn Pred Auto Accept Disabled',
},
},
no_spawnprey_warning: {
action: 'toggle_no_latejoin_prey_warning',
test: no_spawnprey_warning,
tooltip: {
main:
'This button is to disable the pred spawning on you confirmations ' +
(no_spawnprey_warning_save
? '(round persistent).'
: '(no round persistence).'),
enable:
'Click here to auto accept pred spawn confirmations after ' +
String(no_spawnprey_warning_time) +
' seconds.',
disable:
'Click here to no longer auto accept pred spawn confirmations after ' +
String(no_spawnprey_warning_time) +
' seconds.',
},
back_color: {
enabled: no_spawnprey_warning_save ? 'green' : '#8B8000',
disabled: '',
},
content: {
enabled: 'Vore Spawn Prey Auto Accept Enabled',
disabled: 'Vore Spawn Prey Auto Accept Disabled',
},
},
};
return (
<Section
title="Mechanical Preferences"
buttons={
<Button
icon="eye"
selected={show_pictures}
onClick={() => act('show_pictures')}>
Contents Preference: {show_pictures ? 'Show Pictures' : 'Show List'}
</Button>
}>
<Flex spacing={1} wrap="wrap" justify="center">
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.digestion} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem spec={preferences.absorbable} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.devour} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.mobvore} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem spec={preferences.feed} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem
spec={preferences.healbelly}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.dropnom_prey} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem spec={preferences.dropnom_pred} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.toggle_drop_vore} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.toggle_slip_vore} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem spec={preferences.toggle_stumble_vore} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.toggle_throw_vore} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.toggle_food_vore} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem spec={preferences.spawnbelly} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem spec={preferences.spawnprey} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.noisy} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.noisy_full} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.resize} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.steppref}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem
spec={preferences.vore_fx}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem
spec={preferences.remains}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.pickuppref}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.spontaneous_tf} />
</Flex.Item>
<Flex.Item basis="32%">
<Box nowrap>
<Section
title="Mechanical Preferences"
buttons={
<Button
fluid
content="Selective Mode Preference"
onClick={() => act('switch_selective_mode_pref')}
/>
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem spec={preferences.eating_privacy_global} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<VoreUserPreferenceItem spec={preferences.autotransferable} />
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem
spec={preferences.liquid_receive}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="32%">
<VoreUserPreferenceItem
spec={preferences.liquid_give}
tooltipPosition="top"
/>
</Flex.Item>
</Flex>
icon="eye"
selected={show_pictures}
tooltip={
'Allows to toggle if belly contents are shown as icons or in list format. ' +
(show_pictures
? 'Contents shown as pictures.'
: 'Contents shown as lists.') +
(show_pictures && overflow
? 'Temporarily disabled. Stomach contents above limits.'
: '')
}
backgroundColor={show_pictures && overflow ? 'orange' : ''}
onClick={() => act('show_pictures')}>
Contents Preference: {show_pictures ? 'Show Pictures' : 'Show List'}
</Button>
}>
<Flex spacing={1} wrap="wrap" justify="center">
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.steppref}
tooltipPosition="right"
/>
</Flex.Item>
<Flex.Item basis="33%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.pickuppref}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.resize}
tooltipPosition="left"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.feed}
tooltipPosition="right"
/>
</Flex.Item>
<Flex.Item basis="33%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.liquid_receive}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.liquid_give}
tooltipPosition="left"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.noisy}
tooltipPosition="right"
/>
</Flex.Item>
<Flex.Item basis="33%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.noisy_full}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.eating_privacy_global}
tooltipPosition="left"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.vore_fx}
tooltipPosition="right"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.spontaneous_tf}
tooltipPosition="top"
/>
</Flex.Item>
</Flex>
</Section>
<Section
title="Devouring Preferences"
buttons={
<Box nowrap>
<VoreUserPreferenceItem
spec={preferences.devour}
tooltipPosition="top"
/>
</Box>
}>
{devourable ? (
<Flex spacing={1} wrap="wrap" justify="center">
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.healbelly}
tooltipPosition="right"
/>
</Flex.Item>
<Flex.Item basis="33%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.digestion}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.absorbable}
tooltipPosition="left"
/>
</Flex.Item>
<Flex.Item basis="33%">
<Button
fluid
content={
'Selective Mode Preference: ' + capitalize(selective_active)
}
backgroundColor={digestModeToColor[selective_active]}
tooltip="Allows to set the personal belly mode preference for selective bellies."
tooltipPosition="right"
onClick={() => act('switch_selective_mode_pref')}
/>
</Flex.Item>
<Flex.Item basis="33%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.mobvore}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.autotransferable}
tooltipPosition="left"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.strippref}
tooltipPosition="right"
/>
</Flex.Item>
<Flex.Item basis="33%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.liquid_apply}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.remains}
tooltipPosition="left"
/>
</Flex.Item>
</Flex>
) : (
''
)}
</Section>
<Section
title="Spontaneous Preferences"
buttons={
<Box nowrap>
<VoreUserPreferenceItem
spec={preferences.dropnom_prey}
tooltipPosition="top"
/>
<VoreUserPreferenceItem
spec={preferences.dropnom_pred}
tooltipPosition="top"
/>
</Box>
}>
{can_be_drop_prey || can_be_drop_pred ? (
<Flex spacing={1} wrap="wrap" justify="center">
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.toggle_drop_vore}
tooltipPosition="right"
/>
</Flex.Item>
<Flex.Item basis="33%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.toggle_slip_vore}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.toggle_stumble_vore}
tooltipPosition="left"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.toggle_throw_vore}
tooltipPosition="right"
/>
</Flex.Item>
<Flex.Item basis="33%" grow={1}>
<VoreUserPreferenceItem
spec={preferences.toggle_food_vore}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.toggle_phase_vore}
tooltipPosition="left"
/>
</Flex.Item>
</Flex>
) : (
''
)}
</Section>
<Section
title="Spawn Preferences"
buttons={
<Box nowrap>
<VoreUserPreferenceItem
spec={preferences.spawnbelly}
tooltipPosition="top"
/>
<VoreUserPreferenceItem
spec={preferences.spawnprey}
tooltipPosition="top"
/>
</Box>
}>
<Flex spacing={1} wrap="wrap" justify="center">
{latejoin_vore ? (
<>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.no_spawnpred_warning}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="12%">
<NumberInput
fluid
value={no_spawnpred_warning_time}
minValue={0}
maxValue={30}
unit="s"
step={5}
stepPixelSize={20}
onChange={(e, value) =>
act('adjust_no_latejoin_vore_warning_time', {
new_pred_time: value,
})
}>
T
</NumberInput>
</Flex.Item>
<Flex.Item basis="5%">
<Button
fluid
content={'P'}
backgroundColor={no_spawnpred_warning_save ? 'green' : ''}
tooltip="Toggles vore spawnpoint auto accept persistency."
tooltipPosition="top"
onClick={() =>
act('toggle_no_latejoin_vore_warning_persists')
}
/>
</Flex.Item>
</>
) : (
''
)}
{latejoin_prey ? (
<>
<Flex.Item basis="33%">
<VoreUserPreferenceItem
spec={preferences.no_spawnprey_warning}
tooltipPosition="top"
/>
</Flex.Item>
<Flex.Item basis="12%">
<NumberInput
fluid
value={no_spawnprey_warning_time}
minValue={0}
maxValue={30}
unit="s"
step={5}
stepPixelSize={20}
onChange={(e, value) =>
act('adjust_no_latejoin_prey_warning_time', {
new_prey_time: value,
})
}>
T
</NumberInput>
</Flex.Item>
<Flex.Item basis="5%">
<Button
fluid
content={'P'}
backgroundColor={no_spawnprey_warning_save ? 'green' : ''}
tooltip="Toggles preyspawn auto accept persistency."
tooltipPosition="top"
onClick={() =>
act('toggle_no_latejoin_prey_warning_persists')
}
/>
</Flex.Item>
</>
) : (
''
)}
</Flex>
</Section>
<Section title="Aesthetic Preferences">
<Flex spacing={1} wrap="wrap" justify="center">
<Flex.Item basis="50%" grow={1}>
@@ -3105,7 +3462,7 @@ const VoreUserPreferences = (props, context) => {
<Divider />
<Section>
<Flex spacing={1}>
<Flex.Item basis="49%">
<Flex.Item basis="50%">
<Button
fluid
content="Save Prefs"
@@ -3113,7 +3470,7 @@ const VoreUserPreferences = (props, context) => {
onClick={() => act('saveprefs')}
/>
</Flex.Item>
<Flex.Item basis="49%" grow={1}>
<Flex.Item basis="50%" grow={1}>
<Button
fluid
content="Reload Prefs"
@@ -3123,7 +3480,7 @@ const VoreUserPreferences = (props, context) => {
</Flex.Item>
</Flex>
</Section>
</Section>
</Box>
);
};
@@ -3131,14 +3488,17 @@ const VoreUserPreferenceItem = (props, context) => {
const { act } = useBackend(context);
const { spec, ...rest } = props;
const { action, test, tooltip, content } = spec;
const { action, test, tooltip, content, fluid = true, back_color } = spec;
return (
<Button
onClick={() => act(action)}
icon={test ? 'toggle-on' : 'toggle-off'}
selected={test}
fluid
fluid={fluid}
backgroundColor={
back_color ? (test ? back_color.enabled : back_color.disabled) : ''
}
tooltip={tooltip.main + ' ' + (test ? tooltip.disable : tooltip.enable)}
content={test ? content.enabled : content.disabled}
{...rest}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long