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)]") 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)]") 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") if(confirm != "Yes")
to_chat(C, "<span class='warning'>[pred] has declined your spawn request.</span>") 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) 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)]") 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)]") 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") if(confirm != "Yes")
to_chat(C, "<span class='warning'>[prey] has declined your spawn request.</span>") 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) 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 new_mob.key = picked_client.key //Finally put them in the mob
if(organs) if(organs)
new_mob.copy_from_prefs_vr() 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].") 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) 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 remove_modifiers_of_type(/datum/modifier/shadekin_phase) //CHOMPEdit - Shadekin probably shouldn't be hit while phasing
//Potential phase-in vore //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) var/list/potentials = living_mobs(0)
if(potentials.len) if(potentials.len)
var/mob/living/target = pick(potentials) 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) 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 ability_flags &= ~AB_PHASE_SHIFTING
@@ -683,7 +688,7 @@
to_chat(owner, "<span class='warning'>A dark maw you deployed has triggered!</span>") to_chat(owner, "<span class='warning'>A dark maw you deployed has triggered!</span>")
spawn(10) spawn(10)
var/will_vore = 1 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 will_vore = 0
if(!src || src.gc_destroyed) if(!src || src.gc_destroyed)
//We got deleted probably, do nothing more //We got deleted probably, do nothing more

View File

@@ -27,7 +27,6 @@
feeding = client.prefs_vr.feeding feeding = client.prefs_vr.feeding
can_be_drop_prey = client.prefs_vr.can_be_drop_prey can_be_drop_prey = client.prefs_vr.can_be_drop_prey
can_be_drop_pred = client.prefs_vr.can_be_drop_pred 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 throw_vore = client.prefs_vr.throw_vore
food_vore = client.prefs_vr.food_vore food_vore = client.prefs_vr.food_vore
allow_spontaneous_tf = client.prefs_vr.allow_spontaneous_tf allow_spontaneous_tf = client.prefs_vr.allow_spontaneous_tf
@@ -47,6 +46,26 @@
step_mechanics_pref = client.prefs_vr.step_mechanics_pref step_mechanics_pref = client.prefs_vr.step_mechanics_pref
pickup_pref = client.prefs_vr.pickup_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() /mob/living/simple_mob/proc/set_name()
set name = "Set Name" set name = "Set Name"
set desc = "Sets your mobs name. You only get to do this once." set desc = "Sets your mobs name. You only get to do this once."

View File

@@ -412,7 +412,7 @@
remove_self(volume) remove_self(volume)
return return
if(B.owner) 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.owner_adjust_nutrition(removed * (B.nutrition_percent / 100) * power)
B.digest_nutri_gain += removed * (B.nutrition_percent / 100) + 0.5 B.digest_nutri_gain += removed * (B.nutrition_percent / 100) + 0.5
B.GenerateBellyReagents_digesting() B.GenerateBellyReagents_digesting()
@@ -466,7 +466,7 @@
remove_self(volume) remove_self(volume)
return return
if(B.owner) 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.owner_adjust_nutrition(volume * (B.nutrition_percent / 100) * power)
B.digest_nutri_gain += volume * (B.nutrition_percent / 100) + 0.5 B.digest_nutri_gain += volume * (B.nutrition_percent / 100) + 0.5
B.GenerateBellyReagents_digesting() B.GenerateBellyReagents_digesting()

View File

@@ -38,7 +38,7 @@
else if(prob(10)) else if(prob(10))
B.absorb_living(P) B.absorb_living(P)
//absorption reagent production //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() B.GenerateBellyReagents_absorbed()
/datum/reagent/radium/concentrated /datum/reagent/radium/concentrated
@@ -81,4 +81,4 @@
if(rad_organ && !rad_organ.is_broken()) if(rad_organ && !rad_organ.is_broken())
absorbed = 1 absorbed = 1
if(!absorbed) 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/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/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/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/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 var/reagentid = "water" //Selected reagent's id, for use in puddle system currently
@@ -89,6 +90,7 @@
"Cherry Jelly", "Cherry Jelly",
"Digestive acid", "Digestive acid",
"Diluted digestive acid", "Diluted digestive acid",
"Space cleaner",
"Lube", "Lube",
"Biomass", "Biomass",
"Concentrated Radium", "Concentrated Radium",
@@ -182,10 +184,10 @@
///////////////////// NUTRITION REAGENT PRODUCTION ///////////////// ///////////////////// NUTRITION REAGENT PRODUCTION /////////////////
/obj/belly/proc/HandleBellyReagents() /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)) if(isrobot(owner))
var/mob/living/silicon/robot/R = 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() GenerateBellyReagents()
gen_interval = 0 gen_interval = 0
else else
@@ -199,15 +201,22 @@
/obj/belly/proc/HandleBellyReagentEffects(var/list/touchable_atoms) /obj/belly/proc/HandleBellyReagentEffects(var/list/touchable_atoms)
if(LAZYLEN(contents)) 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) var/affecting_amt = reagents.total_volume / max(LAZYLEN(touchable_atoms), 1)
if(affecting_amt > 5) if(affecting_amt > 5)
affecting_amt = 5 affecting_amt = 5
if(affecting_amt >= 1) if(affecting_amt >= 1)
for(var/mob/living/L in touchable_atoms) 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) if(reagents.total_volume)
reagents.trans_to(L, affecting_amt, 1, FALSE) 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) for(var/obj/item/I in touchable_atoms)
if(reagents.total_volume) if(reagents.total_volume)
reagents.trans_to(I, affecting_amt, 1, FALSE) reagents.trans_to(I, affecting_amt, 1, FALSE)
@@ -277,88 +286,101 @@
switch(reagent_chosen) switch(reagent_chosen)
if("Water") if("Water")
generated_reagents = list("water" = 1) generated_reagents = list("water" = 1)
reagent_name = "water" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "water"
gen_amount = 1 gen_amount = 1
gen_cost = 1 gen_cost = 1
reagentid = "water" reagentid = "water"
reagentcolor = "#0064C877" reagentcolor = "#0064C877"
if("Milk") if("Milk")
generated_reagents = list("milk" = 1) generated_reagents = list("milk" = 1)
reagent_name = "milk" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "milk"
gen_amount = 1 gen_amount = 1
gen_cost = 5 gen_cost = 5
reagentid = "milk" reagentid = "milk"
reagentcolor = "#DFDFDF" reagentcolor = "#DFDFDF"
if("Cream") if("Cream")
generated_reagents = list("cream" = 1) generated_reagents = list("cream" = 1)
reagent_name = "cream" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "cream"
gen_amount = 1 gen_amount = 1
gen_cost = 5 gen_cost = 5
reagentid = "cream" reagentid = "cream"
reagentcolor = "#DFD7AF" reagentcolor = "#DFD7AF"
if("Honey") if("Honey")
generated_reagents = list("honey" = 1) generated_reagents = list("honey" = 1)
reagent_name = "honey" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "honey"
gen_amount = 1 gen_amount = 1
gen_cost = 10 gen_cost = 10
reagentid = "honey" reagentid = "honey"
reagentcolor = "#FFFF00" reagentcolor = "#FFFF00"
if("Cherry Jelly") //Kinda WIP, allows slime like folks something to stuff others with, should make a generic jelly in future 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) generated_reagents = list("cherryjelly" = 1)
reagent_name = "cherry jelly" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "cherry jelly"
gen_amount = 1 gen_amount = 1
gen_cost = 10 gen_cost = 10
reagentid = "cherryjelly" reagentid = "cherryjelly"
reagentcolor = "#801E28" reagentcolor = "#801E28"
if("Digestive acid") if("Digestive acid")
generated_reagents = list("stomacid" = 1) generated_reagents = list("stomacid" = 1)
reagent_name = "digestive acid" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "digestive acid"
gen_amount = 1 gen_amount = 1
gen_cost = 1 gen_cost = 1
reagentid = "stomacid" reagentid = "stomacid"
reagentcolor = "#664330" reagentcolor = "#664330"
if("Diluted digestive acid") if("Diluted digestive acid")
generated_reagents = list("diet_stomacid" = 1) 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_amount = 1
gen_cost = 1 gen_cost = 1
reagentid = "diet_stomacid" reagentid = "diet_stomacid"
reagentcolor = "#664330" reagentcolor = "#664330"
if("Space cleaner") if("Space cleaner")
generated_reagents = list("cleaner" = 1) generated_reagents = list("cleaner" = 1)
reagent_name = "space cleaner" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "space cleaner"
gen_amount = 1 gen_amount = 1
gen_cost = 10 gen_cost = 10
reagentid = "cleaner" reagentid = "cleaner"
reagentcolor = "#A5F0EE" reagentcolor = "#A5F0EE"
if("Lube") if("Lube")
generated_reagents = list("lube" = 1) generated_reagents = list("lube" = 1)
reagent_name = "lube" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "lube"
gen_amount = 1 gen_amount = 1
gen_cost = 10 gen_cost = 10
reagentid = "lube" reagentid = "lube"
reagentcolor = "#009CA8" reagentcolor = "#009CA8"
if("Biomass") if("Biomass")
generated_reagents = list("biomass" = 1) generated_reagents = list("biomass" = 1)
reagent_name = "biomass" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "biomass"
gen_amount = 1 gen_amount = 1
gen_cost = 10 gen_cost = 10
reagentid = "biomass" reagentid = "biomass"
reagentcolor = "#DF9FBF" reagentcolor = "#DF9FBF"
if("Concentrated Radium") if("Concentrated Radium")
generated_reagents = list("concentrated_radium" = 1) 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_amount = 1
gen_cost = 1 gen_cost = 1
reagentid = "concentrated_radium" reagentid = "concentrated_radium"
reagentcolor = "#C7C7C7" reagentcolor = "#C7C7C7"
if("Tricordrazine") if("Tricordrazine")
generated_reagents = list("tricordrazine" = 1) generated_reagents = list("tricordrazine" = 1)
reagent_name = "tricordrazine" if(capitalize(reagent_name) in reagent_choices)
reagent_name = "tricordrazine"
gen_amount = 1 gen_amount = 1
gen_cost = 10 gen_cost = 10
reagentid = "tricordrazine" reagentid = "tricordrazine"
reagentcolor = "#8040FF" reagentcolor = "#8040FF"
is_beneficial = TRUE
/////////////////////// FULLNESS MESSAGES ////////////////////// /////////////////////// FULLNESS MESSAGES //////////////////////
@@ -374,7 +396,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name)) formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner) 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() /obj/belly/proc/get_reagent_examine_msg2()
if(fullness1_messages.len) if(fullness1_messages.len)
@@ -384,7 +406,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name)) formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner) 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() /obj/belly/proc/get_reagent_examine_msg3()
if(fullness1_messages.len) if(fullness1_messages.len)
@@ -394,7 +416,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name)) formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner) 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() /obj/belly/proc/get_reagent_examine_msg4()
if(fullness1_messages.len) if(fullness1_messages.len)
@@ -404,7 +426,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name)) formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner) 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() /obj/belly/proc/get_reagent_examine_msg5()
if(fullness1_messages.len) if(fullness1_messages.len)
@@ -414,7 +436,7 @@
formatted_message = replacetext(raw_message,"%belly",lowertext(name)) formatted_message = replacetext(raw_message,"%belly",lowertext(name))
formatted_message = replacetext(formatted_message,"%pred",owner) 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. // 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 //Stop AI processing in bellies
if(M.ai_holder) if(M.ai_holder)
M.ai_holder.go_sleep() M.ai_holder.go_sleep()
if(reagents.total_volume >= 5 && M.digestable) //CHOMPEdit Start if(reagents.total_volume >= 5) //CHOMPEdit Start
if(digest_mode == DM_DIGEST) if(digest_mode == DM_DIGEST && M.digestable)
reagents.trans_to(M, reagents.total_volume * 0.1, 1 / max(LAZYLEN(contents), 1), FALSE) 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>") 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 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.alpha = custom_ingested_alpha
I.pixel_y = -450 + ((450 / max(max_ingested, 1)) * min(max_ingested, ingested.total_volume)) I.pixel_y = -450 + ((450 / max(max_ingested, 1)) * min(max_ingested, ingested.total_volume))
F.add_overlay(I) 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 = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "mush")
I.color = mush_color I.color = mush_color
I.alpha = mush_alpha I.alpha = mush_alpha
@@ -743,7 +743,7 @@
I.alpha = min(mush_alpha, (extra_mush / max(total_mush_content, 1)) * mush_alpha) I.alpha = min(mush_alpha, (extra_mush / max(total_mush_content, 1)) * mush_alpha)
I.pixel_y = stored_y I.pixel_y = stored_y
F.add_overlay(I) 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) if(digest_mode == DM_HOLD && item_digest_mode == IM_HOLD)
I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "calm") I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "calm")
else else
@@ -785,7 +785,7 @@
I.alpha = custom_ingested_alpha I.alpha = custom_ingested_alpha
I.pixel_y = -450 + (450 / max(max_ingested, 1) * max(min(max_ingested, ingested.total_volume), 1)) I.pixel_y = -450 + (450 / max(max_ingested, 1) * max(min(max_ingested, ingested.total_volume), 1))
F.add_overlay(I) 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 = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "mush")
I.color = mush_color I.color = mush_color
I.alpha = mush_alpha I.alpha = mush_alpha
@@ -801,7 +801,7 @@
I.alpha = min(mush_alpha, (extra_mush / max(total_mush_content, 1)) * mush_alpha) I.alpha = min(mush_alpha, (extra_mush / max(total_mush_content, 1)) * mush_alpha)
I.pixel_y = stored_y I.pixel_y = stored_y
F.add_overlay(I) 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) if(digest_mode == DM_HOLD && item_digest_mode == IM_HOLD)
I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "calm") I = image('modular_chomp/icons/mob/vore_fullscreens/bubbles.dmi', "calm")
else else

View File

@@ -101,7 +101,7 @@ GLOBAL_LIST_INIT(digest_modes, list())
var/mob/living/silicon/robot/R = B.owner var/mob/living/silicon/robot/R = B.owner
R.cell.charge += 25*damage_gain */ R.cell.charge += 25*damage_gain */
if(offset && damage_gain > 0) // If any different than default weight, multiply the % of offset. 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.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.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() B.GenerateBellyReagents_digesting()
@@ -124,7 +124,7 @@ GLOBAL_LIST_INIT(digest_modes, list())
B.steal_nutrition(L) B.steal_nutrition(L)
if(L.nutrition < 100) if(L.nutrition < 100)
B.absorb_living(L) 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 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) consider_healthbar(L, old_nutrition, B.owner)
return list("to_update" = TRUE) 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) /datum/digest_mode/heal/process_mob(obj/belly/B, mob/living/L)
var/oldstat = L.stat 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 return null // Can't heal the dead with healbelly
var/mob/living/carbon/human/H = L var/mob/living/carbon/human/H = L
if(B.owner.nutrition > 90 && H.isSynthetic()) if(B.owner.nutrition > 90 && H.isSynthetic())

View File

@@ -230,7 +230,7 @@
touchable_atoms |= I touchable_atoms |= I
//Stripping flag //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) for(var/slot in slots)
var/obj/item/I = H.get_equipped_item(slot = slot) var/obj/item/I = H.get_equipped_item(slot = slot)
if(I && H.unEquip(I, force = FALSE)) if(I && H.unEquip(I, force = FALSE))
@@ -373,7 +373,7 @@
GenerateBellyReagents_digested() GenerateBellyReagents_digested()
else else
R.cell.charge += (nutrition_percent / 100) * compensation * 25 * personal_nutrition_modifier*/ 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) owner_adjust_nutrition((nutrition_percent / 100) * compensation * 3 * personal_nutrition_modifier)
GenerateBellyReagents_digested() GenerateBellyReagents_digested()
else else
@@ -383,7 +383,7 @@
if(L.nutrition >= 100) if(L.nutrition >= 100)
var/oldnutrition = (L.nutrition * 0.05) var/oldnutrition = (L.nutrition * 0.05)
L.nutrition = (L.nutrition * 0.95) 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 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 GenerateBellyReagents_absorbing() //Dont need unique proc so far
else else

View File

@@ -70,7 +70,7 @@
var/total_volume = B.reagents.total_volume var/total_volume = B.reagents.total_volume
vore_organs_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 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 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 choices += rc
var/obj/item/weapon/reagent_containers/T = input(user,"Choose what to transfer to","Select Target") as null|anything in choices var/obj/item/weapon/reagent_containers/T = input(user,"Choose what to transfer to","Select Target") as null|anything in choices
if(!T) if(!T)
return FALSE return FALSE
if(!Adjacent(T) || !Adjacent(TG)) if(!Adjacent(T) || !Adjacent(TG))
return //No long distance transfer return //No long distance transfer

View File

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

View File

@@ -1,6 +1,18 @@
/mob /mob
var/receive_reagents = FALSE //Pref for people to avoid others transfering reagents into them. 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/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) // CHOMP vore icons refactor (Now on mob)
var/vore_capacity = 0 // Maximum capacity, -1 for unlimited var/vore_capacity = 0 // Maximum capacity, -1 for unlimited

View File

@@ -23,9 +23,6 @@
var/can_be_drop_pred = FALSE var/can_be_drop_pred = FALSE
var/allow_spontaneous_tf = FALSE // Obviously. var/allow_spontaneous_tf = FALSE // Obviously.
var/show_vore_fx = TRUE // Show belly fullscreens 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/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/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 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 var/pickup_pref = TRUE
//CHOMP stuff //CHOMP stuff
var/phase_vore = TRUE
var/noisy_full = FALSE
var/receive_reagents = FALSE var/receive_reagents = FALSE
var/give_reagents = FALSE var/give_reagents = FALSE
var/apply_reagents = TRUE
var/latejoin_vore = FALSE var/latejoin_vore = FALSE
var/latejoin_prey = FALSE var/latejoin_prey = FALSE
var/autotransferable = TRUE var/autotransferable = TRUE
var/strip_pref = FALSE
var/vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE) var/vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE)
var/vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000") 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/list/belly_prefs = list()
var/vore_taste = "nothing in particular" 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"] 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_vore = json_from_file["latejoin_vore"]
latejoin_prey = json_from_file["latejoin_prey"] latejoin_prey = json_from_file["latejoin_prey"]
receive_reagents = json_from_file["receive_reagents"] receive_reagents = json_from_file["receive_reagents"]
noisy_full = json_from_file["noisy_full"]
give_reagents = json_from_file["give_reagents"] give_reagents = json_from_file["give_reagents"]
apply_reagents = json_from_file["apply_reagents"]
autotransferable = json_from_file["autotransferable"] autotransferable = json_from_file["autotransferable"]
vore_sprite_color = json_from_file["vore_sprite_color"] vore_sprite_color = json_from_file["vore_sprite_color"]
vore_sprite_multiply = json_from_file["vore_sprite_multiply"] 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 //Quick sanitize
@@ -299,7 +323,9 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
while(weight_messages.len < 10) while(weight_messages.len < 10)
weight_messages.Add("") weight_messages.Add("")
//CHOMP stuff //CHOMP stuff Start
if(isnull(phase_vore))
phase_vore = TRUE
if(isnull(latejoin_vore)) if(isnull(latejoin_vore))
latejoin_vore = FALSE latejoin_vore = FALSE
if(isnull(latejoin_prey)) if(isnull(latejoin_prey))
@@ -308,12 +334,31 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
receive_reagents = FALSE receive_reagents = FALSE
if(isnull(give_reagents)) if(isnull(give_reagents))
give_reagents = FALSE give_reagents = FALSE
if(isnull(apply_reagents))
apply_reagents = TRUE
if(isnull(noisy_full))
noisy_full = FALSE
if(isnull(autotransferable)) if(isnull(autotransferable))
autotransferable = TRUE autotransferable = TRUE
if(isnull(vore_sprite_color)) if(isnull(vore_sprite_color))
vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000") vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000")
if(isnull(vore_sprite_multiply)) if(isnull(vore_sprite_multiply))
vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE) 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 return TRUE
@@ -335,23 +380,26 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"vore_smell" = vore_smell, "vore_smell" = vore_smell,
"permit_healbelly" = permit_healbelly, "permit_healbelly" = permit_healbelly,
"noisy" = noisy, "noisy" = noisy,
"noisy_full" = noisy_full, //CHOMPedit
"selective_preference" = selective_preference, "selective_preference" = selective_preference,
"show_vore_fx" = show_vore_fx, "show_vore_fx" = show_vore_fx,
"can_be_drop_prey" = can_be_drop_prey, "can_be_drop_prey" = can_be_drop_prey,
"can_be_drop_pred" = can_be_drop_pred, "can_be_drop_pred" = can_be_drop_pred,
"latejoin_vore" = latejoin_vore, //CHOMPedit "latejoin_vore" = latejoin_vore, //CHOMPedit
"latejoin_prey" = latejoin_prey, "latejoin_prey" = latejoin_prey, //CHOMPedit
"allow_spontaneous_tf" = allow_spontaneous_tf, "allow_spontaneous_tf" = allow_spontaneous_tf,
"step_mechanics_pref" = step_mechanics_pref, "step_mechanics_pref" = step_mechanics_pref,
"pickup_pref" = pickup_pref, "pickup_pref" = pickup_pref,
"belly_prefs" = belly_prefs, "belly_prefs" = belly_prefs,
"receive_reagents" = receive_reagents, "receive_reagents" = receive_reagents, //CHOMPedit
"give_reagents" = give_reagents, "give_reagents" = give_reagents, //CHOMPedit
"apply_reagents" = apply_reagents, //CHOMPedit
"autotransferable" = autotransferable, "autotransferable" = autotransferable,
"drop_vore" = drop_vore, "drop_vore" = drop_vore,
"slip_vore" = slip_vore, "slip_vore" = slip_vore,
"stumble_vore" = stumble_vore, "stumble_vore" = stumble_vore,
"throw_vore" = throw_vore, "throw_vore" = throw_vore,
"phase_vore" = phase_vore, //CHOMPedit
"food_vore" = food_vore, "food_vore" = food_vore,
"nutrition_message_visible" = nutrition_message_visible, "nutrition_message_visible" = nutrition_message_visible,
"nutrition_messages" = nutrition_messages, "nutrition_messages" = nutrition_messages,
@@ -360,6 +408,12 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"eating_privacy_global" = eating_privacy_global, "eating_privacy_global" = eating_privacy_global,
"vore_sprite_color" = vore_sprite_color, //CHOMPEdit "vore_sprite_color" = vore_sprite_color, //CHOMPEdit
"vore_sprite_multiply" = vore_sprite_multiply, //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 //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/mob/host // Note, we do this in case we ever want to allow people to view others vore panels
var/unsaved_changes = FALSE var/unsaved_changes = FALSE
var/show_pictures = TRUE 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. 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) /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["unsaved_changes"] = unsaved_changes
data["show_pictures"] = show_pictures data["show_pictures"] = show_pictures
data["overflow"] = icon_overflow
var/atom/hostloc = host.loc var/atom/hostloc = host.loc
//CHOMPAdd Start - Allow VorePanel to show pred belly details even while indirectly inside //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, "desc" = inside_desc,
"pred" = pred, "pred" = pred,
"ref" = "\ref[inside_belly]", "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() var/list/inside_contents = list()
@@ -166,11 +173,13 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"ref" = "\ref[O]", "ref" = "\ref[O]",
"outside" = FALSE, "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) if(inside_belly.contents.len <= max_icon_content)
icon_overflow = FALSE
info["icon"] = cached_nom_icon(O) info["icon"] = cached_nom_icon(O)
else else
show_pictures = !show_pictures icon_overflow = TRUE
//CHOMPEdit End
if(isliving(O)) if(isliving(O))
var/mob/living/M = O var/mob/living/M = O
info["stat"] = M.stat info["stat"] = M.stat
@@ -425,11 +434,13 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"ref" = "\ref[O]", "ref" = "\ref[O]",
"outside" = TRUE, "outside" = TRUE,
) )
if(show_pictures) //CHOMPedit: disables icon mode if(show_pictures) //CHOMPedit Start: disables icon mode
if(selected.contents.len <= max_icon_content) if(selected.contents.len <= max_icon_content)
icon_overflow = FALSE
info["icon"] = cached_nom_icon(O) info["icon"] = cached_nom_icon(O)
else else
show_pictures = !show_pictures icon_overflow = TRUE
//CHOMPEdit End
if(isliving(O)) if(isliving(O))
var/mob/living/M = O var/mob/living/M = O
info["stat"] = M.stat 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, "show_vore_fx" = host.show_vore_fx,
"can_be_drop_prey" = host.can_be_drop_prey, "can_be_drop_prey" = host.can_be_drop_prey,
"can_be_drop_pred" = host.can_be_drop_pred, "can_be_drop_pred" = host.can_be_drop_pred,
"latejoin_vore" = host.latejoin_vore, //CHOMPedit //CHOMPedit Start
"latejoin_prey" = host.latejoin_prey, //CHOMPedit "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, "allow_spontaneous_tf" = host.allow_spontaneous_tf,
"step_mechanics_active" = host.step_mechanics_pref, "step_mechanics_active" = host.step_mechanics_pref,
"pickup_mechanics_active" = host.pickup_pref, "pickup_mechanics_active" = host.pickup_pref,
"strip_mechanics_active" = host.strip_pref, //CHOMPedit
"noisy" = host.noisy, "noisy" = host.noisy,
//CHOMPedit start, liquid belly prefs //CHOMPedit start, liquid belly prefs
"liq_rec" = host.receive_reagents, "liq_rec" = host.receive_reagents,
"liq_giv" = host.give_reagents, "liq_giv" = host.give_reagents,
"liq_apply" = host.apply_reagents,
"autotransferable" = host.autotransferable, "autotransferable" = host.autotransferable,
"noisy_full" = host.noisy_full, //Belching while full "noisy_full" = host.noisy_full, //Belching while full
"selective_active" = host.selective_preference, //Reveal active selective mode in prefs
//CHOMPedit end //CHOMPedit end
"drop_vore" = host.drop_vore, "drop_vore" = host.drop_vore,
"slip_vore" = host.slip_vore, "slip_vore" = host.slip_vore,
"stumble_vore" = host.stumble_vore, "stumble_vore" = host.stumble_vore,
"throw_vore" = host.throw_vore, "throw_vore" = host.throw_vore,
"phase_vore" = host.phase_vore, //CHOMPedit
"food_vore" = host.food_vore, "food_vore" = host.food_vore,
"nutrition_message_visible" = host.nutrition_message_visible, "nutrition_message_visible" = host.nutrition_message_visible,
"nutrition_messages" = host.nutrition_messages, "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 host.client.prefs_vr.can_be_drop_prey = host.can_be_drop_prey
unsaved_changes = TRUE unsaved_changes = TRUE
return TRUE return TRUE
//CHOMPEdit Start
if("toggle_latejoin_vore") if("toggle_latejoin_vore")
host.latejoin_vore = !host.latejoin_vore host.latejoin_vore = !host.latejoin_vore
if(host.client.prefs_vr) 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 host.client.prefs_vr.latejoin_prey = host.latejoin_prey
unsaved_changes = TRUE unsaved_changes = TRUE
return TRUE return TRUE
//CHOMPEdit End
if("toggle_allow_spontaneous_tf") if("toggle_allow_spontaneous_tf")
host.allow_spontaneous_tf = !host.allow_spontaneous_tf host.allow_spontaneous_tf = !host.allow_spontaneous_tf
if(host.client.prefs_vr) 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 host.client.prefs_vr.pickup_pref = host.pickup_pref
unsaved_changes = TRUE unsaved_changes = TRUE
return 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") if("toggle_healbelly")
host.permit_healbelly = !host.permit_healbelly host.permit_healbelly = !host.permit_healbelly
if(host.client.prefs_vr) 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 host.client.prefs_vr.give_reagents = host.give_reagents
unsaved_changes = TRUE unsaved_changes = TRUE
return 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") if("toggle_autotransferable")
host.autotransferable = !host.autotransferable host.autotransferable = !host.autotransferable
if(host.client.prefs_vr) if(host.client.prefs_vr)
@@ -1898,22 +1937,50 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
//CHOMPedit end //CHOMPedit end
if("toggle_drop_vore") if("toggle_drop_vore")
host.drop_vore = !host.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 unsaved_changes = TRUE
return TRUE return TRUE
if("toggle_slip_vore") if("toggle_slip_vore")
host.slip_vore = !host.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 unsaved_changes = TRUE
return TRUE return TRUE
if("toggle_stumble_vore") if("toggle_stumble_vore")
host.stumble_vore = !host.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 unsaved_changes = TRUE
return TRUE return TRUE
if("toggle_throw_vore") if("toggle_throw_vore")
host.throw_vore = !host.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 unsaved_changes = TRUE
return 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") if("toggle_food_vore")
host.food_vore = !host.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 unsaved_changes = TRUE
return TRUE return TRUE
if("switch_selective_mode_pref") 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.vore_sprite_multiply[belly_choice] = FALSE
host.update_icons_body() host.update_icons_body()
return TRUE 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 //CHOMPEdit end
/datum/vore_look/proc/pick_from_inside(mob/user, params) /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 else
host.vore_selected.reagents.clear_reagents() host.vore_selected.reagents.clear_reagents()
. = TRUE . = TRUE
if(.)
unsaved_changes = TRUE
/datum/vore_look/proc/liq_set_msg(mob/user, params) /datum/vore_look/proc/liq_set_msg(mob/user, params)
if(!host.vore_selected) if(!host.vore_selected)
@@ -3770,4 +3879,6 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
if(new_message) if(new_message)
host.vore_selected.set_reagent_messages(new_message,"full5") host.vore_selected.set_reagent_messages(new_message,"full5")
. = TRUE . = TRUE
if(.)
unsaved_changes = TRUE
//CHOMPedit end //CHOMPedit end

View File

@@ -259,7 +259,6 @@
new_mob.feeding = feeding new_mob.feeding = feeding
new_mob.can_be_drop_prey = can_be_drop_prey new_mob.can_be_drop_prey = can_be_drop_prey
new_mob.can_be_drop_pred = can_be_drop_pred 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.digest_leave_remains = digest_leave_remains
new_mob.allowmobvore = allowmobvore new_mob.allowmobvore = allowmobvore
new_mob.permit_healbelly = permit_healbelly new_mob.permit_healbelly = permit_healbelly
@@ -283,6 +282,26 @@
new_mob.eating_privacy_global = eating_privacy_global new_mob.eating_privacy_global = eating_privacy_global
new_mob.text_warnings = text_warnings 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///// /////SUBTYPES/////
/obj/item/weapon/gun/energy/mouseray/medical //This just changes people back, it can't TF people into anything without shenanigans /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/spitting = 0
var/spit_projectile = null // what our spit projectile is. Can be anything 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) /mob/living/simple_mob/RangedAttack(var/atom/A)
if(!isnull(spit_projectile) && spitting) if(!isnull(spit_projectile) && spitting)
Spit(A) 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 { Box, Button, Flex, Collapsible, Icon, LabeledList, NoticeBox, Section, Tabs, Divider, Stack } from '../components';
import { Window } from '../layouts'; import { Window } from '../layouts';
import { classes } from 'common/react'; import { classes } from 'common/react';
import { NumberInput } from '../../tgui/components';
const stats = [null, 'average', 'bad']; const stats = [null, 'average', 'bad'];
const digestModeToColor = { const digestModeToColor = {
'Default': null,
'Hold': null, 'Hold': null,
'Digest': 'red', 'Digest': 'red',
'Absorb': 'purple', 'Absorb': 'purple',
@@ -21,6 +23,21 @@ const digestModeToColor = {
'Encase In Egg': 'blue', '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 = { const digestModeToPreyMode = {
'Hold': 'being held.', 'Hold': 'being held.',
'Digest': 'being digested.', 'Digest': 'being digested.',
@@ -229,8 +246,18 @@ export const VorePanel = (props, context) => {
const VoreInsidePanel = (props, context) => { const VoreInsidePanel = (props, context) => {
const { act, data } = useBackend(context); const { act, data } = useBackend(context);
const { absorbed, belly_name, belly_mode, desc, pred, contents, ref } = const {
data.inside; absorbed,
belly_name,
belly_mode,
desc,
pred,
contents,
ref,
liq_lvl,
liq_reagent_type,
liuq_name,
} = data.inside;
if (!belly_name) { if (!belly_name) {
return <Section title="Inside">You aren&apos;t inside anyone.</Section>; return <Section title="Inside">You aren&apos;t inside anyone.</Section>;
@@ -249,6 +276,20 @@ const VoreInsidePanel = (props, context) => {
<Box color="red" inline> <Box color="red" inline>
{belly_name} {belly_name}
</Box> </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; &nbsp;
<Box color="yellow" inline> <Box color="yellow" inline>
and you are and you are
@@ -1142,8 +1183,9 @@ const VoreSelectedMobTypeBellyButtons = (props, context) => {
return ( return (
<Section title={'Cyborg Controls'} width={'80%'}> <Section title={'Cyborg Controls'} width={'80%'}>
<span style={{ color: 'red' }}> <span style={{ color: 'red' }}>
Your module does either not support vore sprites or you've selected Your module does either not support vore sprites or you&apos;ve
a belly sprite other than the sleeper within the Visuals section. selected a belly sprite other than the sleeper within the Visuals
section.
</span> </span>
</Section> </Section>
); );
@@ -2087,6 +2129,7 @@ const VoreSelectedBellyLiquidOptions = (props, context) => {
}) })
} }
icon="pen" icon="pen"
color={reagentToColor[liq_interacts.liq_reagent_type]}
content={liq_interacts.liq_reagent_type} content={liq_interacts.liq_reagent_type}
/> />
</LabeledList.Item> </LabeledList.Item>
@@ -2476,37 +2519,47 @@ const VoreUserPreferences = (props, context) => {
const { const {
digestable, digestable,
devourable,
resizable,
feeding,
absorbable, absorbable,
digest_leave_remains, devourable,
allowmobvore, allowmobvore,
feeding,
permit_healbelly, permit_healbelly,
show_vore_fx,
can_be_drop_prey, can_be_drop_prey,
can_be_drop_pred, can_be_drop_pred,
drop_vore,
slip_vore,
stumble_vore,
throw_vore,
phase_vore,
food_vore,
latejoin_vore, latejoin_vore,
latejoin_prey, latejoin_prey,
allow_spontaneous_tf,
step_mechanics_active,
pickup_mechanics_active,
noisy, noisy,
noisy_full, 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_rec,
liq_giv, liq_giv,
autotransferable, liq_apply,
drop_vore, no_spawnpred_warning,
stumble_vore, no_spawnprey_warning,
slip_vore, no_spawnpred_warning_time,
throw_vore, no_spawnprey_warning_time,
food_vore, no_spawnpred_warning_save,
no_spawnprey_warning_save,
nutrition_message_visible, nutrition_message_visible,
weight_message_visible, weight_message_visible,
eating_privacy_global, selective_active,
} = data.prefs; } = data.prefs;
const { show_pictures } = data; const { show_pictures, overflow } = data;
const [tabIndex, setTabIndex] = useLocalState(context, 'tabIndex', 0); const [tabIndex, setTabIndex] = useLocalState(context, 'tabIndex', 0);
@@ -2540,6 +2593,7 @@ const VoreUserPreferences = (props, context) => {
devour: { devour: {
action: 'toggle_devour', action: 'toggle_devour',
test: devourable, test: devourable,
fluid: false,
tooltip: { tooltip: {
main: 'This button is to toggle your ability to be devoured by others.', main: 'This button is to toggle your ability to be devoured by others.',
enable: 'Click here to allow being devoured.', enable: 'Click here to allow being devoured.',
@@ -2580,9 +2634,7 @@ const VoreUserPreferences = (props, context) => {
action: 'toggle_healbelly', action: 'toggle_healbelly',
test: permit_healbelly, test: permit_healbelly,
tooltip: { tooltip: {
main: main: "This button is for those who don't like healbelly used on them as a mechanic.",
"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.',
enable: 'Click here to allow being heal-bellied.', enable: 'Click here to allow being heal-bellied.',
disable: 'Click here to prevent being heal-bellied.', disable: 'Click here to prevent being heal-bellied.',
}, },
@@ -2594,6 +2646,7 @@ const VoreUserPreferences = (props, context) => {
dropnom_prey: { dropnom_prey: {
action: 'toggle_dropnom_prey', action: 'toggle_dropnom_prey',
test: can_be_drop_prey, test: can_be_drop_prey,
fluid: false,
tooltip: { tooltip: {
main: main:
'This toggle is for spontaneous, environment related vore' + 'This toggle is for spontaneous, environment related vore' +
@@ -2609,6 +2662,7 @@ const VoreUserPreferences = (props, context) => {
dropnom_pred: { dropnom_pred: {
action: 'toggle_dropnom_pred', action: 'toggle_dropnom_pred',
test: can_be_drop_pred, test: can_be_drop_pred,
fluid: false,
tooltip: { tooltip: {
main: main:
'This toggle is for spontaneous, environment related vore' + 'This toggle is for spontaneous, environment related vore' +
@@ -2681,6 +2735,21 @@ const VoreUserPreferences = (props, context) => {
disabled: 'Throw Vore Disabled', 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: { toggle_food_vore: {
action: 'toggle_food_vore', action: 'toggle_food_vore',
test: food_vore, test: food_vore,
@@ -2699,6 +2768,7 @@ const VoreUserPreferences = (props, context) => {
spawnbelly: { spawnbelly: {
action: 'toggle_latejoin_vore', action: 'toggle_latejoin_vore',
test: latejoin_vore, test: latejoin_vore,
fluid: false,
tooltip: { tooltip: {
main: 'Toggle late join vore spawnpoint.', main: 'Toggle late join vore spawnpoint.',
enable: 'Click here to turn on vorish spawnpoint.', enable: 'Click here to turn on vorish spawnpoint.',
@@ -2712,6 +2782,7 @@ const VoreUserPreferences = (props, context) => {
spawnprey: { spawnprey: {
action: 'toggle_latejoin_prey', action: 'toggle_latejoin_prey',
test: latejoin_prey, test: latejoin_prey,
fluid: false,
tooltip: { tooltip: {
main: 'Toggle late join preds spawning on you.', main: 'Toggle late join preds spawning on you.',
enable: 'Click here to turn on preds spawning around you.', enable: 'Click here to turn on preds spawning around you.',
@@ -2870,6 +2941,23 @@ const VoreUserPreferences = (props, context) => {
disabled: 'Examine Weight Messages Inactive', 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: { eating_privacy_global: {
action: 'toggle_global_privacy', action: 'toggle_global_privacy',
test: eating_privacy_global, test: eating_privacy_global,
@@ -2886,6 +2974,19 @@ const VoreUserPreferences = (props, context) => {
disabled: 'Global Vore Privacy: Loud', 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: { liquid_receive: {
action: 'toggle_liq_rec', action: 'toggle_liq_rec',
test: liq_rec, test: liq_rec,
@@ -2912,143 +3013,399 @@ const VoreUserPreferences = (props, context) => {
disabled: 'Do Not Allow Taking Liquids', disabled: 'Do Not Allow Taking Liquids',
}, },
}, },
autotransferable: { liquid_apply: {
action: 'toggle_autotransferable', action: 'toggle_liq_apply',
test: autotransferable, test: liq_apply,
tooltip: { tooltip: {
main: 'This button is for allowing or preventing belly auto-transfer mechanics from moving you.', main: 'This button is for allowing or preventing vorgans from applying liquids to you.',
enable: 'Click here to allow autotransfer.', enable: 'Click here to allow the application of liquids.',
disable: 'Click here to prevent autotransfer.', disable: 'Click here to prevent the application of liquids.',
}, },
content: { content: {
enabled: 'Auto-Transfer Allowed', enabled: 'Applying Liquids Allowed',
disabled: 'Do Not Allow Auto-Transfer', 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 ( return (
<Section <Box nowrap>
title="Mechanical Preferences" <Section
buttons={ title="Mechanical Preferences"
<Button buttons={
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%">
<Button <Button
fluid icon="eye"
content="Selective Mode Preference" selected={show_pictures}
onClick={() => act('switch_selective_mode_pref')} tooltip={
/> 'Allows to toggle if belly contents are shown as icons or in list format. ' +
</Flex.Item> (show_pictures
<Flex.Item basis="32%"> ? 'Contents shown as pictures.'
<VoreUserPreferenceItem spec={preferences.eating_privacy_global} /> : 'Contents shown as lists.') +
</Flex.Item> (show_pictures && overflow
<Flex.Item basis="32%" grow={1}> ? 'Temporarily disabled. Stomach contents above limits.'
<VoreUserPreferenceItem spec={preferences.autotransferable} /> : '')
</Flex.Item> }
<Flex.Item basis="32%"> backgroundColor={show_pictures && overflow ? 'orange' : ''}
<VoreUserPreferenceItem onClick={() => act('show_pictures')}>
spec={preferences.liquid_receive} Contents Preference: {show_pictures ? 'Show Pictures' : 'Show List'}
tooltipPosition="top" </Button>
/> }>
</Flex.Item> <Flex spacing={1} wrap="wrap" justify="center">
<Flex.Item basis="32%"> <Flex.Item basis="33%">
<VoreUserPreferenceItem <VoreUserPreferenceItem
spec={preferences.liquid_give} spec={preferences.steppref}
tooltipPosition="top" tooltipPosition="right"
/> />
</Flex.Item> </Flex.Item>
</Flex> <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"> <Section title="Aesthetic Preferences">
<Flex spacing={1} wrap="wrap" justify="center"> <Flex spacing={1} wrap="wrap" justify="center">
<Flex.Item basis="50%" grow={1}> <Flex.Item basis="50%" grow={1}>
@@ -3105,7 +3462,7 @@ const VoreUserPreferences = (props, context) => {
<Divider /> <Divider />
<Section> <Section>
<Flex spacing={1}> <Flex spacing={1}>
<Flex.Item basis="49%"> <Flex.Item basis="50%">
<Button <Button
fluid fluid
content="Save Prefs" content="Save Prefs"
@@ -3113,7 +3470,7 @@ const VoreUserPreferences = (props, context) => {
onClick={() => act('saveprefs')} onClick={() => act('saveprefs')}
/> />
</Flex.Item> </Flex.Item>
<Flex.Item basis="49%" grow={1}> <Flex.Item basis="50%" grow={1}>
<Button <Button
fluid fluid
content="Reload Prefs" content="Reload Prefs"
@@ -3123,7 +3480,7 @@ const VoreUserPreferences = (props, context) => {
</Flex.Item> </Flex.Item>
</Flex> </Flex>
</Section> </Section>
</Section> </Box>
); );
}; };
@@ -3131,14 +3488,17 @@ const VoreUserPreferenceItem = (props, context) => {
const { act } = useBackend(context); const { act } = useBackend(context);
const { spec, ...rest } = props; const { spec, ...rest } = props;
const { action, test, tooltip, content } = spec; const { action, test, tooltip, content, fluid = true, back_color } = spec;
return ( return (
<Button <Button
onClick={() => act(action)} onClick={() => act(action)}
icon={test ? 'toggle-on' : 'toggle-off'} icon={test ? 'toggle-on' : 'toggle-off'}
selected={test} selected={test}
fluid fluid={fluid}
backgroundColor={
back_color ? (test ? back_color.enabled : back_color.disabled) : ''
}
tooltip={tooltip.main + ' ' + (test ? tooltip.disable : tooltip.enable)} tooltip={tooltip.main + ' ' + (test ? tooltip.disable : tooltip.enable)}
content={test ? content.enabled : content.disabled} content={test ? content.enabled : content.disabled}
{...rest} {...rest}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long