From 2e243b18844abc4556ba48344aaf8c858a27e5ca Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:19:00 -0700 Subject: [PATCH] [MIRROR] Posing buffs (#11596) Co-authored-by: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- .../mob/living/carbon/carbon_defines.dm | 2 + code/modules/mob/living/carbon/human/emote.dm | 73 +++++++++++++++++- .../mob/living/carbon/human/human_movement.dm | 5 ++ icons/mob/status_indicators.dmi | Bin 1824 -> 1838 bytes vorestation.dme | 2 +- 5 files changed, 80 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 0cbbfaa151..f19fa02ab0 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -14,6 +14,8 @@ var/datum/surgery_status/op_stage = new/datum/surgery_status //Active emote/pose var/pose = null + var/pose_move = FALSE + var/image/pose_indicator var/list/chem_effects = list() var/datum/reagents/metabolism/bloodstream/bloodstr = null var/datum/reagents/metabolism/ingested/ingested = null diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 36e82f79af..99bf1a5531 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -369,7 +369,78 @@ var/list/_simple_mob_default_emotes = list( var/datum/gender/T = GLOB.gender_datums[get_visible_gender()] - pose = strip_html_simple(tgui_input_text(src, "This is [src]. [T.he]...", "Pose", null)) + var/new_pose + var/quiet_pose = FALSE + var/include_icon = TRUE + var/list/pose_options = list() + + new_pose = strip_html_simple(tgui_input_text(src, "This is [src]. [T.he]...", "Pose", null)) + if(!new_pose) + pose = null + remove_pose_indicator() + return + + if(!read_preference(/datum/preference/toggle/tgui_input_mode)) + var/movement_test = tgui_alert(src, "Cancel Pose On Movement?", "Options", list("No", "Cancel Pose on Movement")) + if(!movement_test) + return + var/icon_test = tgui_alert(src, "Disable Posing Icon?", "Options", list("No", "Disable Pose Icon")) + if(!icon_test) + return + var/quiet_test = tgui_alert(src, "Allow Pose To Be Announced In Chat?", "Options", list("Yes", "Quiet Pose")) + if(!quiet_test) + return + pose_options |= movement_test + pose_options |= icon_test + pose_options |= quiet_test + else + pose_options = tgui_input_checkboxes(src, "Which options would you like to enable for your poses?", "Pose Options", list("Cancel Pose on Movement", "Disable Pose Icon", "Quiet Pose"), 0) + + pose_move = FALSE + for(var/o in pose_options) + if(o == "Cancel Pose on Movement") + pose_move = TRUE + if(o == "Disable Pose Icon") + include_icon = FALSE + if(o == "Quiet Pose") + quiet_pose = TRUE + + if(include_icon) + add_pose_indicator() + else + remove_pose_indicator() + + pose = new_pose + if(!quiet_pose) + visible_message("[src] [pose]") + +/mob/living/carbon/human/proc/add_pose_indicator() + if(pose_indicator) + return //No duplicating + + var/image/pose_icon = image(icon = 'icons/mob/status_indicators.dmi', icon_state = "posing") + + var/our_sprite_x = icon_expected_width * get_icon_scale_x() + + var/x_offset = our_sprite_x - 11 + var/y_offset = 2 + + pose_icon.plane = PLANE_STATUS + pose_icon.layer = HUD_LAYER + pose_icon.appearance_flags = PIXEL_SCALE|TILE_BOUND|RESET_ALPHA|RESET_TRANSFORM + pose_icon.color = chat_color + pose_icon.pixel_y = y_offset + pose_icon.pixel_x = x_offset + + pose_indicator = pose_icon + add_overlay(pose_indicator) + +/mob/living/carbon/human/proc/remove_pose_indicator() + if(!pose_indicator) + return + + cut_overlay(pose_indicator) + pose_indicator = null /mob/living/carbon/human/verb/set_flavor() set name = "Set Flavour Text" diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 8ece68a364..96aecb3394 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -131,6 +131,11 @@ if(embedded_flag) handle_embedded_objects() //Moving with objects stuck in you can cause bad times. + if(pose && pose_move) //clear pose on movement if choosing to + pose = null + pose_move = FALSE + remove_pose_indicator() + // This calculates the amount of slowdown to receive from items worn. This does NOT include species modifiers. // It is in a seperate place to avoid an infinite loop situation with dragging mobs dragging each other. // Also its nice to have these things seperated. diff --git a/icons/mob/status_indicators.dmi b/icons/mob/status_indicators.dmi index 4456425112bae5f7983e232f1dbaa39bee79b8e4..c5e9a6b5bbfee83a7e3f043c94ce2a89580cdf47 100644 GIT binary patch delta 1680 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 M07*qoM6N<$g4G#EZvX%Q diff --git a/vorestation.dme b/vorestation.dme index a280bfadb8..c18bed1ad7 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3010,12 +3010,12 @@ #include "code\modules\instruments\songs\play_synthesized.dm" #include "code\modules\integrated_electronics\_defines.dm" #include "code\modules\integrated_electronics\core\assemblies.dm" +#include "code\modules\integrated_electronics\core\circuit_serialization.dm" #include "code\modules\integrated_electronics\core\detailer.dm" #include "code\modules\integrated_electronics\core\helpers.dm" #include "code\modules\integrated_electronics\core\integrated_circuit.dm" #include "code\modules\integrated_electronics\core\pins.dm" #include "code\modules\integrated_electronics\core\printer.dm" -#include "code\modules\integrated_electronics\core\circuit_serialization.dm" #include "code\modules\integrated_electronics\core\tools.dm" #include "code\modules\integrated_electronics\core\assemblies\circuit_bug.dm" #include "code\modules\integrated_electronics\core\assemblies\clothing.dm"