From 3094546f8e6e0c330a77ea7f40cc519b3c3dbff2 Mon Sep 17 00:00:00 2001 From: Geeves Date: Sun, 22 Nov 2020 11:56:07 +0200 Subject: [PATCH] Gas Clouds (#10579) --- code/ZAS/Turf.dm | 4 ++-- code/defines/gases.dm | 2 +- code/modules/xgm/xgm_gas_data.dm | 32 +++++++++++++++++++++---- html/changelogs/geeves-gas_overlay.yml | 6 +++++ icons/effects/tile_effects.dmi | Bin 1037 -> 4874 bytes 5 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 html/changelogs/geeves-gas_overlay.yml diff --git a/code/ZAS/Turf.dm b/code/ZAS/Turf.dm index d8f04b55a00..35926a93285 100644 --- a/code/ZAS/Turf.dm +++ b/code/ZAS/Turf.dm @@ -6,9 +6,9 @@ /turf/simulated/proc/update_graphic(list/graphic_add = null, list/graphic_remove = null) if (LAZYLEN(graphic_add)) - add_overlay(graphic_add.Copy(), TRUE) // We need to copy because SSoverlay will mutate this list & add appearance objects. + vis_contents += graphic_add if(LAZYLEN(graphic_remove)) - cut_overlay(graphic_remove.Copy(), TRUE) + vis_contents -= graphic_remove /turf/proc/update_air_properties() var/block diff --git a/code/defines/gases.dm b/code/defines/gases.dm index 7c20f5e910c..39cc9ada196 100644 --- a/code/defines/gases.dm +++ b/code/defines/gases.dm @@ -31,7 +31,7 @@ //and following a N/Z ratio of 1.5, the molar mass of a monatomic gas is: molar_mass = 0.405 // kg/mol - tile_overlay = "plasma-purple" + tile_overlay = "phoron" overlay_limit = 0.7 flags = XGM_GAS_FUEL | XGM_GAS_CONTAMINANT diff --git a/code/modules/xgm/xgm_gas_data.dm b/code/modules/xgm/xgm_gas_data.dm index 75785bf20fd..9123a272daa 100644 --- a/code/modules/xgm/xgm_gas_data.dm +++ b/code/modules/xgm/xgm_gas_data.dm @@ -9,8 +9,10 @@ var/list/specific_heat = list() //Molar mass of the gas. Used for calculating specific entropy. var/list/molar_mass = list() - //Tile overlays. /images, created from references to 'icons/effects/tile_effects.dmi' + //Tile overlays. /obj/effect/gas_overlay, created from references to 'icons/effects/tile_effects.dmi' var/list/tile_overlay = list() + //Optional color for tile overlay + var/list/tile_overlay_color = list() //Overlay limits. There must be at least this many moles for the overlay to appear. var/list/overlay_limit = list() //Flags. @@ -22,7 +24,8 @@ var/specific_heat = 20 // J/(mol*K) var/molar_mass = 0.032 // kg/mol - var/tile_overlay = null + var/tile_overlay = "generic" + var/tile_color = null var/overlay_limit = null var/flags = 0 @@ -39,8 +42,29 @@ gas_data.name[gas.id] = gas.name gas_data.specific_heat[gas.id] = gas.specific_heat gas_data.molar_mass[gas.id] = gas.molar_mass - if(gas.tile_overlay) gas_data.tile_overlay[gas.id] = image('icons/effects/tile_effects.dmi', gas.tile_overlay, FLY_LAYER) - if(gas.overlay_limit) gas_data.overlay_limit[gas.id] = gas.overlay_limit + if(gas.overlay_limit) + gas_data.overlay_limit[gas.id] = gas.overlay_limit + var/obj/effect/gas_overlay/I = new() + if(gas.tile_overlay) + I.icon_state = gas.tile_overlay + if(gas.tile_color) + gas_data.tile_overlay_color[gas.id] = gas.tile_color + I.color = gas.tile_color + gas_data.tile_overlay[gas.id] = I gas_data.flags[gas.id] = gas.flags return 1 + +/obj/effect/gas_overlay + name = "gas" + desc = "You shouldn't be clicking this." + icon = 'icons/effects/tile_effects.dmi' + icon_state = "generic" + layer = LIGHTING_LAYER - 1 + appearance_flags = RESET_COLOR + mouse_opacity = 0 + +/obj/effect/gas_overlay/Initialize() + . = ..() + animate(src, alpha = 175, time = 10, easing = SINE_EASING | EASE_OUT, loop = -1) + animate(alpha = 255, time = 10, easing = SINE_EASING | EASE_IN, loop = -1) \ No newline at end of file diff --git a/html/changelogs/geeves-gas_overlay.yml b/html/changelogs/geeves-gas_overlay.yml new file mode 100644 index 00000000000..b0099d52808 --- /dev/null +++ b/html/changelogs/geeves-gas_overlay.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Updated the look of some gasses hanging in the air." \ No newline at end of file diff --git a/icons/effects/tile_effects.dmi b/icons/effects/tile_effects.dmi index b08f1ac3dec4260d1200bda68f537cb05f1d28bc..dd06df99d70ba65d08e85cd31c390ac77e52d808 100644 GIT binary patch literal 4874 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 w?85WxaHD=WDAxqy8L0PN90l3mmD zaR2}U_en%SR9J<@RLgPeFbsq#nUZ{RUIm;~;1X1VFUgswoLz!Sa0$Mq%O{9GECo5% zWad50nC24T?(!!h5r_Hb-iVq2jpO#x&Iw0`yRl3l&Qbs^m6Ax%>c~K$kwpzTM3Ch; zvyuU9sw|B}e~6iyz`~}_p&-yB65&QL)j%>MFm*ABhWEu}T0oY@m7m%xS^yT z?1*#&S&7mSbHag$i+(j!$C$arxo0#|bsx59WLDmbr4M(gLaETmj7ct*9->rb%5J#S zZQ~D+L#Zs%h_*(nb>ays=jn14_uM&j#v(6}JD2A(Dq?s!1-ghzlG%|ewD!x%GfYCX zj1;cr-X4nhJ4q{yO!`oayg2cCn@G|qC_8J#-QWBU%-d$fS=5n71X+$ND_Ov{%F;yiNzBv*7B+ni1%V!s2tR?T z4w4yxshdqSye~G>0-A)>u@>Ekk6LWQ4JGwpN2EK*N|cV66COl-^sAvdrpztQJ)?=L z`>;hLv+`aneYisvN`+QtY;v*m5Tz6f3QQAiVMt>jDu|7&?M| zL_R9n6>qwNVG^Qcq;M_w_E^NfNLpcJ(}!Z>#fjJ3MUqZI z*;y~{{^oaJ-Zm>I)e#)r