From 4cefc154b2fbb7710aaa7dcd681f991f958db882 Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Sat, 24 Jan 2026 20:04:00 -0700 Subject: [PATCH] [MIRROR] Allows to limit liquid generation on low nutri / power (#12324) Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com> --- .../weapons/implants/implantreagent_ch.dm | 5 +- code/modules/admin/admin_verb_lists.dm | 562 ------------------ code/modules/admin/admin_verbs_vr.dm | 141 ----- code/modules/mob/living/living.dm | 3 + code/modules/power/cell.dm | 2 +- code/modules/vore/eating/belly_import.dm | 4 + code/modules/vore/eating/belly_obj.dm | 3 + code/modules/vore/eating/belly_obj_liquids.dm | 6 +- code/modules/vore/eating/exportpanel_vr.dm | 1 + .../vorepanel_set_liqattribute.dm | 6 + .../panel_databackend/vorepanel_vore_data.dm | 9 + .../vorepanel_vore_subdata.dm | 1 + .../SleeperStatusElements/SleeperPatient.tsx | 10 +- .../LiquidTab/LiquidOptionsRight.tsx | 13 + .../VoreSelectedBellyLiquidOptions.tsx | 13 +- .../tgui/interfaces/VorePanel/types.ts | 2 + .../VorePanelExportBellyString.tsx | 5 + .../tgui/interfaces/VorePanelExport/types.ts | 1 + tgui/packages/tgui/interfaces/VotePanel.tsx | 2 +- 19 files changed, 73 insertions(+), 716 deletions(-) delete mode 100644 code/modules/admin/admin_verb_lists.dm delete mode 100644 code/modules/admin/admin_verbs_vr.dm diff --git a/code/game/objects/items/weapons/implants/implantreagent_ch.dm b/code/game/objects/items/weapons/implants/implantreagent_ch.dm index 8bb0bde53f..190a76ad2b 100644 --- a/code/game/objects/items/weapons/implants/implantreagent_ch.dm +++ b/code/game/objects/items/weapons/implants/implantreagent_ch.dm @@ -87,8 +87,9 @@ rimplant.reagents.remove_any(rimplant.transfer_amount) if(prob(25)) visible_message(span_notice("[src] [pick(rimplant.random_emote)].")) - else - return + else + return + /mob/living/carbon/human/proc/toggle_cascade() set name = "Toggle cascading" diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm deleted file mode 100644 index 963453008b..0000000000 --- a/code/modules/admin/admin_verb_lists.dm +++ /dev/null @@ -1,562 +0,0 @@ -//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless -var/list/admin_verbs_default = list( - /datum/admins/proc/show_player_panel, //shows an interface for individual players, with various links (links require additional flags, - /client/proc/player_panel_new, //shows an interface for all players, with links to various panels, - /client/proc/player_panel, - /client/proc/deadmin, //destroys our own admin datum so we can play as a regular player, - /client/proc/hide_verbs, //hides all our adminverbs, - /client/proc/hide_most_verbs, //hides all our hideable adminverbs, - /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify, - /client/proc/mark_datum_mapview, - /client/proc/cmd_check_new_players, //allows us to see every new player -// /client/proc/check_antagonists, //shows all antags, -// /client/proc/cmd_mod_say, -// /client/proc/deadchat //toggles deadchat on/off, -// /client/proc/toggle_ahelp_sound, - /client/proc/debugstatpanel, - ) - -var/list/admin_verbs_admin = list( - /datum/admins/proc/set_tcrystals, - /datum/admins/proc/add_tcrystals, - /client/proc/invisimin, //allows our mob to go invisible/visible, - /datum/admins/proc/show_traitor_panel, //interface which shows a mob's mind., - /datum/admins/proc/show_game_mode, //Configuration window for the current game mode., - /datum/admins/proc/force_mode_latespawn, //Force the mode to try a latespawn proc, - /datum/admins/proc/force_antag_latespawn, //Force a specific template to try a latespawn proc, - /datum/admins/proc/toggleenter, //toggles whether people can join the current game, - /datum/admins/proc/toggleguests, //toggles whether guests can join the current game, - /datum/admins/proc/announce, //priority announce something to all clients., - /datum/admins/proc/intercom, //send a fake intercom message, like an arrivals announcement, - /datum/admins/proc/intercom_convo, //send a fake intercom conversation, like an ATC exchange, - /client/proc/colorooc, //allows us to set a custom colour for everythign we say in ooc, - /client/proc/admin_ghost, //allows us to ghost/reenter body at will, - /client/proc/toggle_view_range, //changes how far we can see, - /datum/admins/proc/view_txt_log, //shows the server log (GLOB.diary) for today, - /datum/admins/proc/view_atk_log, //shows the server combat-log, doesn't do anything presently, - /client/proc/cmd_admin_pm_context, //right-click adminPM interface, - /client/proc/cmd_admin_pm_panel, //admin-pm list, - /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', - /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, - /client/proc/cmd_admin_check_contents, //displays the contents of an instance, - /client/proc/cmd_admin_check_player_logs, //checks a player's attack logs, - /client/proc/cmd_admin_check_dialogue_logs, //checks a player's dialogue logs, - /datum/admins/proc/access_news_network, //allows access of newscasters, - /client/proc/giveruntimelog, //allows us to give access to runtime logs to somebody, - /client/proc/getserverlog, //allows us to fetch server logs (GLOB.diary) for other days, - /client/proc/jumptocoord, //we ghost and jump to a coordinate, - /client/proc/Getmob, //teleports a mob to our location, - /client/proc/Getkey, //teleports a mob with a certain ckey to our location, -// /client/proc/sendmob, //sends a mob somewhere, -Removed due to it needing two sorting procs to work, which were executed every time an admin right-clicked. ~Errorage, - /client/proc/Jump, - /client/proc/jumptokey, //allows us to jump to the location of a mob with a certain ckey, - /client/proc/jumptomob, //allows us to jump to a specific mob, - /client/proc/jumptoturf, //allows us to jump to a specific turf, - /client/proc/admin_call_shuttle, //allows us to call the emergency shuttle, - /client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to CentCom, - /client/proc/cmd_admin_direct_narrate, //send text directly to a player with no padding. Useful for narratives and fluff-text, - /client/proc/cmd_admin_world_narrate, //sends text to all players with no padding, - /client/proc/cmd_admin_create_centcom_report, - /client/proc/check_words, //displays cult-words, - /client/proc/check_ai_laws, //shows AI and borg laws, - /client/proc/rename_silicon, //properly renames silicons, - /client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. , - /client/proc/shuttle_panel, // Allows controlling all shuttles remotely. - /client/proc/check_antagonists, - /client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others, - /client/proc/dsay, //talk in deadchat using our ckey/fakekey, -// /client/proc/toggle_hear_deadcast, //toggles whether we hear deadchat, - /client/proc/investigate_show, //various admintools for investigation. Such as a singulo grief-log, - /client/proc/secrets, - /datum/admins/proc/toggleooc, //toggles ooc on/off for everyone, - /datum/admins/proc/togglelooc, //toggles looc on/off for everyone, - /datum/admins/proc/toggleoocdead, //toggles ooc on/off for everyone who is dead, - /datum/admins/proc/togglehubvisibility, //toggles visibility on the BYOND Hub., - /datum/admins/proc/toggledsay, //toggles dsay on/off for everyone, - /client/proc/game_panel, //game panel, allows to change game-mode etc, - /client/proc/cmd_admin_say, //admin-only ooc chat, - /client/proc/cmd_mod_say, - /client/proc/cmd_event_say, - /datum/admins/proc/PlayerNotes, - /datum/admins/proc/show_player_info, - /client/proc/free_slot, //frees slot for chosen job, - /client/proc/cmd_admin_change_custom_event, - /client/proc/cmd_admin_rejuvenate, - /client/proc/toggleghostwriters, - /client/proc/toggledrones, - /client/proc/check_customitem_activity, - /client/proc/man_up, - /client/proc/global_man_up, - /client/proc/response_team, // Response Teams admin verb, - /client/proc/trader_ship, // Trader ship admin verb, - /client/proc/toggle_antagHUD_use, - /client/proc/toggle_antagHUD_restrictions, - /client/proc/allow_character_respawn, // Allows a ghost to respawn , - /client/proc/event_manager_panel, - /client/proc/empty_ai_core_toggle_latejoin, - /client/proc/empty_ai_core_toggle_latejoin, - /client/proc/aooc, - /client/proc/change_human_appearance_admin, // Allows an admin to change the basic appearance of human-based mobs , - /client/proc/change_human_appearance_self, // Allows the human-based mob itself change its basic appearance , - /client/proc/change_security_level, - /client/proc/view_chemical_reaction_logs, - /client/proc/makePAI, - /client/proc/toggle_debug_logs, - /client/proc/toggle_attack_logs, - /datum/admins/proc/paralyze_mob, - /client/proc/fixatmos, - /datum/admins/proc/quick_authentic_nif, //CHOMPStation add - /datum/admins/proc/sendFax, - /client/proc/despawn_player, - /datum/admins/proc/view_feedback, - /client/proc/admin_teleport, //CHOMPEdit - /client/proc/setckey, //YW add - readds SetCkey proc - /client/proc/debug_global_variables, - /client/proc/hide_motion_tracker_feedback - ) - -var/list/admin_verbs_ban = list( - /client/proc/unban_panel, - /client/proc/jobbans - ) - -var/list/admin_verbs_sounds = list( - /client/proc/play_local_sound, - /client/proc/play_sound, - /client/proc/play_server_sound, - /client/proc/play_web_sound - ) - -var/list/admin_verbs_fun = list( - /client/proc/object_talk, - /datum/admins/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/everyone_random, - /client/proc/cinematic, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/cmd_admin_add_freeform_ai_law, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /client/proc/editappear, - /client/proc/roll_dices, - /datum/admins/proc/call_supply_drop, - /datum/admins/proc/call_drop_pod, - /client/proc/smite, - /client/proc/smite_vr, //VOREStation Add, - /client/proc/admin_lightning_strike, - /client/proc/cmd_admin_droppod_deploy - ) - -var/list/admin_verbs_spawn = list( - /datum/admins/proc/spawn_fruit, - /datum/admins/proc/spawn_custom_item, - /datum/admins/proc/check_custom_items, - /datum/admins/proc/spawn_plant, - /datum/admins/proc/spawn_atom, //allows us to spawn instances, - /client/proc/cmd_admin_droppod_spawn, - /client/proc/respawn_character, - /client/proc/spawn_character_mob, //VOREStation Add, - /client/proc/virus2_editor, - /client/proc/spawn_chemdisp_cartridge, - /client/proc/map_template_load, - /client/proc/map_template_upload, - /client/proc/map_template_load_on_new_z - ) - -var/list/admin_verbs_server = list( - /datum/admins/proc/capture_map, - /client/proc/Set_Holiday, - /client/proc/ToRban, - /datum/admins/proc/startnow, - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /datum/admins/proc/toggleaban, - /datum/admins/proc/togglepersistence, - /client/proc/cmd_mod_say, - /client/proc/toggle_log_hrefs, - /datum/admins/proc/immreboot, - /client/proc/everyone_random, - /datum/admins/proc/toggleAI, - /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, - /client/proc/cmd_debug_del_all, - /datum/admins/proc/adrev, - /datum/admins/proc/adspawn, - /datum/admins/proc/adjump, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/toggle_random_events, - /client/proc/check_customitem_activity, - /client/proc/modify_server_news, - /client/proc/recipe_dump, - /client/proc/panicbunker, - /client/proc/paranoia_logging, - /client/proc/ip_reputation, - /client/proc/debug_global_variables - ) - -var/list/admin_verbs_debug = list( - /client/proc/reload_configuration, // CHOMPEdit - /client/proc/getruntimelog, //allows us to access runtime logs to somebody, - /client/proc/cmd_admin_list_open_jobs, - /client/proc/Debug2, - /client/proc/kill_air, - /client/proc/ZASSettings, - /client/proc/cmd_debug_make_powernets, - /client/proc/kill_airgroup, - /client/proc/debug_controller, - /client/proc/debug_antagonist_template, - /client/proc/cmd_debug_mob_lists, - /client/proc/cmd_debug_using_map, - /client/proc/cmd_admin_delete, - /client/proc/cmd_debug_del_all, - /client/proc/cmd_debug_tog_aliens, - /client/proc/cmd_display_del_log, - /client/proc/cmd_display_init_log, - /client/proc/cmd_display_overlay_log, - /client/proc/air_report, - /client/proc/reload_admins, - /client/proc/reload_eventMs, - /client/proc/restart_controller, - /datum/admins/proc/restart, - /client/proc/print_random_map, - /client/proc/create_random_map, - /client/proc/apply_random_map, - /client/proc/overlay_random_map, - /client/proc/delete_random_map, - /client/proc/show_plant_genes, - /client/proc/enable_debug_verbs, - /client/proc/callproc, - /client/proc/callproc_datum, - /client/proc/SDQL2_query, - /client/proc/Jump, - /client/proc/jumptomob, - /client/proc/jumptocoord, - /client/proc/dsay, - /client/proc/toggle_debug_logs, - /client/proc/admin_ghost, //allows us to ghost/reenter body at will, - /datum/admins/proc/view_runtimes, - // /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet. - /datum/admins/proc/change_weather, - /datum/admins/proc/change_time, - /client/proc/cmd_regenerate_asset_cache, - /client/proc/cmd_clear_smart_asset_cache, - /client/proc/cmd_reload_robot_sprite_test, - /client/proc/admin_give_modifier, - /client/proc/simple_DPS, - /datum/admins/proc/view_feedback, - /client/proc/debug_global_variables, - /client/proc/ping_webhook, - /client/proc/reload_webhooks, - /client/proc/stop_sounds - ) - -var/list/admin_verbs_paranoid_debug = list( - /client/proc/callproc, - /client/proc/callproc_datum, - /client/proc/debug_controller - ) - -var/list/admin_verbs_possess = list( - /proc/possess, - /proc/release - ) -var/list/admin_verbs_permissions = list( - /client/proc/edit_admin_permissions - ) -var/list/admin_verbs_rejuv = list( - /client/proc/respawn_character - ) - -//verbs which can be hidden - needs work -var/list/admin_verbs_hideable = list( - /client/proc/deadmin, -// /client/proc/deadchat, - /datum/admins/proc/show_traitor_panel, - /datum/admins/proc/toggleenter, - /datum/admins/proc/toggleguests, - /datum/admins/proc/announce, - /client/proc/colorooc, - /client/proc/admin_ghost, - /client/proc/toggle_view_range, - /datum/admins/proc/view_txt_log, - /datum/admins/proc/view_atk_log, - /client/proc/cmd_admin_subtle_message, - /client/proc/cmd_admin_check_contents, - /client/proc/cmd_admin_check_player_logs, - /client/proc/cmd_admin_check_dialogue_logs, - /datum/admins/proc/access_news_network, - /client/proc/admin_call_shuttle, - /client/proc/admin_cancel_shuttle, - /client/proc/cmd_admin_direct_narrate, - /client/proc/cmd_admin_world_narrate, - /client/proc/check_words, - /client/proc/play_local_sound, - /client/proc/play_sound, - /client/proc/play_server_sound, - /client/proc/play_web_sound, - /client/proc/object_talk, - /datum/admins/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/cinematic, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/cmd_admin_add_freeform_ai_law, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/cmd_admin_create_centcom_report, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/Set_Holiday, - /client/proc/ToRban, - /datum/admins/proc/startnow, - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /datum/admins/proc/toggleaban, - /client/proc/toggle_log_hrefs, - /datum/admins/proc/immreboot, - /client/proc/everyone_random, - /datum/admins/proc/toggleAI, - /datum/admins/proc/adrev, - /datum/admins/proc/adspawn, - /datum/admins/proc/adjump, - /client/proc/restart_controller, - /client/proc/cmd_admin_list_open_jobs, - /client/proc/callproc, - /client/proc/callproc_datum, - /client/proc/Debug2, - /client/proc/reload_admins, - /client/proc/kill_air, - /client/proc/cmd_debug_make_powernets, - /client/proc/kill_airgroup, - /client/proc/debug_controller, - /client/proc/startSinglo, - /client/proc/simple_DPS, - /client/proc/cmd_debug_mob_lists, - /client/proc/cmd_debug_using_map, - /client/proc/cmd_debug_del_all, - /client/proc/cmd_debug_tog_aliens, - /client/proc/cmd_display_del_log, - /client/proc/air_report, - /client/proc/enable_debug_verbs, - /client/proc/roll_dices, - /proc/possess, - /proc/release, - /datum/admins/proc/set_tcrystals, - /client/proc/debug_global_variables, - /client/proc/stop_sounds - ) -var/list/admin_verbs_mod = list( - /client/proc/cmd_admin_pm_context, //right-click adminPM interface, - /client/proc/cmd_admin_pm_panel, //admin-pm list, - /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game., - /datum/admins/proc/PlayerNotes, - /client/proc/admin_ghost, //allows us to ghost/reenter body at will, - /client/proc/cmd_mod_say, - /client/proc/cmd_event_say, - /datum/admins/proc/show_player_info, - /datum/admins/proc/show_traitor_panel, - /client/proc/colorooc, - /client/proc/player_panel_new, - /client/proc/dsay, - /datum/admins/proc/show_player_panel, - /client/proc/check_antagonists, - /client/proc/aooc, - /client/proc/jobbans, - /client/proc/toggle_attack_logs, - /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', - /datum/admins/proc/paralyze_mob, - /client/proc/cmd_admin_direct_narrate, - /client/proc/allow_character_respawn, // Allows a ghost to respawn , - /datum/admins/proc/sendFax, - /client/proc/getserverlog, //allows us to fetch server logs (GLOB.diary) for other days, - /datum/admins/proc/view_persistent_data, - /datum/admins/proc/view_txt_log, //shows the server log (diary) for today, - /datum/admins/proc/quick_authentic_nif, //CHOMPEdit - /client/proc/admin_teleport, //CHOMPEdit - /datum/admins/proc/view_atk_log //shows the server combat-log, doesn't do anything presently, -) - -var/list/admin_verbs_event_manager = list( - /client/proc/cmd_event_say, - /client/proc/cmd_admin_pm_context, - /client/proc/cmd_admin_pm_panel, - /client/proc/admin_ghost, - /datum/admins/proc/show_player_info, - /client/proc/dsay, - /client/proc/cmd_admin_subtle_message, - /client/proc/debug_variables, - /client/proc/check_antagonists, - /client/proc/aooc, - /datum/admins/proc/paralyze_mob, - /client/proc/cmd_admin_direct_narrate, - /client/proc/allow_character_respawn, - /datum/admins/proc/sendFax, - /client/proc/respawn_character, - /proc/possess, - /proc/release, - /datum/admins/proc/change_weather, - /datum/admins/proc/change_time, - /client/proc/cmd_regenerate_asset_cache, - /client/proc/cmd_clear_smart_asset_cache, - /client/proc/cmd_reload_robot_sprite_test, - /client/proc/admin_give_modifier, - /client/proc/Jump, - /client/proc/jumptomob, - /client/proc/jumptocoord, - /client/proc/cmd_admin_delete, - /datum/admins/proc/delay, - /client/proc/Set_Holiday, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /datum/admins/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/cmd_admin_add_freeform_ai_law, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /client/proc/editappear, - /client/proc/roll_dices, - /datum/admins/proc/call_supply_drop, - /datum/admins/proc/call_drop_pod, - /datum/admins/proc/PlayerNotes, - /client/proc/callproc, - /client/proc/callproc_datum, - /client/proc/debug_controller, - // /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet. - /datum/admins/proc/change_weather, - /datum/admins/proc/change_time, - /client/proc/cmd_regenerate_asset_cache, - /client/proc/cmd_clear_smart_asset_cache, - /client/proc/cmd_reload_robot_sprite_test, - /client/proc/admin_give_modifier, - /datum/admins/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /datum/admins/proc/set_tcrystals, - /datum/admins/proc/add_tcrystals, - /client/proc/invisimin, //allows our mob to go invisible/visible, - /datum/admins/proc/show_traitor_panel, //interface which shows a mob's mind., - /datum/admins/proc/show_game_mode, //Configuration window for the current game mode., - /datum/admins/proc/force_mode_latespawn, //Force the mode to try a latespawn proc, - /datum/admins/proc/force_antag_latespawn, //Force a specific template to try a latespawn proc, - /datum/admins/proc/announce, //priority announce something to all clients., - /datum/admins/proc/intercom, //send a fake intercom message, like an arrivals announcement, - /datum/admins/proc/intercom_convo, //send a fake intercom conversation, like an ATC exchange, - /client/proc/colorooc, //allows us to set a custom colour for everythign we say in ooc, - /client/proc/admin_ghost, //allows us to ghost/reenter body at will, - /client/proc/toggle_view_range, //changes how far we can see, - /client/proc/cmd_admin_pm_context, //right-click adminPM interface, - /client/proc/cmd_admin_pm_panel, //admin-pm list, - /client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head', - /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, - /client/proc/cmd_admin_check_contents, //displays the contents of an instance, - /client/proc/cmd_admin_check_player_logs, //checks a player's attack logs, - /client/proc/cmd_admin_check_dialogue_logs, //checks a player's dialogue logs, - /datum/admins/proc/access_news_network, //allows access of newscasters, - /client/proc/jumptocoord, //we ghost and jump to a coordinate, - /client/proc/Getmob, //teleports a mob to our location, - /client/proc/Getkey, //teleports a mob with a certain ckey to our location, - /client/proc/Jump, - /client/proc/jumptokey, //allows us to jump to the location of a mob with a certain ckey, - /client/proc/jumptomob, //allows us to jump to a specific mob, - /client/proc/jumptoturf, //allows us to jump to a specific turf, - /client/proc/admin_call_shuttle, //allows us to call the emergency shuttle, - /client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to CentCom, - /client/proc/cmd_admin_direct_narrate, //send text directly to a player with no padding. Useful for narratives and fluff-text, - /client/proc/cmd_admin_world_narrate, //sends text to all players with no padding, - /client/proc/cmd_admin_create_centcom_report, - /client/proc/check_words, //displays cult-words, - /client/proc/check_ai_laws, //shows AI and borg laws, - /client/proc/rename_silicon, //properly renames silicons, - /client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. , - /client/proc/shuttle_panel, // Allows controlling all shuttles remotely. - /client/proc/check_antagonists, - /client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others, - /client/proc/dsay, //talk in deadchat using our ckey/fakekey, - /client/proc/secrets, - /client/proc/game_panel, //game panel, allows to change game-mode etc, - /client/proc/cmd_mod_say, - /client/proc/cmd_event_say, - /datum/admins/proc/show_player_info, - /client/proc/free_slot, //frees slot for chosen job, - /client/proc/cmd_admin_change_custom_event, - /client/proc/cmd_admin_rejuvenate, - /client/proc/toggleghostwriters, - /client/proc/man_up, - /client/proc/global_man_up, - /client/proc/response_team, // Response Teams admin verb, - /client/proc/trader_ship, // Trader ship admin verb, - /client/proc/allow_character_respawn, // Allows a ghost to respawn , - /client/proc/event_manager_panel, - /client/proc/aooc, - /client/proc/change_human_appearance_admin, // Allows an admin to change the basic appearance of human-based mobs , - /client/proc/change_human_appearance_self, // Allows the human-based mob itself change its basic appearance , - /client/proc/change_security_level, - /client/proc/makePAI, - /client/proc/toggle_debug_logs, - /client/proc/toggle_attack_logs, - /datum/admins/proc/paralyze_mob, - /client/proc/fixatmos, - /datum/admins/proc/sendFax, - /client/proc/despawn_player, - /datum/admins/proc/view_feedback, - /datum/admins/proc/capture_map, - /client/proc/Set_Holiday, - /datum/admins/proc/startnow, - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /client/proc/cmd_mod_say, - /datum/admins/proc/immreboot, - /client/proc/everyone_random, - /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, - /client/proc/cmd_debug_del_all, - /client/proc/toggle_random_events, - /client/proc/modify_server_news, - /client/proc/debug_global_variables, - /client/proc/hide_motion_tracker_feedback -) - -/client/proc/add_admin_verbs() - if(holder) - add_verb(src, admin_verbs_default) - if(holder.rights & R_BUILDMODE) add_verb(src, /client/proc/togglebuildmodeself) - if(holder.rights & R_ADMIN) add_verb(src, admin_verbs_admin) - if(holder.rights & R_BAN) add_verb(src, admin_verbs_ban) - if(holder.rights & R_FUN) add_verb(src, admin_verbs_fun) - if(holder.rights & R_SERVER) add_verb(src, admin_verbs_server) - if(holder.rights & R_DEBUG) - add_verb(src, admin_verbs_debug) - if(CONFIG_GET(flag/debugparanoid) && !(holder.rights & R_ADMIN)) // CHOMPEdit - remove_verb(src, admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on. - if(holder.rights & R_POSSESS) add_verb(src, admin_verbs_possess) - if(holder.rights & R_PERMISSIONS) add_verb(src, admin_verbs_permissions) - if(holder.rights & R_STEALTH) add_verb(src, /client/proc/stealth) - if(holder.rights & R_REJUVINATE) add_verb(src, admin_verbs_rejuv) - if(holder.rights & R_SOUNDS) add_verb(src, admin_verbs_sounds) - if(holder.rights & R_SPAWN) add_verb(src, admin_verbs_spawn) - if(holder.rights & R_MOD) add_verb(src, admin_verbs_mod) - if(holder.rights & R_EVENT) add_verb(src, admin_verbs_event_manager) - -//CHOMPEdit Begin -/client/proc/remove_admin_verbs() - remove_verb(src, list( - admin_verbs_default, - /client/proc/togglebuildmodeself, - admin_verbs_admin, - admin_verbs_ban, - admin_verbs_fun, - admin_verbs_server, - admin_verbs_debug, - admin_verbs_possess, - admin_verbs_permissions, - /client/proc/stealth, - admin_verbs_rejuv, - admin_verbs_sounds, - admin_verbs_spawn, - debug_verbs - )) -//CHOMPEdit End diff --git a/code/modules/admin/admin_verbs_vr.dm b/code/modules/admin/admin_verbs_vr.dm deleted file mode 100644 index d16dfaeab5..0000000000 --- a/code/modules/admin/admin_verbs_vr.dm +++ /dev/null @@ -1,141 +0,0 @@ -/client/proc/adminorbit() - set category = "Fun.Event Kit" - set name = "Orbit Things" - set desc = "Makes something orbit around something else." - set popup_menu = FALSE - - if(!check_rights(R_FUN)) - return - - var/center - var/atom/movable/orbiter - var/input - - if(holder.marked_datum) - input = tgui_alert(usr, "You have \n[holder.marked_datum] marked, should this be the center of the orbit, or the orbiter?", "Orbit", list("Center", "Orbiter", "Neither")) - switch(input) - if("Center") - center = holder.marked_datum - if("Orbiter") - orbiter = holder.marked_datum - var/list/possible_things = list() - for(var/T as mob in view(view)) //Let's do mobs before objects - if(ismob(T)) - possible_things |= T - for(var/T as obj in view(view)) - if(isobj(T)) - possible_things |= T - if(!center) - center = tgui_input_list(src, "What should act as the center of the orbit?", "Center", possible_things) - possible_things -= center - if(!orbiter) - orbiter = tgui_input_list(src, "What should act as the orbiter of the orbit?", "Orbiter", possible_things) - if(!center || !orbiter) - to_chat(usr, span_warning("A center of orbit and an orbiter must be configured. You can also do this by marking a target.")) - return - if(center == orbiter) - to_chat(usr, span_warning("The center of the orbit cannot also be the orbiter.")) - return - if(isturf(orbiter)) - to_chat(usr, span_warning("The orbiter cannot be a turf. It can only be used as a center.")) - return - var/distance = tgui_input_number(usr, "How large will their orbit radius be? (In pixels. 32 is 'near around a character)", "Orbit Radius", 32) - var/speed = tgui_input_number(usr, "How fast will they orbit (negative numbers spin clockwise)", "Orbit Speed", 20) - var/segments = tgui_input_number(usr, "How many segments will they have in their orbit? (3 is a triangle, 36 is a circle, etc)", "Orbit Segments", 36) - var/clock = FALSE - if(!distance) - distance = 32 - if(!speed) - speed = 20 - else if (speed < 0) - clock = TRUE - speed *= -1 - if(!segments) - segments = 36 - if(tgui_alert(usr, "\The [orbiter] will orbit around [center]. Is this okay?", "Confirm Orbit", list("Yes", "No")) == "Yes") - orbiter.orbit(center, distance, clock, speed, segments) - -/client/proc/removetickets() - set name = "Security Tickets" - set category = "Admin.Investigate" - set desc = "Allows one to remove tickets from the global list." - - if(!check_rights(R_ADMIN)) - return - - if(security_printer_tickets.len >= 1) - var/input = tgui_input_list(usr, "Which message?", "Security Tickets", security_printer_tickets) - - if(!input) - return - if(tgui_alert(usr, "Do you want to remove the following message from the global list? \"[input]\"", "Remove Ticket", list("Yes", "No")) == "Yes") - security_printer_tickets -= input - log_and_message_admins("removed a security ticket from the global list: \"[input]\"", usr) - - else - tgui_alert_async(usr, "The ticket list is empty.","Empty") - -/client/proc/delbook() - set name = "Delete Book" - set desc = "Permamently deletes a book from the database." - set category = "Admin.Game" - if(!src.holder) - to_chat(src, "Only administrators may use this command.") - return - - var/obj/machinery/librarycomp/our_comp - for(var/obj/machinery/librarycomp/l in world) - if(istype(l, /obj/machinery/librarycomp)) - our_comp = l - break - - if(!our_comp) - to_chat(usr, span_warning("Unable to locate a library computer to use for book deleting.")) - return - - var/dat = "Book Inventory Management\n" - dat += "

ADMINISTRATIVE MANAGEMENT

" - establish_db_connection() - - if(!SSdbcore.IsConnected()) - dat += span_red(span_bold("ERROR") + ": Unable to contact External Archive. Please contact your system administrator for assistance.") - else - dat += {"(Order book by SS13BN)

- -
TITLE[dat]", "window=library") - onclose(usr, "library") - -/client/proc/toggle_spawning_with_recolour() - set name = "Toggle Simple/Robot recolour verb" - set desc = "Makes it so new robots/simple_mobs spawn with a verb to recolour themselves for this round. You must set them separately." - set category = "Server.Game" - - if(!check_rights(R_ADMIN|R_EVENT|R_FUN)) - return - - var/which = tgui_alert(usr, "Which do you want to toggle?", "Choose Recolour Toggle", list("Robot", "Simple Mob")) - switch(which) - if("Robot") - CONFIG_SET(flag/allow_robot_recolor, !CONFIG_GET(flag/allow_robot_recolor)) - to_chat(usr, "You have [CONFIG_GET(flag/allow_robot_recolor) ? "enabled" : "disabled"] newly spawned cyborgs to spawn with the recolour verb") - if("Simple Mob") - CONFIG_SET(flag/allow_simple_mob_recolor, !CONFIG_GET(flag/allow_simple_mob_recolor)) - to_chat(usr, "You have [CONFIG_GET(flag/allow_simple_mob_recolor) ? "enabled" : "disabled"] newly spawned simple mobs to spawn with the recolour verb") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index ae4d136b14..59c207329c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1412,6 +1412,9 @@ /mob/living/proc/adjust_nutrition(amount) nutrition = between(0, nutrition + amount, max_nutrition) +/mob/living/proc/nutrition_percent() + return 100 * nutrition / max_nutrition + /mob/living/vv_get_header() . = ..() var/refid = REF(src) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index be086db2b3..5e94bc7cea 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -102,7 +102,7 @@ /obj/item/cell/proc/percent() // return % charge of cell var/charge_percent = 0 if(maxcharge > 0) - charge_percent = 100.0*charge/maxcharge + charge_percent = 100.0 * charge / maxcharge return charge_percent /obj/item/cell/proc/fully_charged() diff --git a/code/modules/vore/eating/belly_import.dm b/code/modules/vore/eating/belly_import.dm index deb6f94dc7..65407aea90 100644 --- a/code/modules/vore/eating/belly_import.dm +++ b/code/modules/vore/eating/belly_import.dm @@ -1003,6 +1003,10 @@ if(new_show_liquids == 1) new_belly.show_liquids = TRUE + if(isnum(belly_data["reagent_gen_cost_limit"])) + var/new_reagent_gen_cost_limit = belly_data["reagent_gen_cost_limit"] + new_belly.reagent_gen_cost_limit = sanitize_integer(new_reagent_gen_cost_limit, 0, 100, initial(new_belly.reagent_gen_cost_limit)) + if(isnum(belly_data["reagentbellymode"])) var/new_reagentbellymode = belly_data["reagentbellymode"] if(new_reagentbellymode == 0) diff --git a/code/modules/vore/eating/belly_obj.dm b/code/modules/vore/eating/belly_obj.dm index 283066c017..eb9cc89f43 100644 --- a/code/modules/vore/eating/belly_obj.dm +++ b/code/modules/vore/eating/belly_obj.dm @@ -162,6 +162,7 @@ var/belly_fullscreen_alpha = 255 // Liquid belly vars + var/reagent_gen_cost_limit = 10 //Our lower percentage limit of nutrition / charge until which we produce liquids var/reagentbellymode = FALSE // Belly has abilities to make liquids from digested/absorbed/drained prey and/or nutrition var/reagent_mode_flags = 0 @@ -378,6 +379,7 @@ "colorization_enabled", "show_liquids", "reagentbellymode", + "reagent_gen_cost_limit", "liquid_fullness1_messages", "liquid_fullness2_messages", "liquid_fullness3_messages", @@ -1357,6 +1359,7 @@ dupe.belly_fullscreen_color4 = belly_fullscreen_color4 dupe.belly_fullscreen_alpha = belly_fullscreen_alpha dupe.show_liquids = show_liquids + dupe.reagent_gen_cost_limit = reagent_gen_cost_limit dupe.reagentbellymode = reagentbellymode dupe.vorefootsteps_sounds = vorefootsteps_sounds dupe.liquid_fullness1_messages = liquid_fullness1_messages diff --git a/code/modules/vore/eating/belly_obj_liquids.dm b/code/modules/vore/eating/belly_obj_liquids.dm index 30c18fb7f6..235fee4a35 100644 --- a/code/modules/vore/eating/belly_obj_liquids.dm +++ b/code/modules/vore/eating/belly_obj_liquids.dm @@ -5,14 +5,16 @@ if(isrobot(owner)) var/mob/living/silicon/robot/R = owner if(R.cell && R.cell.charge >= gen_cost*10 && gen_interval >= gen_time) - GenerateBellyReagents() + if(R.cell.percent() >= reagent_gen_cost_limit) + GenerateBellyReagents() gen_interval = 0 return gen_interval++ return if(owner.nutrition >= gen_cost && gen_interval >= gen_time) - GenerateBellyReagents() + if(owner.nutrition_percent() >= reagent_gen_cost_limit) + GenerateBellyReagents() gen_interval = 0 return gen_interval++ diff --git a/code/modules/vore/eating/exportpanel_vr.dm b/code/modules/vore/eating/exportpanel_vr.dm index 56f034e5c3..988e4d75fc 100644 --- a/code/modules/vore/eating/exportpanel_vr.dm +++ b/code/modules/vore/eating/exportpanel_vr.dm @@ -439,6 +439,7 @@ // Liquid Options belly_data["show_liquids"] = B.show_liquids belly_data["reagentbellymode"] = B.reagentbellymode + belly_data["reagent_gen_cost_limit"] = B.reagent_gen_cost_limit belly_data["reagent_chosen"] = B.reagent_chosen belly_data["reagent_name"] = B.reagent_name belly_data["reagent_transfer_verb"] = B.reagent_transfer_verb diff --git a/code/modules/vore/eating/panel_databackend/vorepanel_set_liqattribute.dm b/code/modules/vore/eating/panel_databackend/vorepanel_set_liqattribute.dm index d963ee024f..8c3f4984c2 100644 --- a/code/modules/vore/eating/panel_databackend/vorepanel_set_liqattribute.dm +++ b/code/modules/vore/eating/panel_databackend/vorepanel_set_liqattribute.dm @@ -14,6 +14,12 @@ host.vore_selected.show_liquids = 0 to_chat(user,span_warning("Your [lowertext(host.vore_selected.name)] no longer has liquid options.")) . = TRUE + if("b_liq_reagent_gen_cost_limit") + var/new_limit = text2num(params["val"]) + if(!isnum(new_limit)) + return FALSE + host.vore_selected.reagent_gen_cost_limit = CLAMP(new_limit, 0, 100) + . = TRUE if("b_liq_reagent_gen") if(!host.vore_selected.reagentbellymode) //liquid container adjustments and interactions. host.vore_selected.reagentbellymode = 1 diff --git a/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm b/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm index a5df4128b0..5346605e29 100644 --- a/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm +++ b/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm @@ -368,9 +368,18 @@ selected_list["contents"] = selected_contents if(LIQUID_OPTIONS_TAB) + var/liq_gen_resources = 0 + if(isrobot(owner)) + var/mob/living/silicon/robot/robot_owner = owner + if(robot_owner.cell) + liq_gen_resources = robot_owner.cell.percent() + else if(isliving(owner)) + var/mob/living/living_owner = owner + liq_gen_resources = living_owner.nutrition_percent() // liquid belly options var/list/belly_liquid_data = list( "show_liq" = selected.show_liquids, + "liq_gen_resources" = liq_gen_resources, "liq_interacts" = compile_liquid_interact_data(selected) ) selected_list["belly_liquid_data"] = belly_liquid_data diff --git a/code/modules/vore/eating/panel_databackend/vorepanel_vore_subdata.dm b/code/modules/vore/eating/panel_databackend/vorepanel_vore_subdata.dm index f7de689f59..7d72ec846f 100644 --- a/code/modules/vore/eating/panel_databackend/vorepanel_vore_subdata.dm +++ b/code/modules/vore/eating/panel_databackend/vorepanel_vore_subdata.dm @@ -717,6 +717,7 @@ "liq_reagent_transfer_verb" = selected.reagent_transfer_verb, "liq_reagent_nutri_rate" = selected.gen_time, "liq_reagent_capacity" = selected.custom_max_volume, + "liq_gen_cost_limit" = selected.reagent_gen_cost_limit, "liq_sloshing" = selected.vorefootsteps_sounds, "liq_reagent_addons" = liquid_addon_list, "custom_reagentcolor" = (selected.custom_reagentcolor ? selected.custom_reagentcolor : selected.reagentcolor), diff --git a/tgui/packages/tgui/interfaces/RobotSleeper/SubElements/SleeperStatusElements/SleeperPatient.tsx b/tgui/packages/tgui/interfaces/RobotSleeper/SubElements/SleeperStatusElements/SleeperPatient.tsx index 610001f3fe..dbc132a2cc 100644 --- a/tgui/packages/tgui/interfaces/RobotSleeper/SubElements/SleeperStatusElements/SleeperPatient.tsx +++ b/tgui/packages/tgui/interfaces/RobotSleeper/SubElements/SleeperStatusElements/SleeperPatient.tsx @@ -34,27 +34,27 @@ export const SleeperPatient = (props: { name: string }) => { 0 ? undefined : 'red'}> - {`- Overall Health: ${((100 * our_patient.health) / our_patient.max_health).toFixed(0)}`} + {`- Overall Health: ${((100 * our_patient.health) / our_patient.max_health).toFixed()}`} - {`- Brute Damage: ${our_patient.brute.toFixed(0)}`} + {`- Brute Damage: ${our_patient.brute.toFixed()}`} - {`- Respiratory Damage: ${our_patient.oxy.toFixed(0)}`} + {`- Respiratory Damage: ${our_patient.oxy.toFixed()}`} - {`- Toxin Content: ${our_patient.tox.toFixed(0)}`} + {`- Toxin Content: ${our_patient.tox.toFixed()}`} - {`- Burn Severity: ${our_patient.burn.toFixed(0)}`} + {`- Burn Severity: ${our_patient.burn.toFixed()}`} {(isParalysed || diff --git a/tgui/packages/tgui/interfaces/VorePanel/VoreSelectedBellyTabs/LiquidTab/LiquidOptionsRight.tsx b/tgui/packages/tgui/interfaces/VorePanel/VoreSelectedBellyTabs/LiquidTab/LiquidOptionsRight.tsx index a64d161624..2846220b71 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VoreSelectedBellyTabs/LiquidTab/LiquidOptionsRight.tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VoreSelectedBellyTabs/LiquidTab/LiquidOptionsRight.tsx @@ -16,6 +16,7 @@ export const LiquidOptionsRight = (props: { liq_reagent_transfer_verb, liq_reagent_nutri_rate, liq_reagent_capacity, + liq_gen_cost_limit, liq_custom_name_max, liq_custom_name_min, max_liquid_level, @@ -39,6 +40,18 @@ export const LiquidOptionsRight = (props: { tooltip="Choose the amount of liquid the belly can contain at most. Ranges from 10 to 300." /> + + + @@ -90,7 +90,16 @@ export const VoreSelectedBellyLiquidOptions = (props: { -
+
+ + {`Nutrition / Power: ${liq_gen_resources.toFixed()} %`} + + + } + title="Current Liquids" + > {liq_interacts.current_reagents .sort((a, b) => a.volume - b.volume) diff --git a/tgui/packages/tgui/interfaces/VorePanel/types.ts b/tgui/packages/tgui/interfaces/VorePanel/types.ts index 536ae3e39d..71d6f3904b 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/types.ts +++ b/tgui/packages/tgui/interfaces/VorePanel/types.ts @@ -213,6 +213,7 @@ export type ContentData = { export type BellyLiquidData = { show_liq: BooleanLike; + liq_gen_resources: number; liq_interacts: LiqInteractData; }; @@ -279,6 +280,7 @@ export type LiqInteractData = { liq_reagent_transfer_verb: string; liq_reagent_nutri_rate: number; liq_reagent_capacity: number; + liq_gen_cost_limit: number; liq_sloshing: BooleanLike; liq_reagent_addons: CheckBoxEntry[]; custom_reagentcolor: string; diff --git a/tgui/packages/tgui/interfaces/VorePanelExport/VorePanelExportBellyString.tsx b/tgui/packages/tgui/interfaces/VorePanelExport/VorePanelExportBellyString.tsx index 773eb4628c..4f38b962ca 100644 --- a/tgui/packages/tgui/interfaces/VorePanelExport/VorePanelExportBellyString.tsx +++ b/tgui/packages/tgui/interfaces/VorePanelExport/VorePanelExportBellyString.tsx @@ -199,6 +199,7 @@ export const generateBellyString = (belly: Belly, index: number) => { reagent_transfer_verb, gen_time_display, custom_max_volume, + reagent_gen_cost_limit, vorefootsteps_sounds, reagent_mode_flag_list, liquid_overlay, @@ -847,6 +848,10 @@ export const generateBellyString = (belly: Belly, index: number) => { { label: 'Transfer Verb', value: reagent_transfer_verb }, { label: 'Generation Time', value: gen_time_display }, { label: 'Liquid Capacity', value: custom_max_volume }, + { + label: 'Generation Limit (Nutrition / Charge) %', + value: reagent_gen_cost_limit, + }, ]; result += formatListItems(liquidItems); diff --git a/tgui/packages/tgui/interfaces/VorePanelExport/types.ts b/tgui/packages/tgui/interfaces/VorePanelExport/types.ts index 5efa3590d0..38e2804b5d 100644 --- a/tgui/packages/tgui/interfaces/VorePanelExport/types.ts +++ b/tgui/packages/tgui/interfaces/VorePanelExport/types.ts @@ -189,6 +189,7 @@ export type Belly = { // Liquid Options show_liquids: BooleanLike; reagentbellymode: BooleanLike; + reagent_gen_cost_limit: number; reagent_chosen: string; reagent_name: string; reagent_transfer_verb: string; diff --git a/tgui/packages/tgui/interfaces/VotePanel.tsx b/tgui/packages/tgui/interfaces/VotePanel.tsx index 523301acd9..94a398d6bd 100644 --- a/tgui/packages/tgui/interfaces/VotePanel.tsx +++ b/tgui/packages/tgui/interfaces/VotePanel.tsx @@ -20,7 +20,7 @@ export const VotePanel = (props, context) => {
- Time remaining: {remaining.toFixed(0)}s + Time remaining: {remaining.toFixed()}s {choices.map((choice, i) => (