mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-25 22:28:44 +01:00
[MIRROR] move inside to its own tab, only shwoing when inside a belly (#11907)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
co-authored by
Kashargul
parent
f9eb7665a5
commit
749fffc8ff
@@ -76,36 +76,37 @@
|
||||
"possible_messages" = list(SET_TASTE, SET_SMELL, SET_NUTRITION_EX, SET_WEIGHT_EX),
|
||||
"aest_subtab" = aset_message_subtab
|
||||
)
|
||||
if(aset_message_subtab == SET_TASTE)
|
||||
tab_data["max_length"] = FLAVOR_MAX
|
||||
tab_data["active_message"] = owner.vore_taste
|
||||
tab_data["set_action"] = TASTE_FLAVOR
|
||||
tab_data["tooltip"] = "What your character tastes like. This text will be printed to the pred after 'X tastes of...' so just put something like 'strawberries and cream'"
|
||||
if(aset_message_subtab == SET_SMELL)
|
||||
tab_data["max_length"] = FLAVOR_MAX
|
||||
tab_data["active_message"] = owner.vore_smell
|
||||
tab_data["set_action"] = SMELL_FLAVOR
|
||||
tab_data["tooltip"] = "What your character smells like. This text will be printed to the pred after 'X smells of...' so just put something like 'strawberries and cream'"
|
||||
if(aset_message_subtab == SET_NUTRITION_EX)
|
||||
tab_data["max_length"] = BELLIES_EXAMINE_MAX
|
||||
tab_data["active_message"] = owner.nutrition_messages
|
||||
tab_data["set_action"] = "set_attribute"
|
||||
tab_data["sub_action"] = GENERAL_EXAMINE_NUTRI
|
||||
tab_data["tooltip"] = "Change the nutrition display messages on examine."
|
||||
tab_data["button_label"] = "Display Nutrition Examine"
|
||||
tab_data["button_action"] = "toggle_nutrition_ex"
|
||||
tab_data["button_data"] = owner.nutrition_message_visible
|
||||
tab_data["button_tooltip"] = "the nutition messages on examine." // those will automatically be preceeded by Enables / Disables!
|
||||
if(aset_message_subtab == SET_WEIGHT_EX)
|
||||
tab_data["max_length"] = BELLIES_EXAMINE_MAX
|
||||
tab_data["active_message"] = owner.weight_messages
|
||||
tab_data["set_action"] = "set_attribute"
|
||||
tab_data["sub_action"] = GENERAL_EXAMINE_WEIGHT
|
||||
tab_data["tooltip"] = "Change the weight display messages on examine."
|
||||
tab_data["button_label"] = "Display Weight Examine"
|
||||
tab_data["button_action"] = "toggle_weight_ex"
|
||||
tab_data["button_data"] = owner.weight_message_visible
|
||||
tab_data["button_tooltip"] = "the weight messages on examine." // those will automatically be preceeded by Enables / Disables!
|
||||
switch(aset_message_subtab)
|
||||
if(SET_TASTE)
|
||||
tab_data["max_length"] = FLAVOR_MAX
|
||||
tab_data["active_message"] = owner.vore_taste
|
||||
tab_data["set_action"] = TASTE_FLAVOR
|
||||
tab_data["tooltip"] = "What your character tastes like. This text will be printed to the pred after 'X tastes of...' so just put something like 'strawberries and cream'"
|
||||
if(SET_SMELL)
|
||||
tab_data["max_length"] = FLAVOR_MAX
|
||||
tab_data["active_message"] = owner.vore_smell
|
||||
tab_data["set_action"] = SMELL_FLAVOR
|
||||
tab_data["tooltip"] = "What your character smells like. This text will be printed to the pred after 'X smells of...' so just put something like 'strawberries and cream'"
|
||||
if(SET_NUTRITION_EX)
|
||||
tab_data["max_length"] = BELLIES_EXAMINE_MAX
|
||||
tab_data["active_message"] = owner.nutrition_messages
|
||||
tab_data["set_action"] = "set_attribute"
|
||||
tab_data["sub_action"] = GENERAL_EXAMINE_NUTRI
|
||||
tab_data["tooltip"] = "Change the nutrition display messages on examine."
|
||||
tab_data["button_label"] = "Display Nutrition Examine"
|
||||
tab_data["button_action"] = "toggle_nutrition_ex"
|
||||
tab_data["button_data"] = owner.nutrition_message_visible
|
||||
tab_data["button_tooltip"] = "the nutition messages on examine." // those will automatically be preceeded by Enables / Disables!
|
||||
if(SET_WEIGHT_EX)
|
||||
tab_data["max_length"] = BELLIES_EXAMINE_MAX
|
||||
tab_data["active_message"] = owner.weight_messages
|
||||
tab_data["set_action"] = "set_attribute"
|
||||
tab_data["sub_action"] = GENERAL_EXAMINE_WEIGHT
|
||||
tab_data["tooltip"] = "Change the weight display messages on examine."
|
||||
tab_data["button_label"] = "Display Weight Examine"
|
||||
tab_data["button_action"] = "toggle_weight_ex"
|
||||
tab_data["button_data"] = owner.weight_message_visible
|
||||
tab_data["button_tooltip"] = "the weight messages on examine." // those will automatically be preceeded by Enables / Disables!
|
||||
return tab_data
|
||||
|
||||
#undef SET_TASTE
|
||||
|
||||
@@ -42,36 +42,37 @@
|
||||
"possible_messages" = list(INTERIOR_DESIGN, CAPTURE_MESSAGE, TRANSIT_MESSAGE, TRANSFER_MESSAGE, RELEASE_MESSAGE, DELETE_MESSAGE),
|
||||
"sc_subtab" = sc_message_subtab
|
||||
)
|
||||
if(sc_message_subtab == INTERIOR_DESIGN)
|
||||
tab_data["max_length"] = VORE_SC_DESC_MAX
|
||||
tab_data["active_message"] = gem.inside_flavor
|
||||
tab_data["set_action"] = SC_INTERIOR_MESSAGE
|
||||
tab_data["tooltip"] = "Displayed to prey after being 'caught' by the soulcatcher. This will be displayed after an intro set in the capture message. If you already have prey and change the interior, this will be displayed after the transit message."
|
||||
if(sc_message_subtab == CAPTURE_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.capture_message
|
||||
tab_data["set_action"] = SC_CAPTURE_MEESAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees while being 'caught'. This will be printed before the iterior design to the prey."
|
||||
if(sc_message_subtab == TRANSIT_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.transit_message
|
||||
tab_data["set_action"] = SC_TRANSIT_MESSAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees when you change the interior with them already captured."
|
||||
if(sc_message_subtab == TRANSFER_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.transfer_message
|
||||
tab_data["set_action"] = SC_TRANSFERE_MESSAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees when they are transfered."
|
||||
if(sc_message_subtab == RELEASE_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.release_message
|
||||
tab_data["set_action"] = SC_RELEASE_MESSAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees when they are released."
|
||||
if(sc_message_subtab == DELETE_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.delete_message
|
||||
tab_data["set_action"] = SC_DELETE_MESSAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees when they are deleted."
|
||||
switch(sc_message_subtab)
|
||||
if(INTERIOR_DESIGN)
|
||||
tab_data["max_length"] = VORE_SC_DESC_MAX
|
||||
tab_data["active_message"] = gem.inside_flavor
|
||||
tab_data["set_action"] = SC_INTERIOR_MESSAGE
|
||||
tab_data["tooltip"] = "Displayed to prey after being 'caught' by the soulcatcher. This will be displayed after an intro set in the capture message. If you already have prey and change the interior, this will be displayed after the transit message."
|
||||
if(CAPTURE_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.capture_message
|
||||
tab_data["set_action"] = SC_CAPTURE_MEESAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees while being 'caught'. This will be printed before the iterior design to the prey."
|
||||
if(TRANSIT_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.transit_message
|
||||
tab_data["set_action"] = SC_TRANSIT_MESSAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees when you change the interior with them already captured."
|
||||
if(TRANSFER_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.transfer_message
|
||||
tab_data["set_action"] = SC_TRANSFERE_MESSAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees when they are transfered."
|
||||
if(RELEASE_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.release_message
|
||||
tab_data["set_action"] = SC_RELEASE_MESSAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees when they are released."
|
||||
if(DELETE_MESSAGE)
|
||||
tab_data["max_length"] = VORE_SC_MAX
|
||||
tab_data["active_message"] = gem.delete_message
|
||||
tab_data["set_action"] = SC_DELETE_MESSAGE
|
||||
tab_data["tooltip"] = "Change what the prey sees when they are deleted."
|
||||
return tab_data
|
||||
|
||||
/datum/vore_look/proc/get_ability_data(mob/owner)
|
||||
|
||||
@@ -108,191 +108,192 @@
|
||||
"belly_name" = selected.name,
|
||||
"display_name" = selected.display_name
|
||||
)
|
||||
if(active_vore_tab == CONTROL_TAB)
|
||||
var/list/addons = list()
|
||||
for(var/flag_name in selected.mode_flag_list)
|
||||
UNTYPED_LIST_ADD(addons, list("label" = flag_name, "selection" = selected.mode_flags & selected.mode_flag_list[flag_name]))
|
||||
var/list/belly_mode_data = list(
|
||||
"mode" = selected.digest_mode,
|
||||
"item_mode" = selected.item_digest_mode,
|
||||
"addons" = addons,
|
||||
"name_length" = BELLIES_NAME_MAX,
|
||||
"name_min" = BELLIES_NAME_MIN,
|
||||
"mode_options" = selected.digest_modes,
|
||||
"item_mode_options" = selected.item_digest_modes,
|
||||
switch(active_vore_tab)
|
||||
if(CONTROL_TAB)
|
||||
var/list/addons = list()
|
||||
for(var/flag_name in selected.mode_flag_list)
|
||||
UNTYPED_LIST_ADD(addons, list("label" = flag_name, "selection" = selected.mode_flags & selected.mode_flag_list[flag_name]))
|
||||
var/list/belly_mode_data = list(
|
||||
"mode" = selected.digest_mode,
|
||||
"item_mode" = selected.item_digest_mode,
|
||||
"addons" = addons,
|
||||
"name_length" = BELLIES_NAME_MAX,
|
||||
"name_min" = BELLIES_NAME_MIN,
|
||||
"mode_options" = selected.digest_modes,
|
||||
"item_mode_options" = selected.item_digest_modes,
|
||||
|
||||
)
|
||||
selected_list["belly_mode_data"] = belly_mode_data
|
||||
|
||||
if(active_vore_tab == DESCRIPTIONS_TAB)
|
||||
// Compile our displayed options
|
||||
var/list/displayed_options = list(
|
||||
VPANEL_DESCRIPTION_TAB,
|
||||
VPANEL_EXAMINE_TAB,
|
||||
VPANEL_TRASH_EATER_TAB
|
||||
)
|
||||
if(selected.message_mode || selected.escapable)
|
||||
displayed_options += VPANEL_STRUGGLE_TAB
|
||||
displayed_options += VPANEL_ESCAPE_TAB
|
||||
displayed_options += VPANEL_ESCAPE_ABSORBED_TAB
|
||||
if(selected.message_mode || (selected.escapable && (selected.transferlocation || selected.transferlocation_secondary)) || selected.autotransfer_enabled && (selected.autotransferlocation || selected.autotransferlocation_secondary))
|
||||
displayed_options += VPANEL_TRANSFER_TAB
|
||||
if(selected.message_mode || selected.escapable && (selected.digestchance || selected.absorbchance))
|
||||
displayed_options += VPANEL_INTERACTION_TAB
|
||||
if(selected.message_mode || selected.digest_mode == DM_DIGEST || selected.digest_mode == DM_SELECT || selected.digest_mode == DM_ABSORB || selected.digest_mode == DM_UNABSORB)
|
||||
displayed_options += VPANEL_BELLYMODE_TAB
|
||||
if(selected.message_mode || selected.emote_active)
|
||||
displayed_options += VPANEL_IDLE_TAB
|
||||
if(selected.message_mode || selected.show_fullness_messages)
|
||||
displayed_options += VPANEL_LIQUIDS_TAB
|
||||
|
||||
var/list/belly_description_data = list(
|
||||
"displayed_message_types" = compile_message_data(selected),
|
||||
"verb" = selected.vore_verb,
|
||||
"release_verb" = selected.release_verb,
|
||||
"message_mode" = selected.message_mode,
|
||||
"displayed_options" = displayed_options,
|
||||
"message_option" = message_option,
|
||||
"message_subtab" = message_subtab,
|
||||
"selected_message" = selected_message,
|
||||
"show_liq_fullness" = selected.show_fullness_messages,
|
||||
"emote_time" = selected.emote_time,
|
||||
"emote_active" = selected.emote_active,
|
||||
"entrance_logs" = selected.entrance_logs,
|
||||
"item_digest_logs" = selected.item_digest_logs,
|
||||
"name_min" = BELLIES_NAME_MIN,
|
||||
"name_length" = BELLIES_NAME_MAX,
|
||||
)
|
||||
selected_list["belly_description_data"] = belly_description_data
|
||||
|
||||
if(active_vore_tab == OPTIONS_TAB)
|
||||
var/list/belly_option_data = list(
|
||||
"can_taste" = selected.can_taste,
|
||||
"is_feedable" = selected.is_feedable,
|
||||
"nutrition_percent" = selected.nutrition_percent,
|
||||
"digest_brute" = selected.digest_brute,
|
||||
"digest_burn" = selected.digest_burn,
|
||||
"digest_oxy" = selected.digest_oxy,
|
||||
"digest_tox" = selected.digest_tox,
|
||||
"digest_clone" = selected.digest_clone,
|
||||
"digest_max" = selected.digest_max,
|
||||
"digest_free" = selected.get_unused_digestion_damage(),
|
||||
"bellytemperature" = selected.bellytemperature,
|
||||
"temperature_damage" = selected.temperature_damage,
|
||||
"bulge_size" = selected.bulge_size,
|
||||
"shrink_grow_size" = selected.shrink_grow_size,
|
||||
"contaminates" = selected.contaminates,
|
||||
"egg_type" = selected.egg_type,
|
||||
"egg_types" = GLOB.global_vore_egg_types,
|
||||
"egg_name" = selected.egg_name,
|
||||
"egg_name_length" = BELLIES_NAME_MAX,
|
||||
"egg_size" = selected.egg_size,
|
||||
"recycling" = selected.recycling,
|
||||
"storing_nutrition" = selected.storing_nutrition,
|
||||
"selective_preference" = selected.selective_preference,
|
||||
"save_digest_mode" = selected.save_digest_mode,
|
||||
"eating_privacy_local" = selected.eating_privacy_local,
|
||||
"vorespawn_blacklist" = selected.vorespawn_blacklist,
|
||||
"vorespawn_whitelist" = selected.vorespawn_whitelist,
|
||||
"vorespawn_absorbed" = (global_flag_check(selected.vorespawn_absorbed, VS_FLAG_ABSORB_YES) + global_flag_check(selected.vorespawn_absorbed, VS_FLAG_ABSORB_PREY)),
|
||||
"private_struggle" = selected.private_struggle,
|
||||
"absorbedrename_enabled" = selected.absorbedrename_enabled,
|
||||
"absorbedrename_name" = selected.absorbedrename_name,
|
||||
"absorbedrename_name_max" = BELLIES_NAME_MAX,
|
||||
"absorbedrename_name_min" = BELLIES_NAME_MIN,
|
||||
"drainmode" = selected.drainmode,
|
||||
"drainmode_options" = selected.drainmodes,
|
||||
)
|
||||
if(selected.contaminates)
|
||||
belly_option_data += list(
|
||||
"contaminate_flavor" = selected.contamination_flavor,
|
||||
"contaminate_options" = GLOB.contamination_flavors,
|
||||
"contaminate_color" = selected.contamination_color,
|
||||
"contaminate_colors" = GLOB.contamination_colors
|
||||
)
|
||||
selected_list["belly_mode_data"] = belly_mode_data
|
||||
|
||||
selected_list["belly_option_data"] = belly_option_data
|
||||
if(DESCRIPTIONS_TAB)
|
||||
// Compile our displayed options
|
||||
var/list/displayed_options = list(
|
||||
VPANEL_DESCRIPTION_TAB,
|
||||
VPANEL_EXAMINE_TAB,
|
||||
VPANEL_TRASH_EATER_TAB
|
||||
)
|
||||
if(selected.message_mode || selected.escapable)
|
||||
displayed_options += VPANEL_STRUGGLE_TAB
|
||||
displayed_options += VPANEL_ESCAPE_TAB
|
||||
displayed_options += VPANEL_ESCAPE_ABSORBED_TAB
|
||||
if(selected.message_mode || (selected.escapable && (selected.transferlocation || selected.transferlocation_secondary)) || selected.autotransfer_enabled && (selected.autotransferlocation || selected.autotransferlocation_secondary))
|
||||
displayed_options += VPANEL_TRANSFER_TAB
|
||||
if(selected.message_mode || selected.escapable && (selected.digestchance || selected.absorbchance))
|
||||
displayed_options += VPANEL_INTERACTION_TAB
|
||||
if(selected.message_mode || selected.digest_mode == DM_DIGEST || selected.digest_mode == DM_SELECT || selected.digest_mode == DM_ABSORB || selected.digest_mode == DM_UNABSORB)
|
||||
displayed_options += VPANEL_BELLYMODE_TAB
|
||||
if(selected.message_mode || selected.emote_active)
|
||||
displayed_options += VPANEL_IDLE_TAB
|
||||
if(selected.message_mode || selected.show_fullness_messages)
|
||||
displayed_options += VPANEL_LIQUIDS_TAB
|
||||
|
||||
if(active_vore_tab == SOUNDS_TAB)
|
||||
var/list/belly_sound_data = list(
|
||||
"is_wet" = selected.is_wet,
|
||||
"wet_loop" = selected.wet_loop,
|
||||
"fancy" = selected.fancy_vore,
|
||||
"sound" = selected.vore_sound,
|
||||
"release_sound" = selected.release_sound,
|
||||
"sound_volume" = selected.sound_volume,
|
||||
"noise_freq" = selected.noise_freq,
|
||||
"min_voice_freq" = MIN_VOICE_FREQ,
|
||||
"max_voice_freq" = MAX_VOICE_FREQ,
|
||||
"vore_sound_list" = (selected.fancy_vore ? GLOB.fancy_vore_sounds : GLOB.classic_vore_sounds),
|
||||
"release_sound_list" = (selected.fancy_vore ? GLOB.fancy_release_sounds : GLOB.classic_release_sounds)
|
||||
)
|
||||
selected_list["belly_sound_data"] = belly_sound_data
|
||||
var/list/belly_description_data = list(
|
||||
"displayed_message_types" = compile_message_data(selected),
|
||||
"verb" = selected.vore_verb,
|
||||
"release_verb" = selected.release_verb,
|
||||
"message_mode" = selected.message_mode,
|
||||
"displayed_options" = displayed_options,
|
||||
"message_option" = message_option,
|
||||
"message_subtab" = message_subtab,
|
||||
"selected_message" = selected_message,
|
||||
"show_liq_fullness" = selected.show_fullness_messages,
|
||||
"emote_time" = selected.emote_time,
|
||||
"emote_active" = selected.emote_active,
|
||||
"entrance_logs" = selected.entrance_logs,
|
||||
"item_digest_logs" = selected.item_digest_logs,
|
||||
"name_min" = BELLIES_NAME_MIN,
|
||||
"name_length" = BELLIES_NAME_MAX,
|
||||
)
|
||||
selected_list["belly_description_data"] = belly_description_data
|
||||
|
||||
if(active_vore_tab == VISUALS_TAB)
|
||||
var/list/silicon_control = list(
|
||||
"silicon_belly_overlay_preference" = selected.silicon_belly_overlay_preference,
|
||||
"belly_sprite_option_shown" = LAZYLEN(owner.vore_icon_bellies) >= 1 ? TRUE : FALSE,
|
||||
"belly_sprite_to_affect" = selected.belly_sprite_to_affect
|
||||
)
|
||||
var/list/belly_fullscreens
|
||||
if(selected.colorization_enabled)
|
||||
belly_fullscreens = cached_icon_states('icons/mob/screen_full_vore_list.dmi') //Makes any icons inside of here selectable.
|
||||
else
|
||||
belly_fullscreens = cached_icon_states('icons/mob/screen_full_vore.dmi') //Non colorable
|
||||
if(OPTIONS_TAB)
|
||||
var/list/belly_option_data = list(
|
||||
"can_taste" = selected.can_taste,
|
||||
"is_feedable" = selected.is_feedable,
|
||||
"nutrition_percent" = selected.nutrition_percent,
|
||||
"digest_brute" = selected.digest_brute,
|
||||
"digest_burn" = selected.digest_burn,
|
||||
"digest_oxy" = selected.digest_oxy,
|
||||
"digest_tox" = selected.digest_tox,
|
||||
"digest_clone" = selected.digest_clone,
|
||||
"digest_max" = selected.digest_max,
|
||||
"digest_free" = selected.get_unused_digestion_damage(),
|
||||
"bellytemperature" = selected.bellytemperature,
|
||||
"temperature_damage" = selected.temperature_damage,
|
||||
"bulge_size" = selected.bulge_size,
|
||||
"shrink_grow_size" = selected.shrink_grow_size,
|
||||
"contaminates" = selected.contaminates,
|
||||
"egg_type" = selected.egg_type,
|
||||
"egg_types" = GLOB.global_vore_egg_types,
|
||||
"egg_name" = selected.egg_name,
|
||||
"egg_name_length" = BELLIES_NAME_MAX,
|
||||
"egg_size" = selected.egg_size,
|
||||
"recycling" = selected.recycling,
|
||||
"storing_nutrition" = selected.storing_nutrition,
|
||||
"selective_preference" = selected.selective_preference,
|
||||
"save_digest_mode" = selected.save_digest_mode,
|
||||
"eating_privacy_local" = selected.eating_privacy_local,
|
||||
"vorespawn_blacklist" = selected.vorespawn_blacklist,
|
||||
"vorespawn_whitelist" = selected.vorespawn_whitelist,
|
||||
"vorespawn_absorbed" = (global_flag_check(selected.vorespawn_absorbed, VS_FLAG_ABSORB_YES) + global_flag_check(selected.vorespawn_absorbed, VS_FLAG_ABSORB_PREY)),
|
||||
"private_struggle" = selected.private_struggle,
|
||||
"absorbedrename_enabled" = selected.absorbedrename_enabled,
|
||||
"absorbedrename_name" = selected.absorbedrename_name,
|
||||
"absorbedrename_name_max" = BELLIES_NAME_MAX,
|
||||
"absorbedrename_name_min" = BELLIES_NAME_MIN,
|
||||
"drainmode" = selected.drainmode,
|
||||
"drainmode_options" = selected.drainmodes,
|
||||
)
|
||||
if(selected.contaminates)
|
||||
belly_option_data += list(
|
||||
"contaminate_flavor" = selected.contamination_flavor,
|
||||
"contaminate_options" = GLOB.contamination_flavors,
|
||||
"contaminate_color" = selected.contamination_color,
|
||||
"contaminate_colors" = GLOB.contamination_colors
|
||||
)
|
||||
|
||||
var/list/vs_flags = list()
|
||||
for(var/flag_name in selected.vore_sprite_flag_list)
|
||||
UNTYPED_LIST_ADD(vs_flags, list("label" = flag_name, "selection" = selected.vore_sprite_flags & selected.vore_sprite_flag_list[flag_name]))
|
||||
selected_list["belly_option_data"] = belly_option_data
|
||||
|
||||
var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[host.vore_selected.undergarment_chosen]
|
||||
var/list/undergarments
|
||||
if(UWC)
|
||||
undergarments = UWC.items
|
||||
if(SOUNDS_TAB)
|
||||
var/list/belly_sound_data = list(
|
||||
"is_wet" = selected.is_wet,
|
||||
"wet_loop" = selected.wet_loop,
|
||||
"fancy" = selected.fancy_vore,
|
||||
"sound" = selected.vore_sound,
|
||||
"release_sound" = selected.release_sound,
|
||||
"sound_volume" = selected.sound_volume,
|
||||
"noise_freq" = selected.noise_freq,
|
||||
"min_voice_freq" = MIN_VOICE_FREQ,
|
||||
"max_voice_freq" = MAX_VOICE_FREQ,
|
||||
"vore_sound_list" = (selected.fancy_vore ? GLOB.fancy_vore_sounds : GLOB.classic_vore_sounds),
|
||||
"release_sound_list" = (selected.fancy_vore ? GLOB.fancy_release_sounds : GLOB.classic_release_sounds)
|
||||
)
|
||||
selected_list["belly_sound_data"] = belly_sound_data
|
||||
|
||||
var/list/belly_visual_data = list(
|
||||
"belly_fullscreen" = selected.belly_fullscreen,
|
||||
"colorization_enabled" = selected.colorization_enabled,
|
||||
"belly_fullscreen_color" = selected.belly_fullscreen_color,
|
||||
"belly_fullscreen_color2" = selected.belly_fullscreen_color2,
|
||||
"belly_fullscreen_color3" = selected.belly_fullscreen_color3,
|
||||
"belly_fullscreen_color4" = selected.belly_fullscreen_color4,
|
||||
"belly_fullscreen_alpha" = selected.belly_fullscreen_alpha,
|
||||
"possible_fullscreens" = belly_fullscreens,
|
||||
"disable_hud" = selected.disable_hud,
|
||||
"vore_sprite_flags" = vs_flags,
|
||||
"affects_voresprite" = selected.affects_vore_sprites,
|
||||
"absorbed_voresprite" = selected.count_absorbed_prey_for_sprite,
|
||||
"absorbed_multiplier" = selected.absorbed_multiplier,
|
||||
"liquid_voresprite" = selected.count_liquid_for_sprite,
|
||||
"liquid_multiplier" = selected.liquid_multiplier,
|
||||
"item_voresprite" = selected.count_items_for_sprite,
|
||||
"item_multiplier" = selected.item_multiplier,
|
||||
"health_voresprite" = selected.health_impacts_size,
|
||||
"resist_animation" = selected.resist_triggers_animation,
|
||||
"voresprite_size_factor" = selected.size_factor_for_sprite,
|
||||
"belly_sprite_to_affect" = selected.belly_sprite_to_affect,
|
||||
"belly_sprite_options" = host.vore_icon_bellies,
|
||||
"undergarment_chosen" = selected.undergarment_chosen,
|
||||
"undergarment_if_none" = selected.undergarment_if_none || "None",
|
||||
"undergarment_options" = global_underwear.categories,
|
||||
"undergarment_options_if_none" = undergarments,
|
||||
"undergarment_color" = selected.undergarment_color,
|
||||
"tail_option_shown" = ishuman(owner),
|
||||
"tail_to_change_to" = selected.tail_to_change_to,
|
||||
"tail_sprite_options" = GLOB.tail_styles_list,
|
||||
"mob_belly_controls" = silicon_control
|
||||
)
|
||||
selected_list["belly_visual_data"] = belly_visual_data
|
||||
if(VISUALS_TAB)
|
||||
var/list/silicon_control = list(
|
||||
"silicon_belly_overlay_preference" = selected.silicon_belly_overlay_preference,
|
||||
"belly_sprite_option_shown" = LAZYLEN(owner.vore_icon_bellies) >= 1 ? TRUE : FALSE,
|
||||
"belly_sprite_to_affect" = selected.belly_sprite_to_affect
|
||||
)
|
||||
var/list/belly_fullscreens
|
||||
if(selected.colorization_enabled)
|
||||
belly_fullscreens = cached_icon_states('icons/mob/screen_full_vore_list.dmi') //Makes any icons inside of here selectable.
|
||||
else
|
||||
belly_fullscreens = cached_icon_states('icons/mob/screen_full_vore.dmi') //Non colorable
|
||||
|
||||
if(active_vore_tab == INTERACTIONS_TAB)
|
||||
var/list/belly_interaction_data = list(
|
||||
"escapable" = selected.escapable,
|
||||
"interacts" = compile_interact_data(selected),
|
||||
"autotransfer_enabled" = selected.autotransfer_enabled,
|
||||
"autotransfer" = compile_autotransfer_data(selected)
|
||||
)
|
||||
selected_list["belly_interaction_data"] = belly_interaction_data
|
||||
var/list/vs_flags = list()
|
||||
for(var/flag_name in selected.vore_sprite_flag_list)
|
||||
UNTYPED_LIST_ADD(vs_flags, list("label" = flag_name, "selection" = selected.vore_sprite_flags & selected.vore_sprite_flag_list[flag_name]))
|
||||
|
||||
var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[host.vore_selected.undergarment_chosen]
|
||||
var/list/undergarments
|
||||
if(UWC)
|
||||
undergarments = UWC.items
|
||||
|
||||
var/list/belly_visual_data = list(
|
||||
"belly_fullscreen" = selected.belly_fullscreen,
|
||||
"colorization_enabled" = selected.colorization_enabled,
|
||||
"belly_fullscreen_color" = selected.belly_fullscreen_color,
|
||||
"belly_fullscreen_color2" = selected.belly_fullscreen_color2,
|
||||
"belly_fullscreen_color3" = selected.belly_fullscreen_color3,
|
||||
"belly_fullscreen_color4" = selected.belly_fullscreen_color4,
|
||||
"belly_fullscreen_alpha" = selected.belly_fullscreen_alpha,
|
||||
"possible_fullscreens" = belly_fullscreens,
|
||||
"disable_hud" = selected.disable_hud,
|
||||
"vore_sprite_flags" = vs_flags,
|
||||
"affects_voresprite" = selected.affects_vore_sprites,
|
||||
"absorbed_voresprite" = selected.count_absorbed_prey_for_sprite,
|
||||
"absorbed_multiplier" = selected.absorbed_multiplier,
|
||||
"liquid_voresprite" = selected.count_liquid_for_sprite,
|
||||
"liquid_multiplier" = selected.liquid_multiplier,
|
||||
"item_voresprite" = selected.count_items_for_sprite,
|
||||
"item_multiplier" = selected.item_multiplier,
|
||||
"health_voresprite" = selected.health_impacts_size,
|
||||
"resist_animation" = selected.resist_triggers_animation,
|
||||
"voresprite_size_factor" = selected.size_factor_for_sprite,
|
||||
"belly_sprite_to_affect" = selected.belly_sprite_to_affect,
|
||||
"belly_sprite_options" = host.vore_icon_bellies,
|
||||
"undergarment_chosen" = selected.undergarment_chosen,
|
||||
"undergarment_if_none" = selected.undergarment_if_none || "None",
|
||||
"undergarment_options" = global_underwear.categories,
|
||||
"undergarment_options_if_none" = undergarments,
|
||||
"undergarment_color" = selected.undergarment_color,
|
||||
"tail_option_shown" = ishuman(owner),
|
||||
"tail_to_change_to" = selected.tail_to_change_to,
|
||||
"tail_sprite_options" = GLOB.tail_styles_list,
|
||||
"mob_belly_controls" = silicon_control
|
||||
)
|
||||
selected_list["belly_visual_data"] = belly_visual_data
|
||||
|
||||
if(INTERACTIONS_TAB)
|
||||
var/list/belly_interaction_data = list(
|
||||
"escapable" = selected.escapable,
|
||||
"interacts" = compile_interact_data(selected),
|
||||
"autotransfer_enabled" = selected.autotransfer_enabled,
|
||||
"autotransfer" = compile_autotransfer_data(selected)
|
||||
)
|
||||
selected_list["belly_interaction_data"] = belly_interaction_data
|
||||
|
||||
|
||||
var/list/selected_contents
|
||||
@@ -337,18 +338,19 @@
|
||||
if(M.absorbed)
|
||||
info["absorbed"] = TRUE
|
||||
LAZYADD(selected_contents, list(info))
|
||||
if(active_vore_tab == CONTENTS_TAB)
|
||||
selected_list["contents"] = selected_contents
|
||||
|
||||
selected_list["content_length"] = total_content_count
|
||||
switch(active_vore_tab)
|
||||
if(CONTENTS_TAB)
|
||||
selected_list["contents"] = selected_contents
|
||||
|
||||
if(active_vore_tab == LIQUID_OPTIONS_TAB)
|
||||
// liquid belly options
|
||||
var/list/belly_liquid_data = list(
|
||||
"show_liq" = selected.show_liquids,
|
||||
"liq_interacts" = compile_liquid_interact_data(selected)
|
||||
)
|
||||
selected_list["belly_liquid_data"] = belly_liquid_data
|
||||
if(LIQUID_OPTIONS_TAB)
|
||||
// liquid belly options
|
||||
var/list/belly_liquid_data = list(
|
||||
"show_liq" = selected.show_liquids,
|
||||
"liq_interacts" = compile_liquid_interact_data(selected)
|
||||
)
|
||||
selected_list["belly_liquid_data"] = belly_liquid_data
|
||||
|
||||
return selected_list
|
||||
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
|
||||
#define STATION_PREF_NAME "Chomp" // CHOMPEdit
|
||||
#define VORE_BELLY_TAB 0
|
||||
#define SOULCATCHER_TAB 1
|
||||
#define GENERAL_TAB 2
|
||||
#define PREFERENCE_TAB 3
|
||||
#define VORE_INSIDE_TAB 1
|
||||
#define SOULCATCHER_TAB 2
|
||||
#define GENERAL_TAB 3
|
||||
#define PREFERENCE_TAB 4
|
||||
|
||||
/mob
|
||||
var/datum/vore_look/vorePanel
|
||||
@@ -144,36 +145,42 @@
|
||||
data["prefs"] = null
|
||||
data["general_pref_data"] = null
|
||||
|
||||
if(active_tab == VORE_BELLY_TAB)
|
||||
data["active_vore_tab"] = active_vore_tab
|
||||
data["host_mobtype"] = get_host_mobtype(host)
|
||||
switch(active_tab)
|
||||
if(VORE_BELLY_TAB)
|
||||
data["active_vore_tab"] = active_vore_tab
|
||||
data["host_mobtype"] = get_host_mobtype(host)
|
||||
|
||||
// Content Data
|
||||
data["show_pictures"] = show_pictures
|
||||
data["icon_overflow"] = icon_overflow
|
||||
// Content Data
|
||||
data["show_pictures"] = show_pictures
|
||||
data["icon_overflow"] = icon_overflow
|
||||
|
||||
// List of all our bellies
|
||||
data["our_bellies"] = get_vorebellies(host)
|
||||
// List of all our bellies
|
||||
data["our_bellies"] = get_vorebellies(host)
|
||||
|
||||
// Selected belly data. TODO, split this into sub data per tab, we don't need all of this at once, ever!
|
||||
data["selected"] = get_selected_data(host)
|
||||
// Selected belly data. TODO, split this into sub data per tab, we don't need all of this at once, ever!
|
||||
data["selected"] = get_selected_data(host)
|
||||
|
||||
if(active_tab == SOULCATCHER_TAB)
|
||||
// Soulcatcher and abilities
|
||||
data["our_bellies"] = get_vorebellies(host, FALSE)
|
||||
data["soulcatcher"] = get_soulcatcher_data(host)
|
||||
data["abilities"] = get_ability_data(host)
|
||||
if(VORE_INSIDE_TAB)
|
||||
// Content Data
|
||||
data["show_pictures"] = show_pictures
|
||||
data["icon_overflow"] = icon_overflow
|
||||
|
||||
if(active_tab == PREFERENCE_TAB)
|
||||
// Preference data, we only ever need that when we go to the pref page!
|
||||
data["prefs"] = get_preference_data(host)
|
||||
// Content Data
|
||||
data["show_pictures"] = show_pictures
|
||||
data["icon_overflow"] = icon_overflow
|
||||
if(SOULCATCHER_TAB)
|
||||
// Soulcatcher and abilities
|
||||
data["our_bellies"] = get_vorebellies(host, FALSE)
|
||||
data["soulcatcher"] = get_soulcatcher_data(host)
|
||||
data["abilities"] = get_ability_data(host)
|
||||
|
||||
if(active_tab == GENERAL_TAB)
|
||||
data["general_pref_data"] = get_general_data(host)
|
||||
data["our_bellies"] = get_vorebellies(host, FALSE)
|
||||
if(PREFERENCE_TAB)
|
||||
// Preference data, we only ever need that when we go to the pref page!
|
||||
data["prefs"] = get_preference_data(host)
|
||||
// Content Data
|
||||
data["show_pictures"] = show_pictures
|
||||
data["icon_overflow"] = icon_overflow
|
||||
|
||||
if(GENERAL_TAB)
|
||||
data["general_pref_data"] = get_general_data(host)
|
||||
data["our_bellies"] = get_vorebellies(host, FALSE)
|
||||
|
||||
return data
|
||||
|
||||
@@ -1339,6 +1346,7 @@
|
||||
|
||||
#undef STATION_PREF_NAME
|
||||
#undef VORE_BELLY_TAB
|
||||
#undef VORE_INSIDE_TAB
|
||||
#undef SOULCATCHER_TAB
|
||||
#undef PREFERENCE_TAB
|
||||
#undef GENERAL_TAB
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
import { Box, Collapsible, Section } from 'tgui-core/components';
|
||||
import type { BooleanLike } from 'tgui-core/react';
|
||||
import { Box, Section, Stack } from 'tgui-core/components';
|
||||
import {
|
||||
digestModeToColor,
|
||||
digestModeToPreyMode,
|
||||
reagentToColor,
|
||||
} from '../constants';
|
||||
import type { insideData } from '../types';
|
||||
import { VoreContentsPanel } from '../VoreSelectedBellyTabs/VoreContentsPanel';
|
||||
|
||||
export const VoreInsidePanel = (props: {
|
||||
inside: insideData;
|
||||
show_pictures: BooleanLike;
|
||||
icon_overflow: BooleanLike;
|
||||
}) => {
|
||||
const { inside, show_pictures, icon_overflow } = props;
|
||||
export const VoreInsidePanel = (props: { inside: insideData }) => {
|
||||
const { inside } = props;
|
||||
|
||||
const {
|
||||
absorbed,
|
||||
@@ -21,64 +15,60 @@ export const VoreInsidePanel = (props: {
|
||||
belly_mode,
|
||||
desc,
|
||||
pred,
|
||||
contents,
|
||||
ref,
|
||||
liq_lvl,
|
||||
liq_reagent_type,
|
||||
liuq_name,
|
||||
} = inside;
|
||||
|
||||
if (!belly_name) {
|
||||
return <Section title="Inside">You aren't inside anyone.</Section>;
|
||||
return (
|
||||
<Section fill title="Inside">
|
||||
You aren't inside anyone.
|
||||
</Section>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Section title="Inside" fill scrollable>
|
||||
<Box color="green" inline>
|
||||
You are currently {absorbed ? 'absorbed into' : 'inside'}
|
||||
</Box>
|
||||
|
||||
<Box color="yellow" inline>
|
||||
{pred}'s
|
||||
</Box>
|
||||
|
||||
<Box color="red" inline>
|
||||
{belly_name}
|
||||
</Box>
|
||||
{!!liq_lvl && liq_lvl > 0 && (
|
||||
<>
|
||||
,
|
||||
<Box color="yellow" inline>
|
||||
bathing in a pool of
|
||||
<Stack vertical fill>
|
||||
<Stack.Item>
|
||||
<Box color="green" inline>
|
||||
You are currently {absorbed ? 'absorbed into' : 'inside'}
|
||||
</Box>
|
||||
|
||||
<Box color={reagentToColor[liq_reagent_type!]} inline>
|
||||
{liuq_name}
|
||||
<Box color="yellow" inline>
|
||||
{pred}'s
|
||||
</Box>
|
||||
</>
|
||||
)}
|
||||
|
||||
<Box color="yellow" inline>
|
||||
and you are
|
||||
</Box>
|
||||
|
||||
<Box color={digestModeToColor[belly_mode!]} inline>
|
||||
{digestModeToPreyMode[belly_mode!]}
|
||||
</Box>
|
||||
|
||||
<Box color="label">{desc}</Box>
|
||||
{contents?.length ? (
|
||||
<Collapsible title="Belly Contents">
|
||||
<VoreContentsPanel
|
||||
contents={contents}
|
||||
belly={ref}
|
||||
show_pictures={show_pictures}
|
||||
icon_overflow={icon_overflow}
|
||||
/>
|
||||
</Collapsible>
|
||||
) : (
|
||||
'There is nothing else around you.'
|
||||
)}
|
||||
|
||||
<Box color="red" inline>
|
||||
{belly_name}
|
||||
</Box>
|
||||
{!!liq_lvl && liq_lvl > 0 && (
|
||||
<>
|
||||
,
|
||||
<Box color="yellow" inline>
|
||||
bathing in a pool of
|
||||
</Box>
|
||||
|
||||
<Box color={reagentToColor[liq_reagent_type!]} inline>
|
||||
{liuq_name}
|
||||
</Box>
|
||||
</>
|
||||
)}
|
||||
|
||||
<Box color="yellow" inline>
|
||||
and you are
|
||||
</Box>
|
||||
|
||||
<Box color={digestModeToColor[belly_mode!]} inline>
|
||||
{digestModeToPreyMode[belly_mode!]}
|
||||
</Box>
|
||||
|
||||
<Stack.Item>
|
||||
<Box color="label">{desc}</Box>
|
||||
</Stack.Item>
|
||||
</Stack.Item>
|
||||
</Stack>
|
||||
</Section>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
import { useState } from 'react';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useBackend } from 'tgui/backend';
|
||||
import { Window } from 'tgui/layouts';
|
||||
import { Button, Icon, NoticeBox, Stack, Tabs } from 'tgui-core/components';
|
||||
import {
|
||||
Box,
|
||||
Button,
|
||||
Icon,
|
||||
NoticeBox,
|
||||
Section,
|
||||
Stack,
|
||||
Tabs,
|
||||
} from 'tgui-core/components';
|
||||
|
||||
import type { Data } from './types';
|
||||
import { VoreBellySelectionAndCustomization } from './VorePanelMainTabs/VoreBellySelectionAndCustomization';
|
||||
@@ -9,6 +17,7 @@ import { VoreInsidePanel } from './VorePanelMainTabs/VoreInsidePanel';
|
||||
import { VoreSoulcatcher } from './VorePanelMainTabs/VoreSoulcatcher';
|
||||
import { VoreUserGeneral } from './VorePanelMainTabs/VoreUserGeneral';
|
||||
import { VoreUserPreferences } from './VorePanelMainTabs/VoreUserPreferences';
|
||||
import { VoreContentsPanel } from './VoreSelectedBellyTabs/VoreContentsPanel';
|
||||
|
||||
/**
|
||||
* There are three main sections to this UI.
|
||||
@@ -43,6 +52,12 @@ export const VorePanel = () => {
|
||||
|
||||
const [editMode, setEditMode] = useState(!!persist_edit_mode);
|
||||
|
||||
useEffect(() => {
|
||||
if (active_tab === 1 && !inside?.ref) {
|
||||
act('change_tab', { tab: 0 });
|
||||
}
|
||||
}, [inside?.ref]);
|
||||
|
||||
const tabs: (React.JSX.Element | null | undefined)[] = [];
|
||||
|
||||
tabs[0] = our_bellies && selected && host_mobtype && (
|
||||
@@ -61,7 +76,19 @@ export const VorePanel = () => {
|
||||
maxBellyName={max_belly_name}
|
||||
/>
|
||||
);
|
||||
tabs[1] = our_bellies && soulcatcher && abilities && (
|
||||
tabs[1] = inside.contents?.length ? (
|
||||
<VoreContentsPanel
|
||||
contents={inside.contents}
|
||||
belly={inside.ref}
|
||||
show_pictures={show_pictures}
|
||||
icon_overflow={icon_overflow}
|
||||
/>
|
||||
) : (
|
||||
<Section fill>
|
||||
<Box>There is nothing else around you.</Box>
|
||||
</Section>
|
||||
);
|
||||
tabs[2] = our_bellies && soulcatcher && abilities && (
|
||||
<VoreSoulcatcher
|
||||
our_bellies={our_bellies}
|
||||
soulcatcher={soulcatcher}
|
||||
@@ -71,7 +98,7 @@ export const VorePanel = () => {
|
||||
persist_edit_mode={persist_edit_mode}
|
||||
/>
|
||||
);
|
||||
tabs[2] = general_pref_data && our_bellies && (
|
||||
tabs[3] = general_pref_data && our_bellies && (
|
||||
<VoreUserGeneral
|
||||
general_pref_data={general_pref_data}
|
||||
our_bellies={our_bellies}
|
||||
@@ -80,7 +107,7 @@ export const VorePanel = () => {
|
||||
persist_edit_mode={persist_edit_mode}
|
||||
/>
|
||||
);
|
||||
tabs[3] = prefs && <VoreUserPreferences prefs={prefs} />;
|
||||
tabs[4] = prefs && <VoreUserPreferences prefs={prefs} />;
|
||||
|
||||
return (
|
||||
<Window width={1030} height={760} theme="abstract">
|
||||
@@ -113,11 +140,7 @@ export const VorePanel = () => {
|
||||
''}
|
||||
</Stack.Item>
|
||||
<Stack.Item basis={inside?.desc?.length || 0 > 500 ? '30%' : '20%'}>
|
||||
<VoreInsidePanel
|
||||
inside={inside}
|
||||
show_pictures={show_pictures}
|
||||
icon_overflow={icon_overflow}
|
||||
/>
|
||||
<VoreInsidePanel inside={inside} />
|
||||
</Stack.Item>
|
||||
<Stack.Item>
|
||||
<Tabs>
|
||||
@@ -128,23 +151,32 @@ export const VorePanel = () => {
|
||||
Bellies
|
||||
<Icon name="list" ml={0.5} />
|
||||
</Tabs.Tab>
|
||||
{!!inside.ref && (
|
||||
<Tabs.Tab
|
||||
selected={active_tab === 1}
|
||||
onClick={() => act('change_tab', { tab: 1 })}
|
||||
>
|
||||
Inside
|
||||
<Icon name="person-shelter" ml={0.5} />
|
||||
</Tabs.Tab>
|
||||
)}
|
||||
<Tabs.Tab
|
||||
selected={active_tab === 1}
|
||||
onClick={() => act('change_tab', { tab: 1 })}
|
||||
selected={active_tab === 2}
|
||||
onClick={() => act('change_tab', { tab: 2 })}
|
||||
>
|
||||
Soulcatcher
|
||||
<Icon name="ghost" ml={0.5} />
|
||||
</Tabs.Tab>
|
||||
<Tabs.Tab
|
||||
selected={active_tab === 2}
|
||||
onClick={() => act('change_tab', { tab: 2 })}
|
||||
selected={active_tab === 3}
|
||||
onClick={() => act('change_tab', { tab: 3 })}
|
||||
>
|
||||
General
|
||||
<Icon name="user-circle" ml={0.5} />
|
||||
</Tabs.Tab>
|
||||
<Tabs.Tab
|
||||
selected={active_tab === 3}
|
||||
onClick={() => act('change_tab', { tab: 3 })}
|
||||
selected={active_tab === 4}
|
||||
onClick={() => act('change_tab', { tab: 4 })}
|
||||
>
|
||||
Preferences
|
||||
<Icon name="user-cog" ml={0.5} />
|
||||
|
||||
Reference in New Issue
Block a user