From c64999550631a4eccd3eaed03d1dcba81c69dc55 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 26 Oct 2022 05:47:47 +0200 Subject: [PATCH] [MIRROR] [NO GBP] Fixes blindness icons on lower station z-levels [MDB IGNORE] (#17170) * [NO GBP] Fixes blindness icons on lower station z-levels (#70608) I previously tested that footsteps worked when hearing them from a lower Z-level but forgot to test if you can see them while on a lower z-level. It didn't occur to me that offsetted planecube planes wouldn't work with being over the fullscreen blindness mask past the top level but that makes sense in retrospect. So the blindness effects (via play_fov_effect()) are now on the fullscreen plane. Partially reverted doing this with manually talking bubbles as well so they look normal again, and then added a FOV effect as well for chat bubbles. NOTE: Runetext is in general also only above the blind mask on the highest station level and below on others for the same planecube issue but that's a whole other can of worms. * [NO GBP] Fixes blindness icons on lower station z-levels Co-authored-by: Tastyfish --- code/__DEFINES/layers.dm | 10 ++++------ code/_onclick/hud/rendering/plane_master.dm | 8 -------- .../hud/rendering/plane_master_controller.dm | 1 - code/modules/mob/living/living_fov.dm | 5 ++--- code/modules/tgui_input/say_modal/typing.dm | 6 ++++-- icons/effects/fov/fov_effects.dmi | Bin 3532 -> 3658 bytes 6 files changed, 10 insertions(+), 20 deletions(-) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 930aaaa67fa..cca6686e99c 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -66,9 +66,6 @@ #define FULLSCREEN_PLANE 23 -///Visuals that represent sounds happening, and can be seen while blind. -#define SOUND_EFFECT_VISUAL_PLANE 25 - ///--------------- FULLSCREEN RUNECHAT BUBBLES ------------ ///Popup Chat Messages @@ -213,10 +210,11 @@ #define CRIT_LAYER 5 #define CURSE_LAYER 6 -///--------------- SOUND EFFECT VISUALS ------------ +#define FOV_EFFECT_LAYER 100 + +///--------------- FULLSCREEN RUNECHAT BUBBLES ------------ /// Bubble for typing indicators -#define TYPING_LAYER 1 -#define FOV_EFFECTS_LAYER 2 //Blindness effects are not layer 4, they lie to you +#define TYPING_LAYER 500 #define RADIAL_BACKGROUND_LAYER 0 ///1000 is an unimportant number, it's just to normalize copied layers diff --git a/code/_onclick/hud/rendering/plane_master.dm b/code/_onclick/hud/rendering/plane_master.dm index 4a163a6e347..f0c1c99a9b7 100644 --- a/code/_onclick/hud/rendering/plane_master.dm +++ b/code/_onclick/hud/rendering/plane_master.dm @@ -507,14 +507,6 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/plane_master) mouse_opacity = MOUSE_OPACITY_TRANSPARENT allows_offsetting = FALSE -/atom/movable/screen/plane_master/sound_effect_visual - name = "Sound Effect Visuals" - documentation = "Holds anything that is a game visual, but is displayed over fullscreen effects. \ -
Displayed over fullscreen effects, but still under runechat and the HUD." - plane = SOUND_EFFECT_VISUAL_PLANE - render_relay_planes = list(RENDER_PLANE_NON_GAME) - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - /atom/movable/screen/plane_master/runechat name = "Runechat" documentation = "Holds runechat images, that text that pops up when someone say something. Uses a dropshadow to well, look nice." diff --git a/code/_onclick/hud/rendering/plane_master_controller.dm b/code/_onclick/hud/rendering/plane_master_controller.dm index 71e0032e908..58fc1bb9963 100644 --- a/code/_onclick/hud/rendering/plane_master_controller.dm +++ b/code/_onclick/hud/rendering/plane_master_controller.dm @@ -117,7 +117,6 @@ INITIALIZE_IMMEDIATE(/atom/movable/plane_master_controller) PIPECRAWL_IMAGES_PLANE, HIGH_GAME_PLANE, FULLSCREEN_PLANE, - SOUND_EFFECT_VISUAL_PLANE, RUNECHAT_PLANE, HUD_PLANE, ABOVE_HUD_PLANE, diff --git a/code/modules/mob/living/living_fov.dm b/code/modules/mob/living/living_fov.dm index a0d9cf34b39..e5b98f8eeb8 100644 --- a/code/modules/mob/living/living_fov.dm +++ b/code/modules/mob/living/living_fov.dm @@ -89,9 +89,9 @@ //did you know you can subtype /image and /mutable_appearance? // Stop telling them that they might actually do it /image/fov_image icon = 'icons/effects/fov/fov_effects.dmi' - layer = FOV_EFFECTS_LAYER + layer = EFFECTS_LAYER + FOV_EFFECT_LAYER appearance_flags = RESET_COLOR | RESET_TRANSFORM - plane = SOUND_EFFECT_VISUAL_PLANE + plane = FULLSCREEN_PLANE /// Plays a visual effect representing a sound cue for people with vision obstructed by FOV or blindness /proc/play_fov_effect(atom/center, range, icon_state, dir = SOUTH, ignore_self = FALSE, angle = 0, list/override_list) @@ -110,7 +110,6 @@ if(!fov_image) //Make the image once we found one recipient to receive it fov_image = new() fov_image.loc = anchor_point - SET_PLANE(fov_image, SOUND_EFFECT_VISUAL_PLANE, anchor_point) fov_image.icon_state = icon_state fov_image.dir = dir if(angle) diff --git a/code/modules/tgui_input/say_modal/typing.dm b/code/modules/tgui_input/say_modal/typing.dm index 082f01278e2..13f0055d0a0 100644 --- a/code/modules/tgui_input/say_modal/typing.dm +++ b/code/modules/tgui_input/say_modal/typing.dm @@ -77,8 +77,9 @@ /mob/living/create_thinking_indicator() if(active_thinking_indicator || active_typing_indicator || !thinking_IC || stat != CONSCIOUS ) return FALSE - active_thinking_indicator = mutable_appearance('icons/mob/effects/talk.dmi', "[bubble_icon]3", TYPING_LAYER, src, SOUND_EFFECT_VISUAL_PLANE) + active_thinking_indicator = mutable_appearance('icons/mob/effects/talk.dmi', "[bubble_icon]3", TYPING_LAYER) add_overlay(active_thinking_indicator) + play_fov_effect(src, 6, "talk", ignore_self = TRUE) /mob/living/remove_thinking_indicator() if(!active_thinking_indicator) @@ -89,8 +90,9 @@ /mob/living/create_typing_indicator() if(active_typing_indicator || active_thinking_indicator || !thinking_IC || stat != CONSCIOUS) return FALSE - active_typing_indicator = mutable_appearance('icons/mob/effects/talk.dmi', "[bubble_icon]0", TYPING_LAYER, src, SOUND_EFFECT_VISUAL_PLANE) + active_typing_indicator = mutable_appearance('icons/mob/effects/talk.dmi', "[bubble_icon]0", TYPING_LAYER) add_overlay(active_typing_indicator) + play_fov_effect(src, 6, "talk", ignore_self = TRUE) /mob/living/remove_typing_indicator() if(!active_typing_indicator) diff --git a/icons/effects/fov/fov_effects.dmi b/icons/effects/fov/fov_effects.dmi index d5b7de38a4572fe9a6b36ffe80a13631e7035192..2ba9d11f5795de2c32c7ec21dd328f65f27ce1e6 100644 GIT binary patch literal 3658 zcmchacT`j9y2ihR5{h&f!bl)!KzcEN6fqGI5fm9f0TDtOKoIFgY1yb3Q7H~6CDI%z zB1nA(fgnvFHn~L+AZ?Kcos(ojax~lq}BNAj?uDgXFF&E&Oaoh%R!d;!2sksCoYK%;ECZ(r2JTUJU z=Z}iRq&>hWcpdD~G&$VS54x2!PlO~qt`^aqF&7OEK$>swj^y_XI z$+8=x=1^PGkzQ9;nkYd47Ze|GL2?1j1UNvN!oa>K0L1+SK!+lLTzk1D^^yqm z6K&!K(@|N6*sHb{HWd~{b%n(0aH(b&GQmV{dIUKs4p{nndbG{R;+f*hqP}X<^ z=FY2EB`@IKOA2Mkr9s#uGcWC{Jja?ojc}OtwuTqFR%u*V^XwFyHuah?9Hyz7>FPv8A$G5vSrDS_vTx(yjvO6un_Q}Rdgyn&wKq0Sc>i=^JHuTHAP#wTD; z^IZLpcOXmOR@9+&;^ZuVb5^alneduaBSN!DEk}Ys)U&R$%5BVHC>j8|Ym*HCGi--_ z$0!ckHUAIF|I2F~NoYnd=lyN6OIg2Op@H$wwj4c#B!Nay-2?|u*=#{RP;C9=b^RC zHxILRwCvp0_ckY4&6CwVnlbQFq)i5drB?jPp-%{?@@f#r!7d~yooUZ>uOEr^bpV%k zH8(zMIlO2D^;@osf4GmF-xNi&kvqPjm0GO!iCMH~J_@XKNdMqJRKuG=ie5g`;W_bp zfvNBjgPrlrxZY!T3MgTZAeFmk)j#(1wn|jiIQ--rq~+zeahm)QS@Hh}o%T9Vx-E!k zYQzU>Lllgp08T%liJ+9F`@GRSt7B09!M*6whBO$#-B48YA!T}7KaODgisCL(zN za6A+}QioAAI_IVV!NERT^Y??Q^l-!!DyeuOsa*-6(GQyoJn)MKDMdgW;Jcn4#CIQP z7X@SW>$<(?##M5cW6mK!C_P4nZbq6YFhf8-4OL6DnXNpXuP6hcJ+)N7Y0Q2&)i{WI zF}+kD`6~zhAvd3@@n*TaK0g-XnUgaSz0H9)rABmbhOK-it60_lAA^)h!%< zU>nvsh)8K^A-3hR>9(lxL&0pi{sWn77?#dx4t(nl>)O#AyCkkJU+=K?m_#T2wCt;+ zFi`LJ2rgW^Jy$CGdQX*?uJkYN!-b&UL}-ZVwYrmBC0&0geSWHubtZ-tn8tCnc9f&5 zcLl>@&VCbOOcw>Eeivf%!Jm56E&$7L9G8oJYWSuN?!d5x)^i)Ed@ z3ilZt$RuwZ#rTfGE{DIKwDSrwh&9T_ZvByYsZoqp%h6w^^K~rPrcQ4FwpjF!(jttF zS+4j)qI~0wtaltWt8xKf_diACiN9)9C^~9qe(i3%jNASP#pI2LqRzkaSOIPoc|X6? zRuM9huZs-@QLmwtiJ>%e!y%%lyjQ{=!Pd?x|E${CwCEO&~-Ii;+ znwAEuTrkUlTLI2Q19(2qqW7Rk-p?ZS)rj^&TT*Vb-LVO#^Oe=$g{yzvcp%!htH)7Z zD@_x34O2dbE9r)UKTQyj{-H1XDpiJxc;3CN9S)jNL%QQhks1WYoUD-tZdJd>4Hgb2 z^eT5fr31Haryb;mqy>G1nkV@Pnt!P0)mOGhvI>y2}XdM3rgjNb8+xsjVD+;B zhQ0pfA<{0rq1Z9&6F~nL9F2L{Txk-%d$4yU0~>~N;pBrL8n=gXWpu%|0Uj zY_T@(dU;gqj#0OelHJ}F&38o)Gk$w~-Ue~sa5Tv%NeF|h_MwAohUx*be*x#C*@Pm5 zzcB{$WCgSfG8_(%3zdKdg=RS`(&>WGBU^|W$fk~r{NAPh<80As*)J@cG_xfUxy!f~ zl`C>2VMZoBDKT>7R}M4z_r8A8D%9ze_t9B1W{IbKvP#;7_@>)blUUl@q|tF+WGm9M z2ddG)6IF{H91rX{NbeHLDG7;F%`wQx5Y++(Vcgy5c4xbhuF~E>Wa&@^vYr}IR(BE> z-?Cye5pd^LN%U`D`xv-WhvkA91!bsva?E8LVb;Ln@*$=Jl5>VgVlwk_{3jMdt1O_w z1Zf6o=EAd8J`QrG~UedUx}AA^`R7JCwd-gGwHEjojn##zHH+kDsMZZw*Ubitx4~ z{Z_6n@NAjma%Ldrk0e*yh2@g#THCUA(?yi3ZPlY*>ojrl1pQd-$NjNBtz9a7ou#RF z9%{TGy%aTkk>%mxE6>1<$!hBF742}CllY-Hb+jjCU-9|`J+&F8Sa&E;Ior%vn$^kb zA`=C1{#Lt(SO>*eI=jv9LraoiSDbA{sm?7!(lvrIf!X6%)^j&l0_xw28~wV(*f+aQ~Bi>8@0_k+E9F*Y)U-L3KfrUjK) z^cgN3bKI-E#*LBh54=&ygX=ZwM%HRyONZiaY`u~Htuz`MOv&?*&GY6Jmg%0=buw+e ztfO$k;&%VQ-fhBMTBVr`S8dqIC-hExX_mindK%1iHQ8Qwi`VHQ_pNT+2V{SnNLP9N z)DhEd9@T^fb7duFrIVCbpXmj?{pRw{K4R)oy9x}Pe2kBnX4EBRhRq{rYNlp~D}7u* zuY@bP<*B@K^s8$=DcXyqGO}U0U4$i)W&WO|)!7quRyBbTEs7Rz+s2^1?$vQn&FWeT zXbo-Y7xx~J(|)!lBoA|)a@}1Vy?Kb-*J@P%u9nM1r(3G+NZ8`_iyLS1#JKQK9C<*K zd;SzVQIAgFz5%~~{BPNMD>wF*G?kJ2egY?xtnrdD!N(x-P+1P~xy&6HgD5`TcA7H5 zg@PdK)uCf^#=CVQeGS5_x%jzD@ho?8uxcLI_b!DddNNPGQvNR9!p%ZFHjP}!o-JVD zTWtRpDE+v8uxhGJH{gBhG-{E}Iasz-Usn!hzirRg@Z;=o>VCxfV- z#Hu~q`a>@YQh_fMnkQVf0+JJ@X=QFzte&5fd-t%ZM!GwFXEtby=Ux<@mxO44Ze@zV zRYHu2z1G0aNtezu%aXAY*cJk(*3t<^=5%Nx4C12UMgMiTsZZ*GlHgg63U{x}@|md+6=brHC2B0zu1EDpi^NX*ZX zG?c49j0ZuDbPf<8G-d&kSP;{R9rD$9&0<`H&RT$?>V1=EjoXjCK;c#YR2y?FkFY7k z>8;NT@&@`@k`NiO@iLi{W8Vy0k$>ivzvb`6Hk-NJ15OhAp0j@r!ReEhCS}GhH~t%& CUBz_( literal 3532 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