From 4d5ecd09b6021344eb790405a0b6bd480a09e548 Mon Sep 17 00:00:00 2001 From: Albert Iordache Date: Fri, 27 Jan 2012 10:05:50 +0200 Subject: [PATCH] Revert "more water pipes stuff" This reverts commit 2d639d053b582198e99713a3c8134ddbaf7710c2. --- code/game/machinery/sink.dm | 105 +++--------------- code/game/objects/washing_machine.dm | 29 ----- .../water/components/binary/fixture.dm | 9 +- .../water/components/trinary/water_filter.dm | 7 -- .../water/components/water_glass_connector.dm | 15 +-- .../components/water_portables_connector.dm | 7 ++ icons/obj/water/water_fixtures.dmi | Bin 3311 -> 1443 bytes icons/obj/water/water_glass_connector.dmi | Bin 4640 -> 2781 bytes 8 files changed, 26 insertions(+), 146 deletions(-) diff --git a/code/game/machinery/sink.dm b/code/game/machinery/sink.dm index 1507de23df7..d488b9235d7 100644 --- a/code/game/machinery/sink.dm +++ b/code/game/machinery/sink.dm @@ -5,20 +5,7 @@ desc = "A sink used for washing one's hands and face." anchored = 1 var/busy = 0 //Something's being washed at the moment - var/mode = 0 //0 == fill, 1 == pour - var/obj/machinery/water/binary/fixture/cxn - - New() - ..() - reagents = new(100) - reagents.my_atom = src - spawn(2) - cxn = locate(/obj/machinery/water/binary/fixture) in loc - if(cxn) - cxn.parent = src - - verbs += /obj/machinery/sink/proc/mode_pour attack_hand(mob/M as mob) if(busy) @@ -27,33 +14,18 @@ var/turf/location = M.loc if(!isturf(location)) return - M << "\blue You start washing up." - - // collect water, at least 10u? - var/amt_needed = 25 - reagents.total_volume - if(!cxn || cxn.fill(amt_needed) < amt_needed) - M << "\The [src] barely trickles. Cleaning up with \the [src] is impossible!" - return + usr << "\blue You start washing up." busy = 1 sleep(40) busy = 0 - // react, for if there's something not water - reagents.reaction(M, TOUCH) - - // ok, this is just goop.. - if(reagents.get_reagent_amount("water") < 10) - M << "\red This does not feel... very water-like..." - return - if(M.loc != location) return //Person has moved away from the sink - if(M.blood_DNA) - reagents.add_reagent("blood", 10) // down the sink M.clean_blood() if(istype(M, /mob/living/carbon)) var/mob/living/carbon/C = M + C.clean_blood() /* if(C.r_hand) C.r_hand.clean_blood() // The hand you attack with is empty anyway, the other one should not be washed while doing this. @@ -77,63 +49,22 @@ for(var/mob/V in viewers(src, null)) V.show_message(text("\blue [M] washes up using \the [src].")) - // empty sink - cxn.drain(reagents.total_volume) - - proc/mode_pour() - set name = "Toggle Mode -> Pour" - set category = "Object" - set src in oview(1) - - mode = 1 - verbs -= /obj/machinery/sink/proc/mode_pour - verbs += /obj/machinery/sink/proc/mode_fill - usr << "You will now pour reagents down \the [src]." - - proc/mode_fill() - set name = "Toggle Mode -> Fill" - set category = "Object" - set src in oview(1) - - mode = 0 - verbs -= /obj/machinery/sink/proc/mode_fill - verbs += /obj/machinery/sink/proc/mode_pour - usr << "You will now fill your container from the faucet." attackby(var/obj/item/O as obj, var/mob/user as mob) if(busy) user << "\red Someone's already washing something here." return - // collect water, any water? - var/amt_needed = 10 - reagents.total_volume - if(!cxn || cxn.fill(amt_needed) == 0) - user << "\The [src] barely trickles. Getting water from \the [src] is impossible!" - return - if (istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks)) - if(!mode) - // fill - if(O.reagents.total_volume < O.reagents.maximum_volume) - reagents.trans_to(O, reagents.total_volume) - user.visible_message( \ - "\blue [user] fills \the [O] using \the [src].", \ - "\blue You fill \the [O] using \the [src].") - else - user.visible_message( \ - "\blue [user] spills water out of \the overflowing [O] into \the [src].", \ - "\blue You spill water out of \the overflowing [O] into \the [src].") + if(O.reagents.total_volume < O.reagents.maximum_volume) + O:reagents.add_reagent("water", 10) + user.visible_message( \ + "\blue [user] fills the [O] using the [src].", \ + "\blue You fill the [O] using the [src].") else - // pour - if(O.reagents.total_volume > 0) - O.reagents.trans_to(src, O.reagents.total_volume) - user.visible_message( \ - "\blue [user] pours the contents of \the [O] into \the [src].", \ - "\blue You pour the contents of \the [O] into \the [src].") - else - user << "\The [O] is empty." - // empty sink - cxn.drain(reagents.total_volume) + user.visible_message( \ + "\blue [user] spills water out of the overflowing [O] into the [src].", \ + "\blue You spill water out of the overflowing [O] into the [src].") return else if (istype(O, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = O @@ -150,9 +81,6 @@ user.visible_message( \ "[user] was stunned by his wet [O].", \ "\red You have wet \the [O], it shocks you!") - - // empty sink - cxn.drain(reagents.total_volume) return var/turf/location = user.loc @@ -167,30 +95,23 @@ sleep(40) busy = 0 - reagents.reaction(O, TOUCH) - if(user.loc != location) return //User has moved if(!I) return //Item's been destroyed while washing if(user.get_active_hand() != I) return //Person has switched hands or the item in their hands - if(O.blood_DNA) - reagents.add_reagent("blood", 10) // down the sink O.clean_blood() user.visible_message( \ "\blue [user] washes \a [I] using \the [src].", \ "\blue You wash \a [I] using \the [src].") - // empty sink - cxn.drain(reagents.total_volume) - shower - name = "shower" + name = "Shower" desc = "This is dumb." kitchen - name = "kitchen sink" + name = "Kitchen Sink" icon_state = "sink_alt" kitchen2 - name = "kitchen sink" + name = "Kitchen Sink" icon_state = "sink_alt2" diff --git a/code/game/objects/washing_machine.dm b/code/game/objects/washing_machine.dm index b56198edab9..f4904427c19 100644 --- a/code/game/objects/washing_machine.dm +++ b/code/game/objects/washing_machine.dm @@ -21,16 +21,6 @@ //1 = hacked var/gibs_ready = 0 var/obj/crayon - var/obj/machinery/water/binary/fixture/cxn - - New() - ..() - reagents = new(200) - reagents.my_atom = src - spawn(2) - cxn = locate(/obj/machinery/water/binary/fixture) in loc - if(cxn) - cxn.parent = src /obj/machinery/washing_machine/verb/start() set name = "Start Washing" @@ -41,31 +31,13 @@ usr << "The washing machine cannot run in this state." return - if(!cxn) - usr << "\The [src] makes a grinding sound and stalls." - if( locate(/mob,contents) ) state = 8 else state = 5 update_icon() - - // collect water, fill up - var/amt_needed - do - amt_needed = reagents.maximum_volume/2 - reagents.total_volume - cxn.fill(amt_needed) - sleep(10) - while(amt_needed > 0) - - // now, clean things sleep(200) for(var/atom/A in contents) - reagents.reaction(A, TOUCH) - - if(A.blood_DNA) - reagents.add_reagent("blood", 10) // down the sink - reagents.add_reagent("carbon", 5) A.clean_blood() if(crayon) @@ -170,7 +142,6 @@ gibs_ready = 1 else state = 4 - cxn.drain(reagents.total_volume) update_icon() /obj/machinery/washing_machine/verb/climb_out() diff --git a/code/modules/water/components/binary/fixture.dm b/code/modules/water/components/binary/fixture.dm index 14e0657a37f..f861c33ccf8 100644 --- a/code/modules/water/components/binary/fixture.dm +++ b/code/modules/water/components/binary/fixture.dm @@ -1,15 +1,12 @@ /obj/machinery/water/binary/fixture name = "water fixture connection" icon = 'water_fixtures.dmi' - icon_state = "fixture-f" + icon_state = "fixture" level = 1 layer = 2.9 var/obj/parent - update_icon() - icon_state = "intact[invisibility ? "-f" : "" ]" - hide(var/i) if(level == 1 && istype(loc, /turf/simulated)) invisibility = i ? 101 : 0 @@ -78,7 +75,3 @@ "You hear ratchet.") new /obj/item/water_pipe(loc, make_from=src) del(src) - - visible - icon_state = "fixture" - level = 2 \ No newline at end of file diff --git a/code/modules/water/components/trinary/water_filter.dm b/code/modules/water/components/trinary/water_filter.dm index 669825225ed..52bd0fa4188 100644 --- a/code/modules/water/components/trinary/water_filter.dm +++ b/code/modules/water/components/trinary/water_filter.dm @@ -97,16 +97,9 @@ obj/machinery/water/trinary/filter return 1 - hide(var/i) - if(level == 1 && istype(loc, /turf/simulated)) - invisibility = i ? 101 : 0 - update_icon() - initialize() set_frequency(frequency) ..() - var/turf/T = src.loc // hide if turf is not intact - hide(T.intact) attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) if (!istype(W, /obj/item/weapon/wrench)) diff --git a/code/modules/water/components/water_glass_connector.dm b/code/modules/water/components/water_glass_connector.dm index 64f8fc753c1..6e38ef39052 100644 --- a/code/modules/water/components/water_glass_connector.dm +++ b/code/modules/water/components/water_glass_connector.dm @@ -8,9 +8,8 @@ initialize_directions = SOUTH density = 1 - var/icon_type = "" - var/obj/item/weapon/reagent_containers/glass/connected_device + var/obj/machinery/water/node var/datum/water/pipe_network/network @@ -20,14 +19,14 @@ update_icon() if(node) - icon_state = "[node.level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]intact[icon_type]" + icon_state = "[node.level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]intact" dir = get_dir(src, node) else - icon_state = "exposed[icon_type]" + icon_state = "exposed" overlays = new() if(connected_device) - overlays += "inserted[icon_type]" + overlays += "inserted" if(connected_device.reagents.total_volume) var/obj/effect/overlay = new/obj @@ -205,8 +204,4 @@ update_icon() user << "\blue You add \the [W] to \the [src]." else - return ..() - -/obj/machinery/water/glass_connector/wall - icon_state = "intact-w" - icon_type = "-w" \ No newline at end of file + return ..() \ No newline at end of file diff --git a/code/modules/water/components/water_portables_connector.dm b/code/modules/water/components/water_portables_connector.dm index 79a3f05dce2..75372ae8873 100644 --- a/code/modules/water/components/water_portables_connector.dm +++ b/code/modules/water/components/water_portables_connector.dm @@ -32,6 +32,13 @@ return + hide(var/i) //to make the little pipe section invisible, the icon changes. + if(node) + icon_state = "[i == 1 && istype(loc, /turf/simulated) ? "h" : "" ]intact" + dir = get_dir(src, node) + else + icon_state = "exposed" + process() ..() if(!on) diff --git a/icons/obj/water/water_fixtures.dmi b/icons/obj/water/water_fixtures.dmi index c6b47d4fc7d840837442794bd67f52a49e20fecf..4bd8e495d42ec1d6ce627566bf5425098f1d205b 100644 GIT binary patch literal 1443 zcmV;U1zh@xP)C0002AP)t-sz`(#6 z85t1`4IdvLSy@?TW@e?OrOeFCnVFe?e}Bv~0RR90|1$s^8yj9;UW0>!03ICxT2}zH zt^kC803aV46aZdH0GM_FP(A$TL8GS0EU5vXaKm6000^p0AgPNwy*%cw}ys> z03sm(z`3`#w;&k+06aPXsG>nZK|C)2sDc0#5C8xa6NF{}mzS5ci~zuu0Je<)0GN|v zOaNL&002-;A{qc57XTa<0KSv}N<_`L00001bW%=J06^y0W&i*HiF#C6bVOxyV{&P5 zbZKvH004NLQ&wnP1C^IiRC$-2xiHkEOv#1!PlZ!L0C^0t`#5TmD)DXK;pcN^pIf<1Z zT{=km(lRSbN{do)nXjzi>gNJ>I{+D=H<}=)VPgOQ1PDn)K~#90?N|+0sz4BBSrr5^ zGe8A_iW1X4Uf^7zXLp#nn)V40oq>L4$X-Dj&6d$J z+gJ+d3P=Jh!|rr!_(l_uE5H(f9Rkg9XxBM#90zHBP|yVd2YB@TWlxPUtYMbEcS-3 z8~h9?j{)Q?wsO7$uoIBMlnbELuxV4*o76TaRW5+t0?VKcLK@Vt5N-j>1C~Vz)KTn- zlE1Mt;r9gg>lVAmv0{HBjC>xC@2 zDjRJc(ljL!0mXbVQ;pZo zf^#OIJLyUV6!OJPH6B9H=K@N0ppY+Ss_~l3zzS*d@xNsZ626$J#%t4Ycrn#x=_H+f z$j>k1XfEN4nQFY|!2-R~71p=|a7fY_naK{>Chx8=C47b1JX_+*TOpf!f}gI9x!#(< zOuJo~fKC2rJU$X|FGy+vpIv4*98q-RuOW*v!C$yYt{4F04xhIsfEY^-**4!BCA}m`MrR3}0S-6=-V4Nh;k_<4&Vb;j zZgMt)F}-Be+c*Q_o)@F^6z__86kpCIyvP$ZqHG65rmPX3e|sYnAl?-<;>Ev{3J`D0 z8u9A?l?o8`LXGhJxFiJflI?#Ga9<)oUN!HG#iM)&%KC<#0U?M=LLlv&cE)RofU@3k xXDpuNiKwi5-WgZJfqy08ub&@+YYG1a`~%8@aIcSP4Qc=Y002ovPDHLkV1n7Re5(Ke literal 3311 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 diff --git a/icons/obj/water/water_glass_connector.dmi b/icons/obj/water/water_glass_connector.dmi index 39413ffa09b03cefc2fca02442aeb6dbfbfd140e..cdb5d50131c242ae07c71c5d5dcd3df528423ef4 100644 GIT binary patch literal 2781 zcma)8XH=8f7X1(rLI^Eq$WR0lK&b&7 z0Z~d&KtgB{=>#EkkWP#wBq1-(_jsR>>g=;BjWmPSXd-1Gz0+d<|dN<6l~QL`+ZtJI_`qu zY1c;oR0-lI`~|K01>xc}FI@7*rvilohVpdEW~N@fB)MoAhjg?y;*%O=K5{*4xTUFg ztZutqSEKuqw!jB0<#?NmV5J;k|09nIEn)a&%~Ds3YQnS5TX!0_s=bnQ--|o9Jm7?M z>IpwBL|FJydOp}hBxM9L57-3IWEs9N|8Kfw4*=lcu9dl|^WEIFy#6Z_UNVnS{SKv< zRKJm%vur<9xW+a+oO)6zb>!ua?e7I$Y8OnIATf!8D@+v@sCtdra zcN5h=JI>xCi}G>j%-c@vjS7E_;Lp~%;c4l9lSCqux4_nRd(QeQ$eB(4~CB(c0a zwlgNDShdw2aB_0$SXxq<#NR(%i-+Q+%lEq5-OLZ!ySNm!v`h^c3MV-g3w=5Qe8ls~px6s`k>W+>I3=OT;G&$Fk%-`b6 z1HQjIn4?&(%gQ;p!acV|Vao7y&%ZwXglc3mLMu+ka?7S@0;6Q|A!amsiMTdAEa6z@ zJP`FGKa_bSBEa9@|2K8;b5)7>DgzKdQa$r*`A|?>|2&;ODpIaGb)^--F(&ag^bv?Ks*&Ua@zk=;E#<0CmMTgKjT z_ZZtRuk9^0Bt;q=_8zGmIWua;$B}L3^&ZjU%Jwz4?GV&KY?KjKh|OTl&d$p0&CDoB zNJ>^l(dZkK&21D4cF5ny2T)X0l#-Hqg*?E|AHFtzUg+>)-GZMGLcf!l{J-$zZdx>q{ei zYjvz9wj0`X*C9e7bWc5PZ0uL)V)&ZauA-z#E4@Q1GL7hGm&-_0xX5Gii=m+*Gkife z&Ys5rWZ~d46!;w-SChEJdj_yCbGBtqUf%2L>nod*l#uB2QtsK)P*bb@s}s^9y1ZPb z&$Ho+bx6)F^H9D3d@jO{FEHQ4Q1^DZQ-mNAj=TBB>ZRkQk^!#V)QA4~7YLFfWp2)| zmu07v4r@pn^S^$bcR6x=ge6LypJC?5j*-b1-g(7Vt(>+xqM6s~r(abOdzO?WjNt4Y<7z+5zUeCoqFIBfD0vjMZe^tUw5O+M7=Hbv z8Px3i&Q5q(82a+dhihxMa%r9NmiW>5GZ@lo2IA^n&(;_n6Jf|PDvXi(jaM5g4`%XY z+jRv%j#I4|tNeaoRSX;5qdZ>&N@2V}eCO51JR>1Z7SgxJL^=_U|5XfmgM1&XbF&G_ z9*;?{8N=}aT+YDE>|)UZp-UuihiYSOJ*bAs$}&NrP^&D&AmSGYRtSklfT1-IE*~u+ z#V90L6q!PR3PP|?FrhFQ@s;HC=g(<800x5k-cu4Mgi!q!tboKjmhETeHNA8^XmZZl zQ~PAfzJx*yi6QhTGeE{~o608&AwW{Pp0<{nt`UkB9!o!EP9DiZ1YPEK<8fVxH%-(ayd|JtVlAg`K@Z>X@b{R>P#ES&q2ViA?v=wR z$ud)AS2{B@Qylwyj7|_l{ye0|eA-Dd+j`G&gZ78GPot4bM*)%h)KFiW)t%9+i|GWC za@z4^$Uibk<2^Z zjS=i!aSZsrS)E5B4nyK?S~^PC??TtF4|hLl*{_iGS2LgTht`UY^8RU5kF&*ORMz zH@)XYYXo{H-fl)@S0~m-j}MD1^<pJt|9iAw@tk6^9lSeK1ppYb!yYExEW+IBkk>JV-Bkk{=Ym%a4@gl&pcu5Tz?pSYMUsngt(Wp;5 zmP=|@+9%qZs3+2iJ}=#IoJ z{gA9tOR$cc#p%>7-tk37Zjo2N);3?bYSKWCfVfWu8xf+Eecr}twYyc#EC_Tl6f(i0dnExACD9rK)Kjxa*x1A=CWvz6tRNPmN naa0;|+_LWzM+2VgzQ}o(KcPu0aVq8hR{^Vww&qo4J`ev5yHcv7 literal 4640 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 Udu0v}^_LHzt*)n5s%jPTKN)B?)Bpeg