mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-27 23:29:10 +01:00
[MIRROR] Spontaneous Prey Bellies (#12216)
Co-authored-by: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: C.L. <killer65311@gmail.com>
This commit is contained in:
co-authored by
SatinIsle
Kashargul
C.L.
parent
caedc0bcaf
commit
ddb541f067
@@ -775,6 +775,27 @@
|
||||
var/belly = user.vore_selected
|
||||
return begin_instant_nom(user, prey, user, belly)
|
||||
|
||||
/mob/living/proc/get_current_spont_belly(atom/movable/preything)
|
||||
var/direction_diff = angle2dir_cardinal(dir2angle(get_dir(src, preything)) - dir2angle(dir))
|
||||
var/spont_belly_name
|
||||
switch(direction_diff)
|
||||
if(NORTH)
|
||||
if(spont_belly_front)
|
||||
spont_belly_name = spont_belly_front
|
||||
if(SOUTH)
|
||||
if(spont_belly_rear)
|
||||
spont_belly_name = spont_belly_rear
|
||||
if(EAST)
|
||||
if(spont_belly_right)
|
||||
spont_belly_name = spont_belly_right
|
||||
if(WEST)
|
||||
if(spont_belly_left)
|
||||
spont_belly_name = spont_belly_left
|
||||
for(var/obj/belly/lookup_belly in vore_organs)
|
||||
if(lookup_belly.name == spont_belly_name)
|
||||
return lookup_belly
|
||||
return vore_selected
|
||||
|
||||
/mob/living/proc/glow_toggle()
|
||||
set name = "Glow (Toggle)"
|
||||
set category = "Abilities.General"
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
var/drop_vore = TRUE
|
||||
var/throw_vore = TRUE
|
||||
var/food_vore = TRUE
|
||||
var/obj/belly/spont_belly_front = null
|
||||
var/obj/belly/spont_belly_rear = null
|
||||
var/obj/belly/spont_belly_left = null
|
||||
var/obj/belly/spont_belly_right = null
|
||||
var/consume_liquid_belly = FALSE //starting off because if someone is into that, they'll toggle it first time they get the error. Otherway around would be more pref breaky.
|
||||
var/digest_pain = TRUE
|
||||
var/can_be_drop_prey = FALSE
|
||||
|
||||
@@ -43,6 +43,10 @@
|
||||
"throw_vore" = owner.throw_vore,
|
||||
"phase_vore" = owner.phase_vore,
|
||||
"food_vore" = owner.food_vore,
|
||||
"spont_belly_rear" = owner.spont_belly_rear,
|
||||
"spont_belly_left" = owner.spont_belly_left,
|
||||
"spont_belly_front" = owner.spont_belly_front,
|
||||
"spont_belly_right" = owner.spont_belly_right,
|
||||
"consume_liquid_belly" = owner.consume_liquid_belly,
|
||||
"digest_pain" = owner.digest_pain,
|
||||
"eating_privacy_global" = owner.eating_privacy_global,
|
||||
@@ -69,7 +73,12 @@
|
||||
"aestethic_messages" = compile_aesthetic_messages(owner),
|
||||
"vore_sprite_color" = owner.vore_sprite_color,
|
||||
"vore_sprite_multiply" = owner.vore_sprite_multiply,
|
||||
"vore_icon_options" = owner.vore_icon_bellies
|
||||
"vore_icon_options" = owner.vore_icon_bellies,
|
||||
// spont options
|
||||
"spont_rear" = owner.spont_belly_rear,
|
||||
"spont_front" = owner.spont_belly_front,
|
||||
"spont_left" = owner.spont_belly_left,
|
||||
"spont_right" = owner.spont_belly_right
|
||||
)
|
||||
|
||||
/datum/vore_look/proc/compile_aesthetic_messages(mob/owner)
|
||||
|
||||
@@ -822,25 +822,25 @@
|
||||
host.vore_selected.clear_preview(host) //Clears the stomach overlay. This is a failsafe but shouldn't occur.
|
||||
. = TRUE
|
||||
if("b_fullscreen_color")
|
||||
var/newcolor = tgui_color_picker(user, "Choose a color.", "", host.vore_selected.belly_fullscreen_color)
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor)
|
||||
host.vore_selected.belly_fullscreen_color = newcolor
|
||||
host.vore_selected.update_internal_overlay()
|
||||
. = TRUE
|
||||
if("b_fullscreen_color2")
|
||||
var/newcolor2 = tgui_color_picker(user, "Choose a color.", "", host.vore_selected.belly_fullscreen_color2)
|
||||
var/newcolor2 = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor2)
|
||||
host.vore_selected.belly_fullscreen_color2 = newcolor2
|
||||
host.vore_selected.update_internal_overlay()
|
||||
. = TRUE
|
||||
if("b_fullscreen_color3")
|
||||
var/newcolor3 = tgui_color_picker(user, "Choose a color.", "", host.vore_selected.belly_fullscreen_color3)
|
||||
var/newcolor3 = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor3)
|
||||
host.vore_selected.belly_fullscreen_color3 = newcolor3
|
||||
host.vore_selected.update_internal_overlay()
|
||||
. = TRUE
|
||||
if("b_fullscreen_color4")
|
||||
var/newcolor4 = tgui_color_picker(user, "Choose a color.", "", host.vore_selected.belly_fullscreen_color4)
|
||||
var/newcolor4 = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor4)
|
||||
host.vore_selected.belly_fullscreen_color4 = newcolor4
|
||||
host.vore_selected.update_internal_overlay()
|
||||
@@ -1003,7 +1003,7 @@
|
||||
host.handle_belly_update()
|
||||
host.updateVRPanel()
|
||||
if("b_undergarment_color")
|
||||
var/newcolor = tgui_color_picker(user, "Choose a color.", "", host.vore_selected.undergarment_color)
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor)
|
||||
host.vore_selected.undergarment_color = newcolor
|
||||
host.handle_belly_update()
|
||||
@@ -1015,17 +1015,17 @@
|
||||
host.vore_selected.tail_to_change_to = tail_choice
|
||||
. = TRUE
|
||||
if("b_tail_color")
|
||||
var/newcolor = tgui_color_picker(user, "Choose tail color.", "", host.vore_selected.tail_colouration)
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor)
|
||||
host.vore_selected.tail_colouration = newcolor
|
||||
. = TRUE
|
||||
if("b_tail_color2")
|
||||
var/newcolor = tgui_color_picker(user, "Choose tail secondary color.", "", host.vore_selected.tail_extra_overlay)
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor)
|
||||
host.vore_selected.tail_extra_overlay = newcolor
|
||||
. = TRUE
|
||||
if("b_tail_color3")
|
||||
var/newcolor = tgui_color_picker(user, "Choose tail tertiary color.", "", host.vore_selected.tail_extra_overlay2)
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor)
|
||||
host.vore_selected.tail_extra_overlay2 = newcolor
|
||||
. = TRUE
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
host.vore_selected.update_internal_overlay()
|
||||
. = TRUE
|
||||
if("b_custom_reagentcolor")
|
||||
var/newcolor = tgui_color_picker(user, "Choose custom color for liquid overlay. Cancel for normal reagent color.", "", host.vore_selected.custom_reagentcolor)
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor)
|
||||
host.vore_selected.custom_reagentcolor = newcolor
|
||||
else
|
||||
@@ -137,7 +137,7 @@
|
||||
host.vore_selected.update_internal_overlay()
|
||||
. = TRUE
|
||||
if("b_mush_color")
|
||||
var/newcolor = tgui_color_picker(user, "Choose custom color for mush overlay.", "", host.vore_selected.mush_color)
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor)
|
||||
host.vore_selected.mush_color = newcolor
|
||||
host.vore_selected.update_internal_overlay()
|
||||
@@ -194,7 +194,7 @@
|
||||
host.vore_selected.update_internal_overlay()
|
||||
. = TRUE
|
||||
if("b_custom_ingested_color")
|
||||
var/newcolor = tgui_color_picker(user, "Choose custom color for ingested metabolism overlay. Cancel for reagent-based dynamic blend.", "", host.vore_selected.custom_ingested_color)
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(newcolor)
|
||||
host.vore_selected.custom_ingested_color = newcolor
|
||||
else
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
if(selected.message_mode || selected.escapechance)
|
||||
tab_data["subtypes"] += SUCCESS_MESSAGE
|
||||
if(!message_subtab)
|
||||
message_subtab = ATTEMPT_MESSAGE
|
||||
message_subtab = ITEM_MESSAGE
|
||||
if(message_subtab == ATTEMPT_MESSAGE)
|
||||
tab_data["possible_messages"] = list(TO_PREY, TO_YOU)
|
||||
if(!selected_message)
|
||||
|
||||
@@ -59,6 +59,10 @@
|
||||
var/slip_vore = TRUE
|
||||
var/throw_vore = TRUE
|
||||
var/food_vore = TRUE
|
||||
var/spont_belly_rear = null
|
||||
var/spont_belly_left = null
|
||||
var/spont_belly_right = null
|
||||
var/spont_belly_front = null
|
||||
var/consume_liquid_belly = FALSE //starting off because if someone is into that, they'll toggle it first time they get the error. Otherway around would be more pref breaky.
|
||||
|
||||
var/digest_pain = TRUE
|
||||
@@ -216,6 +220,10 @@
|
||||
slip_vore = json_from_file["slip_vore"]
|
||||
food_vore = json_from_file["food_vore"]
|
||||
throw_vore = json_from_file["throw_vore"]
|
||||
spont_belly_rear = json_from_file["spont_belly_rear"]
|
||||
spont_belly_left = json_from_file["spont_belly_left"]
|
||||
spont_belly_front = json_from_file["spont_belly_front"]
|
||||
spont_belly_right = json_from_file["spont_belly_right"]
|
||||
consume_liquid_belly = json_from_file["consume_liquid_belly"]
|
||||
stumble_vore = json_from_file["stumble_vore"]
|
||||
digest_pain = json_from_file["digest_pain"]
|
||||
@@ -438,6 +446,10 @@
|
||||
"slip_vore" = slip_vore,
|
||||
"stumble_vore" = stumble_vore,
|
||||
"throw_vore" = throw_vore,
|
||||
"spont_belly_rear" = spont_belly_rear,
|
||||
"spont_belly_left" = spont_belly_left,
|
||||
"spont_belly_front" = spont_belly_front,
|
||||
"spont_belly_right" = spont_belly_right,
|
||||
"allow_mind_transfer" = allow_mind_transfer,
|
||||
"phase_vore" = phase_vore,
|
||||
"consume_liquid_belly" = consume_liquid_belly,
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
var/sc_message_subtab // our soulcatcher message subtab
|
||||
var/aset_message_subtab
|
||||
var/selected_message
|
||||
var/list/preset_colors
|
||||
|
||||
/datum/vore_look/New(mob/new_host)
|
||||
if(istype(new_host))
|
||||
@@ -59,6 +60,11 @@
|
||||
host = null
|
||||
. = ..()
|
||||
|
||||
/datum/vore_look/tgui_close(mob/user)
|
||||
if(user)
|
||||
user.write_preference_directly(/datum/preference/text/preset_colors, preset_colors)
|
||||
. = ..()
|
||||
|
||||
/datum/vore_look/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
@@ -113,6 +119,7 @@
|
||||
)
|
||||
data["min_belly_name"] = BELLIES_NAME_MIN
|
||||
data["max_belly_name"] = BELLIES_NAME_MAX
|
||||
preset_colors = user.read_preference(/datum/preference/text/preset_colors)
|
||||
|
||||
return data
|
||||
|
||||
@@ -126,6 +133,7 @@
|
||||
data["unsaved_changes"] = unsaved_changes
|
||||
data["active_tab"] = active_tab
|
||||
data["persist_edit_mode"] = host.persistend_edit_mode
|
||||
data["presets"] = preset_colors
|
||||
|
||||
// Inisde Data
|
||||
data["inside"] = get_inside_data(host)
|
||||
@@ -621,6 +629,8 @@
|
||||
host.client.prefs_vr.food_vore = host.food_vore
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
if("set_spont_belly")
|
||||
return set_spont_belly(params)
|
||||
if("toggle_consume_liquid_belly")
|
||||
host.consume_liquid_belly = !host.consume_liquid_belly
|
||||
if(host.client.prefs_vr)
|
||||
@@ -651,7 +661,7 @@
|
||||
var/belly_choice = params["attribute"]
|
||||
if(!(belly_choice in host.vore_icon_bellies))
|
||||
return FALSE
|
||||
var/newcolor = tgui_color_picker(ui.user, "Choose a color.", "", host.vore_sprite_color[belly_choice])
|
||||
var/newcolor = sanitize_hexcolor(lowertext(params["val"]))
|
||||
if(!newcolor)
|
||||
return FALSE
|
||||
host.vore_sprite_color[belly_choice] = newcolor
|
||||
@@ -884,6 +894,20 @@
|
||||
unsaved_changes = TRUE
|
||||
host.soulgem.set_custom_message(message, SC_DELETE_MESSAGE)
|
||||
return TRUE
|
||||
if("preset")
|
||||
var/raw_data = lowertext(params["color"])
|
||||
var/index = lowertext(params["index"])
|
||||
var/list/entries = splittext(preset_colors, ";")
|
||||
while(LAZYLEN(entries) < 20)
|
||||
entries += "#FFFFFF"
|
||||
if(LAZYLEN(entries) > 20)
|
||||
entries.Cut(21)
|
||||
var/hex = sanitize_hexcolor(raw_data)
|
||||
if (!hex || !isnum(index) || entries[index] == hex)
|
||||
return
|
||||
entries[index] = hex
|
||||
preset_colors = entries.Join(";")
|
||||
return FALSE
|
||||
|
||||
/datum/vore_look/proc/pick_from_inside(mob/user, params)
|
||||
var/atom/movable/target = locate(params["pick"])
|
||||
@@ -1386,6 +1410,50 @@
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/vore_look/proc/set_spont_belly(params)
|
||||
switch(params["attribute"])
|
||||
if("rear")
|
||||
var/spont_target = html_encode(params["val"])
|
||||
if(spont_target == "Current Selected")
|
||||
host.spont_belly_rear = null
|
||||
else
|
||||
host.spont_belly_rear = spont_target
|
||||
if(host.client.prefs_vr)
|
||||
host.client.prefs_vr.spont_belly_rear = host.spont_belly_rear
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
if("front")
|
||||
var/spont_target = html_encode(params["val"])
|
||||
if(spont_target == "Current Selected")
|
||||
host.spont_belly_front = null
|
||||
else
|
||||
host.spont_belly_front = spont_target
|
||||
if(host.client.prefs_vr)
|
||||
host.client.prefs_vr.spont_belly_front = host.spont_belly_front
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
if("left")
|
||||
var/spont_target = html_encode(params["val"])
|
||||
if(spont_target == "Current Selected")
|
||||
host.spont_belly_left = null
|
||||
else
|
||||
host.spont_belly_left = spont_target
|
||||
if(host.client.prefs_vr)
|
||||
host.client.prefs_vr.spont_belly_left = host.spont_belly_left
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
if("right")
|
||||
var/spont_target = html_encode(params["val"])
|
||||
if(spont_target == "Current Selected")
|
||||
host.spont_belly_right = null
|
||||
else
|
||||
host.spont_belly_right = spont_target
|
||||
if(host.client.prefs_vr)
|
||||
host.client.prefs_vr.spont_belly_right = host.spont_belly_right
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/vore_look/proc/sanitize_fixed_list(var/list/messages, type, delim = "\n\n", limit)
|
||||
if(!limit)
|
||||
CRASH("[type] set message called without limit!")
|
||||
|
||||
Reference in New Issue
Block a user