diff --git a/code/defines/obj/window.dm b/code/defines/obj/window.dm index 003aeb1efdd..c935680056a 100644 --- a/code/defines/obj/window.dm +++ b/code/defines/obj/window.dm @@ -7,6 +7,8 @@ var/ini_dir = null var/state = 0 var/reinf = 0 + var/silicate = 0 // number of units of silicate + var/icon/silicateIcon = null // the silicated icon pressure_resistance = 4*ONE_ATMOSPHERE anchored = 1.0 flags = ON_BORDER diff --git a/code/game/objects/window.dm b/code/game/objects/window.dm index 2dddb1234a1..368795a2ec7 100644 --- a/code/game/objects/window.dm +++ b/code/game/objects/window.dm @@ -228,6 +228,8 @@ src.dir = turn(src.dir, 90) + updateSilicate() + update_nearby_tiles(need_rebuild=1) src.ini_dir = src.dir @@ -246,11 +248,26 @@ src.dir = turn(src.dir, 270) + updateSilicate() + update_nearby_tiles(need_rebuild=1) src.ini_dir = src.dir return +/obj/window/proc/updateSilicate() + if(silicateIcon && silicate) + src.icon = initial(icon) + + var/icon/I = icon(icon,icon_state,dir) + + var/r = (silicate / 100) + 1 + var/g = (silicate / 70) + 1 + var/b = (silicate / 50) + 1 + I.SetIntensity(r,g,b) + icon = I + silicateIcon = I + /obj/window/New(Loc,re=0) ..() diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index addc581339e..e381cd29a67 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -453,10 +453,30 @@ datum reaction_obj(var/obj/O, var/volume) src = null if(istype(O,/obj/window)) - O:health = O:health * 2 - var/icon/I = icon(O.icon,O.icon_state,O.dir) - I.SetIntensity(1.15,1.50,1.75) - O.icon = I + if(O:silicate <= 200) + + O:silicate += volume + O:health += volume * 3 + + if(!O:silicateIcon) + var/icon/I = icon(O.icon,O.icon_state,O.dir) + + var/r = (volume / 100) + 1 + var/g = (volume / 70) + 1 + var/b = (volume / 50) + 1 + I.SetIntensity(r,g,b) + O.icon = I + O:silicateIcon = I + else + var/icon/I = O:silicateIcon + + var/r = (volume / 100) + 1 + var/g = (volume / 70) + 1 + var/b = (volume / 50) + 1 + I.SetIntensity(r,g,b) + O.icon = I + O:silicateIcon = I + return oxygen