From 7a43642cbebc23b1d919e9faf58d9b3f9a4f86e6 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Mon, 20 Apr 2020 17:16:11 -0400 Subject: [PATCH 1/4] New tank sprites and foam tank --- code/modules/reagents/reagent_dispenser.dm | 27 +++++++++++++++++++-- icons/obj/items_vr.dmi | Bin 5259 -> 6665 bytes icons/obj/objects_vr.dmi | Bin 851 -> 3100 bytes 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 5932604209c..107402fc6b6 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -69,7 +69,7 @@ /obj/structure/reagent_dispensers/watertank name = "watertank" desc = "A watertank." - icon = 'icons/obj/objects.dmi' + icon = 'icons/obj/objects_vr.dmi' //VOREStation Edit icon_state = "watertank" amount_per_transfer_from_this = 10 @@ -89,7 +89,7 @@ /obj/structure/reagent_dispensers/fueltank name = "fueltank" desc = "A fueltank." - icon = 'icons/obj/objects.dmi' + icon = 'icons/obj/objects_vr.dmi' //VOREStation Edit icon_state = "weldtank" amount_per_transfer_from_this = 10 var/modded = 0 @@ -99,6 +99,29 @@ . = ..() reagents.add_reagent("fuel",1000) +//VOREStation Add +/obj/structure/reagent_dispensers/fueltank/high + name = "high-capacity fuel tank" + desc = "A highly-pressurized fuel tank made to hold vast amounts of fuel." + icon_state = "weldtank_high" + +/obj/structure/reagent_dispensers/fueltank/high/Initialize() + . = ..() + reagents.add_reagent("fuel",4000) + +/obj/structure/reagent_dispensers/foam + name = "foamtank" + desc = "A foam tank." + icon = 'icons/obj/objects_vr.dmi' //VOREStation Edit + icon_state = "foamtank" + amount_per_transfer_from_this = 10 + +/obj/structure/reagent_dispensers/foam/Initialize() + . = ..() + reagents.add_reagent("firefoam",1000) +//VOREStation Add End + + /obj/structure/reagent_dispensers/fueltank/examine(mob/user) if(!..(user, 2)) return diff --git a/icons/obj/items_vr.dmi b/icons/obj/items_vr.dmi index ca82649d88380c434e50a0941c6be35a551134d5..6e31f4362465fdc47b302fdb52b672bb048b59b0 100644 GIT binary patch literal 6665 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

P~aDgCfy&kpnOpL4GTpGyws^`lGr&d9$d{4Na zugUVC4|WxC@k4OFLlDe3NwR0u!j$Hn+uQsnf&;m8q6X)H?G5tph2s$u1Tn8EudFI} z`l(bOMTvCUPuRtg0B&?gI>{?gcO+pTyBEtIU+DlUibEaIHsv{YXw2P^d@zq=J%1~9 zNpIUfgXUI_Lhy&9LE%bh&62RS)u-u!E_|Sl!`GSo_GNo|>Gy2#BCGiFNus{%X6Sxj z1e*hMe0HhG>EJ_w+*1=VNv^>fYJBcZPSCa$rnJ!SO-b3mx0n0+h_UaE8gR0X4F%{) z*GfzB4O&w5;D8xewAik$M8ua~1)35^eNXvn2*{u0J!Yq tMr(UV%9?P^5VFU#4+Og-o#7yKT-y1K)N)@TZ!vN<~EI{{X2ay-EN8 literal 5259 zcmaiYbySp3)c>w5-Q6Yq1!3t90V$DGxNY!6pNVbs-U=W3z>w&4BV&`wO^EZ0f~x|Rk8+V5EByrl#OCgI7L!0s_E6|HF$7Y! zGoG4O{E;6BDzr#d}(&fAemv5S3yo8L9{ib_VnWH*YAJ@7rV9L~4YVWA4%p z2t*sDt9k!%NCCF+In4S=-q7tyU_{~cLgjY_kGx8cXofZqE?e?`D9pFALMOc%`i+6S z^e6q3T-U^DmuY+k4^q~TEJ1NiEv}2v_-_iMnZFS>!D@XK{>##D;!%6zrW4O^n>d;M zx~+zl20d`J)Cxb14fo!g@9sW<%j^0_n!G-n?;PtoS=mw=>l_PBEBWw&l8!_uwcIeO zsiWjhIaM4Ki;lhQIB~b%esjjJv0&tZb(%N)&tomI8qI9{}d}Zz3RWaJ8zD7)Rs|tmxB{&e%T}G8Lih^>m;^=mdtVxZh zymTbJE)vnMmVk`Dp<(|nZe4NZMkYdqlPMlNqc_X(;f(;O<3w&-`(32`JJN} zyuYD(wu-lSscY0gd3Iv>;_C}I?%knJ$lpHvW`(NPxoTWdrKNWdl@Md9w`_ocAS%QV z7(~|J<1Q70>4pmFp$2R<`VxK9)~34(*KG?(tDVo*WBmpki)~<)R@x~}Wdn6|zg$FteQ6h>{m*ek$@lDIkO#mr! zcdhYlOqlcaMa=a827OLLek%IVgH;Lh{UL-G%Q%fk@#2b_i3bnVA#o)Sa)2G0LO$)Q zQwZb(hPz9V#P&wH_aF{#T_KId%#9XgWc|g})kGymIvKAzHQsZn)WuKB&VJY$vJw4+ za>P3!BX?}T5ba&tHrcT4lA18uLw^&gWHcevE|d{jQY*Xw&mrS5EZ0Idk@3l;ZS|rSl?n09eAvNsQO-UaZA09WEw0_r+nQ*6@ zFrxBC_?$UDVj8M%NQ}cv9BiTHO8-qCy#Hg^`$vbdBx@|Ywv=KUn@%F7g+u$gT$+Xw z$B@wnkT!+uF7|HpWr<{Jz_V?+oTS;t#ZFYMVX8u z%`8{tC^!&=90+YmR)1XvPLMd)LWghJZ_YbO4uemdOWNAZ^oQ?|pvp=UzLXnTyO@aN zM5ytZ3dgOlvRx@(?ni%n+P~Zte!jS9wYSth#+4`@n*8)&xhuli*?FBaYhOrl-|z=* zrH5s%&=*3o(KG6tBOW>u$17IZ&*NupXANru!U9hRPx;2} zr@ec!sUB4GiW!Y@%V*8EvSl)kQt79nXwU_Ug-!NL_DCkL%iT+I3NJ^#@*V7p&7XM3 z;uJPM1i)9~A$zBY7@|bG{-@i!zBVj|mns~+u?#!j%;J#`YbNgTl{xx^c^^9jiSqkq z$m}d?z8uWG84G`)%;hY>!|+N_e&CZpooxP>V}%#!-bR?255@Q1ls;<#_LsaXlmET! zmHg@zo!MfTu*xR)UE%EJA~F^O%PcOpAasCG#eEb#MMqefXX84FwI9yv?i^51;$gC* z-px3v_pCApmtxzVNEpbpU+?6%6SX!W+d-5!7*(doj$8WyZug|RJD}CBj4$L@2lk&( zt5vKfvw=SXn`Kd?#KyXRpQ@vrf9_Eg9{f$YEJ=8v3hSGQi8r?rpXY{Gm9H(kI*CpD z97vEAb-YFl(?uSZWgi0h!oL_9+)uE#jeVn^Y2<`1<~UTPyqbz(%oTY#sH@h8$ePFp zf8D&wj0J_iFgG{?*Ju<^u3038V6SaEK6XAd%X~?58DQ%}k%>o9$Dc+23)A&ysim!( z(Ck-W5iiyhY?9bi+~g?O&ha>kuG9$Vs^jZ$lhAX;3I5*$?_4y+HZB6DyZsD`lyaSJ zGqgD}p07Zv?K$g@Qu75Yk!g!#V>hOT%7e`!!YULA{SKB4Wc}rIa2gJQcA(g>Q>vUf zd_4k$hezm3wqN0PLu;hLCe=>>LGuQF&5~;YWJIQ_&nl?s#ZBmY>vjqr9-feE+}u$g zsaSDo=^c7{`b4cVXs&)vLBT*Wz3{4Er;)KS7%_xbJ3~@Clb8L?MU&H~ZzA&ue_?T^ z@?*QX8Om&nXRh1K#VVKo{mA&S}{4UtbE+$;3OOC-avnENlW+IjGK+6#-j?BLTrQ{OPx zzxT4OO$MZ9Xh=ywKrlWvg$Hu?^i+q#mHGMkp-^a4QWCLTp+SLiID^|*(I8+qR9d=X zKJv4m#m=MITJ4;Xmu2`fU0v06?==IxKX@ts`QbnQQ9CbXmR;@16Z*XTd}@-oh9ImJ zP}8MkWy`v|IW#mhe(&tWEWotP%^9t%t=9q+CVu{WHC1I;*77(sdQu9!8J5+Iqw~zv z-AH<3l`p>O$7kl@an|dC3Q`W^6}q$nRF2Qi#+PX$k^|fDkCboDFg^-}fXjX6_He#r z+;oj;N2F~ieQJvbQ|Ci)tES$@za#cTnMfcu?2}j+`jniUoT+;|Rz_O7q@)ClhldBv zcOyjr-8BqCRZEU7egQ@>R%?39kD(I55u`I+WKMh~r27&GFSnrrSGY<^h|9?(?(chn zdUj@N0iGyjFh+;>PAs>0{v_Z_oppO@MFn4ltx(hcOJ4LgZ#>fF(h3F2g%m{?SS^hO zTn|5wGho*3Z4v>t5r~2B;p+Vck(7&zFc^?(obbQY|00*9+2Hk40SG@Z^-pDGrB)+W z3jFjxt?GmoLYGrjT!R?>#&2ofr>Mw#SOfymza7x$)ac;i0%1sbkQ%hRyE`#C83Ukz zw{IEPl*8yAJ$eM}ZXf*gXO$jZ!6x30C1;2z@3mnG9X`>)T*)bpQz3weAQo)h2D=ZW zKpSi!rl^PmFaX%Pey?`t?a7M6ur8;7Q7BoxEh>I;(gYHF|G~+V+O!I@=O5KqB3kzt zSvEwbcfFrI>(BS@P6AL4NX^)oIzB%Ba6LsVc^!}IhGC#RVB6&EI?{)Y5WRxLopnON zDJT`&r??nNka7`Fj@`O@ex);SSU*?w7M}ktK14~BpJg5< z0|XMlm~@PcDOgEKNg*uT5I4)K%0xOfJ7p(5s=IELs#E^z@Qz-|{g%%W;`4z0{kJUUu8l+w8 zQ#a<}j{I!HEB{ROM{aU$KN&o!Gpp@j?OMVzWRXG~bz3j5BM0wD{l($#?EnXpN`v!I zS`5~Ev4xl{>!YmxvuDC}lscA7e;}kGbkrxZ1@9PA7im@=tbQT7~($^vC6+a+9x;=HG1U*;IU5SpT^3|>7J^ovWTl9P!8qbpzA6yzFua_rlPGaO zVYM^e4pM>JLjEyh8>WM+p>cw_IR_6P#n1SwMjV?FFehtGfy;X;MhIZ=$BUEm*<_L zSe`G7mY&Nm*YmT4pD6nA4sL02usvY9<)MgIf&0_m(xx#7vrd#%i2iq zK8#A~J;;ig)t;_bDHQ?l$n(0Cj|QyI!W(hi0?1(d}9y(`U6Gx2u$H4{d#ChAI`5$vvV# zI$W82?T^@*8g8`DAJI1X85yZEUgxID=>Od?8g9jzuKwD(RHZoc9%jZN#DLPo++1KO z(%HFeXRA3qhY<&UhH5xpUZLZ9C}xH=lZ zp3S!XIm09^xh>g8hz!0V6NM(!Z>x?<7_cN1^GXJ^w?&~iP z1flkKSD5ObbL8ZrP@JR~$>Yo)5*$Vh_@=M#e^TMv213t*pT%1RYBew(YjOS5>ku`y zJup5_wHKtgv%BlqzBKr|qom~i4+*<_?sWPD>$DTkpFd|}VbNQX=_m%B`zTW+!;x-N8)TzK}o04 zBO@cGnbiN}0hnTEM}ZhB`~NCRL6UW&lVy6JCS4%X#l}#1P4H8_;mJ~#Nt;a#i92d# z4kjCHF|BqLs+^hBfIn%eccxKy=(b%TKooe&K)Cux>I%%!TD==z!a0mQn3MF=4YUNM zNGb&d9!2HGuWYob&mnZ~D=?Rg3(k9*vmjT2kI>97pJAfdG}sbl@FvtOR4l zFj23A(UH8)gI=C3ZN9QqHLl|M8z=tfL}n()`g9gwy)0_EwAhsc!}DRr8o`drQ39@T zIyREHRa}^9q~I~P9cRP)_heWswz{SUs4W@*U|C#Ra%^7cfs#e2AkVDg9ia*e$v~L{ zZvQ~FLJaXNb5kd3-fhBOmT^C}(1Y&hch#A@NUc-$$6BbdXkve+vv(yvUD9gal65LI(g@IO>0#OzdZ$RdW^Lk|7&6Da^U6Y5Ak6M z3L@@1VzS_gJvtu02=5iWFZlTRt2_eypZ+=ImL5l!rU+3Oy z$Q!M}%GwA@S~rw;Xu`J6<@(lq7RCQ;M>8rm!PRQs`0DNSTh^HYm@Y@3zvHKu_^II; zRmI|UB-#nQ>}4BM<3q*AFWH@UL%=6nWp*_&;2U=`$(KaKCD{wAl&1jZY`9hFi`B{C zaQN3`+W!ahBX;`1J!$NUByDJqDSjwf*5vHsVqW(3i<_k_|3&m=^ux3DteK9>=oElT wH)9Qd~gwC9#^*GjIqK-p6gcwGePJ}}U%S9gf{AFe9|KmY&$ diff --git a/icons/obj/objects_vr.dmi b/icons/obj/objects_vr.dmi index f0cf8c8a960c3746d04b9b4580b610b0dff834c4..e8485b3638a500a462b994b1b49c2a17c8fd60d1 100644 GIT binary patch delta 3092 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 Eg0VbPTL1t6 From a2e646793663ac993af440db8a2e960c0385d739 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Mon, 20 Apr 2020 17:16:25 -0400 Subject: [PATCH 2/4] FOAAAAAAAM --- code/game/objects/effects/chem/foam.dm | 16 ++++---- code/game/objects/effects/chem/foam_vr.dm | 20 ++++++++++ code/game/objects/effects/chem/water.dm | 2 +- .../objects/items/weapons/extinguisher.dm | 8 ++-- .../modules/reagents/Chemistry-Reagents_vr.dm | 40 +++++++++++++++++++ maps/tether/tether-01-surface1.dmm | 6 +-- maps/tether/tether-05-station1.dmm | 2 +- vorestation.dme | 1 + 8 files changed, 77 insertions(+), 18 deletions(-) create mode 100644 code/game/objects/effects/chem/foam_vr.dm diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm index 5a461e15254..993cbc6edc1 100644 --- a/code/game/objects/effects/chem/foam.dm +++ b/code/game/objects/effects/chem/foam.dm @@ -14,23 +14,25 @@ var/amount = 3 var/expand = 1 var/metal = 0 + var/dries = 1 //VOREStation Add + var/slips = 0 //VOREStation Add /obj/effect/effect/foam/Initialize(var/mapload, var/ismetal = 0) . = ..() - icon_state = "[ismetal? "m" : ""]foam" + //icon_state = "[ismetal? "m" : ""]foam" //VOREStation Removal metal = ismetal playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3) - - addtimer(CALLBACK(src, .proc/post_spread), 3 + metal * 3) - addtimer(CALLBACK(src, .proc/pre_harden), 12 SECONDS) - addtimer(CALLBACK(src, .proc/harden), 15 SECONDS) + if(dries) //VOREStation Add + addtimer(CALLBACK(src, .proc/post_spread), 3 + metal * 3) + addtimer(CALLBACK(src, .proc/pre_harden), 12 SECONDS) + addtimer(CALLBACK(src, .proc/harden), 15 SECONDS) /obj/effect/effect/foam/proc/post_spread() process() checkReagents() /obj/effect/effect/foam/proc/pre_harden() - STOP_PROCESSING(SSobj, src) + return //VOREStation Edit /obj/effect/effect/foam/proc/harden() if(metal) @@ -83,7 +85,7 @@ return if(metal) return - if(istype(AM, /mob/living)) + if(slips && istype(AM, /mob/living)) //VOREStation Add var/mob/living/M = AM M.slip("the foam", 6) diff --git a/code/game/objects/effects/chem/foam_vr.dm b/code/game/objects/effects/chem/foam_vr.dm new file mode 100644 index 00000000000..b7a22e629ee --- /dev/null +++ b/code/game/objects/effects/chem/foam_vr.dm @@ -0,0 +1,20 @@ +/obj/effect/effect/foam/firefighting + name = "firefighting foam" + icon_state = "mfoam" //Whiter + color = "#A6FAFF" + var/lifetime = 3 + dries = FALSE // We do this ourselves + slips = FALSE + +/obj/effect/effect/foam/firefighting/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/effect/effect/foam/firefighting/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/effect/effect/foam/firefighting/process() + if(lifetime-- <= 0) + flick("[icon_state]-disolve", src) + QDEL_IN(src, 5) \ No newline at end of file diff --git a/code/game/objects/effects/chem/water.dm b/code/game/objects/effects/chem/water.dm index 7de9b9f8ff1..72934e2da18 100644 --- a/code/game/objects/effects/chem/water.dm +++ b/code/game/objects/effects/chem/water.dm @@ -21,7 +21,7 @@ step_towards(src, target) var/turf/T = get_turf(src) if(T && reagents) - reagents.touch_turf(T) + reagents.touch_turf(T, reagents.total_volume) //VOREStation Add var/mob/M for(var/atom/A in T) if(!ismob(A) && A.simulated) // Mobs are handled differently diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index f44abcb96ba..6711269591e 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -1,7 +1,7 @@ /obj/item/weapon/extinguisher name = "fire extinguisher" desc = "A traditional red fire extinguisher." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/items_vr.dmi' //VOREStation Edit icon_state = "fire_extinguisher0" item_state = "fire_extinguisher" hitsound = 'sound/weapons/smash.ogg' @@ -36,12 +36,12 @@ /obj/item/weapon/extinguisher/Initialize() create_reagents(max_water) - reagents.add_reagent("water", max_water) + reagents.add_reagent("firefoam", max_water) //VOREStation Edit . = ..() /obj/item/weapon/extinguisher/examine(mob/user) if(..(user, 0)) - to_chat(user, "[bicon(src)] [src.name] contains [src.reagents.total_volume] units of water left!") + to_chat(user, "[bicon(src)] [src.name] contains [src.reagents.total_volume] units of foam left!") //VOREStation Edit /obj/item/weapon/extinguisher/attack_self(mob/user as mob) safety = !safety @@ -70,7 +70,7 @@ /obj/item/weapon/extinguisher/afterattack(var/atom/target, var/mob/user, var/flag) //TODO; Add support for reagents in water. - if( istype(target, /obj/structure/reagent_dispensers/watertank) && flag) + if( istype(target, /obj/structure/reagent_dispensers) && flag) //VOREStation Edit var/obj/o = target var/amount = o.reagents.trans_to_obj(src, 50) to_chat(user, "You fill [src] with [amount] units of the contents of [target].") diff --git a/code/modules/reagents/Chemistry-Reagents_vr.dm b/code/modules/reagents/Chemistry-Reagents_vr.dm index 611f286ab10..c6ea7cc1dcd 100644 --- a/code/modules/reagents/Chemistry-Reagents_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents_vr.dm @@ -53,3 +53,43 @@ if(nif.stat == NIF_TEMPFAIL) nif.stat = NIF_INSTALLING nif.durability = min(nif.durability + removed, initial(nif.durability)) + +/datum/reagent/firefighting_foam + name = "Firefighting Foam" + id = "firefoam" + description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on most NT vessels." + reagent_state = LIQUID + color = "#A6FAFF" + taste_description = "the inside of a fire extinguisher" + +/datum/reagent/firefighting_foam/touch_turf(var/turf/T, reac_volume) + if(reac_volume >= 1) + var/obj/effect/effect/foam/firefighting/F = (locate(/obj/effect/effect/foam/firefighting) in T) + if(!F) + F = new(T) + else if(istype(F)) + F.lifetime = initial(F.lifetime) //reduce object churn a little bit when using smoke by keeping existing foam alive a bit longer + + var/datum/gas_mixture/environment = T.return_air() + var/min_temperature = T0C + 100 // 100C, the boiling point of water + + var/hotspot = (locate(/obj/fire) in T) + if(hotspot && !isspace(T)) + var/datum/gas_mixture/lowertemp = T.remove_air(T.air.total_moles) + lowertemp.temperature = max(min(lowertemp.temperature-2000, lowertemp.temperature / 2), 0) + lowertemp.react() + T.assume_air(lowertemp) + qdel(hotspot) + + if (environment && environment.temperature > min_temperature) // Abstracted as steam or something + var/removed_heat = between(0, volume * 19000, -environment.get_thermal_energy_change(min_temperature)) + environment.add_thermal_energy(-removed_heat) + if(prob(5)) + T.visible_message("The foam sizzles as it lands on \the [T]!") + +/datum/reagent/firefighting_foam/touch_obj(var/obj/O, reac_volume) + O.water_act(reac_volume / 5) + +/datum/reagent/firefighting_foam/touch_mob(var/mob/living/M, reac_volume) + M.adjust_fire_stacks(-reac_volume) + M.ExtinguishMob() \ No newline at end of file diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index 5b7ddf5f42f..75fb388a4ba 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -3878,14 +3878,10 @@ /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) "agI" = ( -/obj/structure/table/standard, -/obj/random/tech_supply, -/obj/random/tech_supply, -/obj/random/tech_supply, -/obj/random/tech_supply, /obj/machinery/newscaster{ pixel_x = -30 }, +/obj/structure/reagent_dispensers/foam, /turf/simulated/floor/tiled, /area/storage/primary) "agJ" = ( diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 468a9571e59..ee2bca3c086 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -13706,7 +13706,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/atrium) "axz" = ( -/obj/structure/reagent_dispensers/watertank, +/obj/structure/reagent_dispensers/foam, /turf/simulated/floor/tiled, /area/storage/tools) "axA" = ( diff --git a/vorestation.dme b/vorestation.dme index 0aafca86177..3bf8a3af58d 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1008,6 +1008,7 @@ #include "code\game\objects\effects\chem\chemsmoke.dm" #include "code\game\objects\effects\chem\coating.dm" #include "code\game\objects\effects\chem\foam.dm" +#include "code\game\objects\effects\chem\foam_vr.dm" #include "code\game\objects\effects\chem\water.dm" #include "code\game\objects\effects\decals\cleanable.dm" #include "code\game\objects\effects\decals\contraband.dm" From 534d4657d2fb56317d5f9fe4ef9d113537a95039 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Mon, 20 Apr 2020 17:27:24 -0400 Subject: [PATCH 3/4] Make it behave the same as water in regards to xenobio --- code/modules/reagents/Chemistry-Reagents_vr.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Reagents_vr.dm b/code/modules/reagents/Chemistry-Reagents_vr.dm index c6ea7cc1dcd..58a9b19402d 100644 --- a/code/modules/reagents/Chemistry-Reagents_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents_vr.dm @@ -91,5 +91,10 @@ O.water_act(reac_volume / 5) /datum/reagent/firefighting_foam/touch_mob(var/mob/living/M, reac_volume) + if(istype(M, /mob/living/simple_mob/slime)) //I'm sure foam is water-based! + var/mob/living/simple_mob/slime/S = M + S.adjustToxLoss(15 * reac_volume) + S.visible_message("[S]'s flesh sizzles where the foam touches it!", "Your flesh burns in the foam!") + M.adjust_fire_stacks(-reac_volume) - M.ExtinguishMob() \ No newline at end of file + M.ExtinguishMob() From 5397f9927b2f3cc52d0f65751cd6af267ca9f0a4 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Mon, 20 Apr 2020 18:06:34 -0400 Subject: [PATCH 4/4] Mech FOAAAAM --- code/game/mecha/equipment/tools/extinguisher.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/mecha/equipment/tools/extinguisher.dm b/code/game/mecha/equipment/tools/extinguisher.dm index d383573017f..4ed6735b62b 100644 --- a/code/game/mecha/equipment/tools/extinguisher.dm +++ b/code/game/mecha/equipment/tools/extinguisher.dm @@ -14,14 +14,14 @@ . = ..() reagents = new/datum/reagents(max_water) reagents.my_atom = src - reagents.add_reagent("water", max_water) + reagents.add_reagent("firefoam", max_water) //VOREStation Edit /obj/item/mecha_parts/mecha_equipment/tool/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch. if(!action_checks(target) || get_dist(chassis, target)>3) return if(get_dist(chassis, target)>2) return set_ready_state(0) if(do_after_cooldown(target)) - if( istype(target, /obj/structure/reagent_dispensers/watertank) && get_dist(chassis,target) <= 1) + if( istype(target, /obj/structure/reagent_dispensers) && get_dist(chassis,target) <= 1) //VOREStation Edit var/obj/o = target var/amount = o.reagents.trans_to_obj(src, 200) occupant_message("[amount] units transferred into internal tank.")