From ac63233e5d396cbfc81021284e362813377e7fa0 Mon Sep 17 00:00:00 2001 From: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com> Date: Fri, 26 Nov 2021 03:04:13 -0700 Subject: [PATCH] Catwalk Tiles REVAMP + floorbot buff (#63016) Requested to bring this upstream, so here we are now. The floorbot stuff is new though. Adds new catwalk tiles that blend better with other flooring Also does some improvements to floorbots, specifically: -Auto-place catwalks in maints (now when they wander in there they'll actually be helpful!) -Actually patch holes (they used to just lay a tile over space and call it good; crowbarring it up would show a lack of plating) -Repairing floor tiles actually REPAIRS it, leaving the decals intact More usable catwalks, rather than what we currently had. Added new reskins of the Catwalk Tiles, which will blend better with other types of floor! These can be selected via a radial on the base catwalk tile, crafted with iron rods. Floorbots will automatically place catwalks when they're in a maintenance area, and will repair damaged/burnt tiles rather than fully replacing them. Floorbots will actually place a plating when repairing a breach with tiles, rather than haphazardly laying a tile that has space below it. --- .../objects/items/stacks/tiles/tile_types.dm | 42 ++++++++++-- code/game/turfs/open/floor/catwalk_plating.dm | 60 +++++++++++++++--- .../mob/living/simple_animal/bot/floorbot.dm | 16 ++++- icons/obj/tiles.dmi | Bin 27524 -> 28567 bytes icons/turf/floors/catwalk_plating.dmi | Bin 484 -> 4353 bytes 5 files changed, 102 insertions(+), 16 deletions(-) diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 5e1ce14f9a2..a40ee8b6379 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -1113,18 +1113,52 @@ /obj/item/stack/tile/emissive_test/white/sixty amount = 60 -/obj/item/stack/tile/catwalk_tile +//Catwalk Tiles +/obj/item/stack/tile/catwalk_tile //This is our base type, sprited to look maintenance-styled name = "catwalk floor" singular_name = "catwalk floor tile" - desc = "Catwalk floor to be able see things underneath" - icon_state = "catwalk_floor" + desc = "Flooring that shows its contents underneath. Engineers love it!" + icon_state = "maint_catwalk" inhand_icon_state = "tile-catwalk" turf_type = /turf/open/floor/catwalk_floor - merge_type = /obj/item/stack/tile/catwalk_tile + merge_type = /obj/item/stack/tile/catwalk_tile //Just to be cleaner, these all stack with eachother + tile_reskin_types = list( + /obj/item/stack/tile/catwalk_tile, + /obj/item/stack/tile/catwalk_tile/iron, + /obj/item/stack/tile/catwalk_tile/iron_white, + /obj/item/stack/tile/catwalk_tile/iron_dark, + /obj/item/stack/tile/catwalk_tile/flat_white, + /obj/item/stack/tile/catwalk_tile/titanium, + /obj/item/stack/tile/catwalk_tile/iron_smooth //this is the original greenish one + ) /obj/item/stack/tile/catwalk_tile/sixty amount = 60 +/obj/item/stack/tile/catwalk_tile/iron + icon_state = "iron_catwalk" + turf_type = /turf/open/floor/catwalk_floor/iron + +/obj/item/stack/tile/catwalk_tile/iron_white + icon_state = "whiteiron_catwalk" + turf_type = /turf/open/floor/catwalk_floor/iron_white + +/obj/item/stack/tile/catwalk_tile/iron_dark + icon_state = "darkiron_catwalk" + turf_type = /turf/open/floor/catwalk_floor/iron_dark + +/obj/item/stack/tile/catwalk_tile/flat_white + icon_state = "flatwhite_catwalk" + turf_type = /turf/open/floor/catwalk_floor/flat_white + +/obj/item/stack/tile/catwalk_tile/titanium + icon_state = "titanium_catwalk" + turf_type = /turf/open/floor/catwalk_floor/titanium + +/obj/item/stack/tile/catwalk_tile/iron_smooth //this is the greenish one + icon_state = "smoothiron_catwalk" + turf_type = /turf/open/floor/catwalk_floor/iron_smooth + // Glass floors /obj/item/stack/tile/glass name = "glass floor" diff --git a/code/game/turfs/open/floor/catwalk_plating.dm b/code/game/turfs/open/floor/catwalk_plating.dm index 89d2e075ddb..79abdbe2172 100644 --- a/code/game/turfs/open/floor/catwalk_plating.dm +++ b/code/game/turfs/open/floor/catwalk_plating.dm @@ -5,9 +5,9 @@ * you can screwdriver it to interact with the underneath stuff without destroying the tile... * unless you want to! */ -/turf/open/floor/catwalk_floor +/turf/open/floor/catwalk_floor //the base type, meant to look like a maintenance panel icon = 'icons/turf/floors/catwalk_plating.dmi' - icon_state = "catwalk_below" + icon_state = "maint_below" name = "catwalk floor" desc = "Flooring that shows its contents underneath. Engineers love it!" baseturfs = /turf/open/floor/plating @@ -16,24 +16,28 @@ overfloor_placed = TRUE underfloor_accessibility = UNDERFLOOR_VISIBLE var/covered = TRUE + var/above_state = "maint_above" //Icon-state for the overlay /turf/open/floor/catwalk_floor/Initialize(mapload) . = ..() update_icon(UPDATE_OVERLAYS) +GLOBAL_LIST_EMPTY(catwalk_overlay_masterlist) //Stores all the above_states for the different types of catwalk + /turf/open/floor/catwalk_floor/update_overlays() . = ..() - var/static/image/catwalk_overlay - if(isnull(catwalk_overlay)) - catwalk_overlay = new() + if(!covered) + return //Updating the overlay with nothing actually removes it, in this case. Somehow. + if(!GLOB.catwalk_overlay_masterlist[above_state]) + //Generate a new overlay and add it to the global list + var/image/catwalk_overlay = new() catwalk_overlay.icon = icon - catwalk_overlay.icon_state = "catwalk_above" + catwalk_overlay.icon_state = above_state catwalk_overlay.plane = GAME_PLANE catwalk_overlay.layer = CATWALK_LAYER - catwalk_overlay = catwalk_overlay.appearance - if(covered) - . += catwalk_overlay + GLOB.catwalk_overlay_masterlist[above_state] = catwalk_overlay + . += GLOB.catwalk_overlay_masterlist[above_state] /turf/open/floor/catwalk_floor/screwdriver_act(mob/living/user, obj/item/tool) . = ..() @@ -50,3 +54,41 @@ user.balloon_alert(user, "remove cover first!") return FALSE . = ..() + + +//Reskins! More fitting with most of our tiles, and appear as a radial on the base type +/turf/open/floor/catwalk_floor/iron + name = "iron plated catwalk floor" + icon_state = "iron_below" + above_state = "iron_above" + floor_tile = /obj/item/stack/tile/catwalk_tile/iron + +/turf/open/floor/catwalk_floor/iron_white + name = "white plated catwalk floor" + icon_state = "whiteiron_below" + above_state = "whiteiron_above" + floor_tile = /obj/item/stack/tile/catwalk_tile/iron_white + +/turf/open/floor/catwalk_floor/iron_dark + name = "dark plated catwalk floor" + icon_state = "darkiron_below" + above_state = "darkiron_above" + floor_tile = /obj/item/stack/tile/catwalk_tile/iron_dark + +/turf/open/floor/catwalk_floor/flat_white + name = "white large plated catwalk floor" + icon_state = "flatwhite_below" + above_state = "flatwhite_above" + floor_tile = /obj/item/stack/tile/catwalk_tile/flat_white + +/turf/open/floor/catwalk_floor/titanium + name = "titanium plated catwalk floor" + icon_state = "titanium_below" + above_state = "titanium_above" + floor_tile = /obj/item/stack/tile/catwalk_tile/titanium + +/turf/open/floor/catwalk_floor/iron_smooth //the original green type + name = "smooth plated catwalk floor" + icon_state = "smoothiron_below" + above_state = "smoothiron_above" + floor_tile = /obj/item/stack/tile/catwalk_tile/iron_smooth diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 57bc2f2ddf2..529d26ff469 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -333,10 +333,12 @@ if(do_after(src, 50, target = target_turf) && mode == BOT_REPAIRING) if(autotile) //Build the floor and include a tile. if(replacetiles && tilestack) + target_turf.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) //make sure a hull is actually below the floor tile tilestack.place_tile(target_turf) if(!tilestack) speak("Requesting refill of custom floor tiles to continue replacing.") else + target_turf.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) //make sure a hull is actually below the floor tile target_turf.PlaceOnTop(/turf/open/floor/iron, flags = CHANGETURF_INHERIT_AIR) else //Build a hull plating without a floor tile. target_turf.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) @@ -361,12 +363,20 @@ success = TRUE if(success) - F = F.make_plating(TRUE) || F - if(was_replacing && tilestack) + var/area/is_this_maints = get_area(F) + if(was_replacing && tilestack) //turn the tile into plating (if needed), then replace it + F = F.make_plating(TRUE) || F tilestack.place_tile(F) if(!tilestack) speak("Requesting refill of custom floor tiles to continue replacing.") - else + else if(F.broken || F.burnt) //repair the tile and reset it to be undamaged (rather than replacing it) + F.broken = FALSE + F.burnt = FALSE + F.icon_state = initial(F.icon_state) + else if(istype(is_this_maints, /area/maintenance)) //place catwalk if it's plating and we're in maints + F.PlaceOnTop(/turf/open/floor/catwalk_floor, flags = CHANGETURF_INHERIT_AIR) + else //place normal tile if it's plating anywhere else + F = F.make_plating(TRUE) || F F.PlaceOnTop(/turf/open/floor/iron, flags = CHANGETURF_INHERIT_AIR) if(!QDELETED(src)) diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index ea33c00d910b571f49f8c3bf8d6ae7a1413c61ef..7ef0da347a70be2de1a281b5cd54ae3ce885191a 100644 GIT binary patch delta 7944 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 NZfojml&jf2{V(%K%&q_c delta 6894 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 a1rN!Hq~!F!*2oPIJ`EKe<#Hvvi2nio5`{tl diff --git a/icons/turf/floors/catwalk_plating.dmi b/icons/turf/floors/catwalk_plating.dmi index c9ad36653bbdef679308599ea8fcbbbe22670adf..b49c46564de508d0ddc8fd050c50655d6ffe6352 100644 GIT binary patch literal 4353 zcmXAtc|26#|HtnbTeeY=m^4zNB4kT4hERmz6S9v|n5<1I#292>BZSdRAxpBfV5}p1 z_N~aCu@f`a!HnPZ{rz#y`QyINbRRx(!l1o<&|aPZ;EPY`)es0(;KNO)Q4wic=%4A5A4Tv0ss7ku<_vMU?G#6!lF6V(|#wd zlyrEgU8CWr%2n#V1#X}Gn4hbF;NcQ}s%?v(>2RyH5%=A!k}!hEv9^zVpFf+z zayjOrgqZ`u007xA(A75g#jo0XxSwhk#dfQY&fD(8%fwqBuQZhf>MB0k0GTlz^U#QM zj-nP4>=!)3bb`$FqJ)CYnJQX|`H9hq89DjrNWu4orMd=suW+|g3iCndyfY}5FGSDm z#(Mm{w0&C9WQKXQ$N%~E#!oek%oWX~+3~Ebz_r@+EWi1{NtbRlg~}I4Rn6K&1mj<> zTDA@kxh<^NxKuO8B@U-GL%G9r$_Zu1@cS!DyC4a%xZl{w@hXy?XLC;_loFwHW~}mY zV|hTeL{_)_AtC~m(NuyZNsMo{^x5c1t$wC0)$AE&&ZW&grMH{&1lHCTE~jwHwf;+~ zC>HmJG%r8Z1Y2u9^xV&xFo5SDc$D!}T~-hJOXv077(P$IsH3^JKOabAujGh)<#m zS?A@NiV8@dtB*na9=Kx`X@>;kHc`BNR_rAA({XWZb91^DBuo2`G`|I8qEW5_wsz2! zQZLT$g_%4rjt1C^DZ2jm1K!v{#l*zawf1s->HCTJ?7*4 zds;CGDMkomk`C~5$}@RhctU*?A`sx`=U=Bk%2_VlAmVH*JeSkl@RLX05b6yC>e&?J zFBLYCmLw(%DTPbw0R){y5gjS?aW!7P?q) zLATMc)q+3pcsiJMMS^^np(iN#O-eWshahU#+hsGefFGP!r7!LAkkv;r-SfttCSC&` zTa|tVQ82Cx_9e=llrLXFv6PJvDJa6t1of-$@(3_m;boTMHo_hTUD_%fB|Zcf`E*Oq zdJdw7K(0`Pmr1>^ViZaJsIjqjXZMMt-0VWLHmbqt{8OC0s$|2tfGU=}DNyqjL7A># z*5Q=HbhvMRzjf|d^b=rx|E_^5Lh=>DDVuolSD}2`jZnLU7RmfiA5|F1+4yVDG&IyP z>*qF>ANR1JxsCcN4r-`oeiH7ex zv!a&zH0wRk*Uh}?mrRUIh<28JuDU{IyP;a*Qzq#N3cxAPCri9^AXzdd>fnuzMlNYv zr^Vw^?n8Jd<*ka3$Gy!x3t=1dCHHEJnAmeSa7EJq^Y!+sav0t)Y0$Ut5?r zQa}3#CT`ENLGt8%VdpZOu4Hg-OZgqoBPL5F81}MlaHY7(FyI-Y%=Y@T#qd68;;K!I zT0(&q_p2T;XPWgsXp^#`GXz02e8B=l<%EGUz<#o>6GF5uHk*_kTh_fgT!hbsk&WO9 z-rhr;#3^ei@hjgC#V)S4S^&R z-%S&Jz{T=Gy|Jrw=z;~^<}B{GX)N$8S@Bb%ToHMh=2sR9B3EDoOFaC2g)g=46+bJc zF>2_GNUaUNKh&!tbm>Wd=>9gm(}LO5^zwE7ALaAKdDHV<$b{CJwg*?@JEY^fZLta` z2fGCBAL(B_rv+I1mxjN^Lrj7eA_FwlYi83jd7MSQoE+l zE&z~q`)#8lZ|8k6pYh;eP|7K_c4<*K8FTh%UgA+>JBW`xEr4_i(I|{J%JshRl%p;~ z%nljklnFbWUGQsGCr<8S@aj)EU3#zrK!1?j8|uurr6hfY{lzAWpw8SC)8C#x778~y9S$YoDI`<{|DO(qw zEae*lLpHkYT?)~b`}E0ZX4?4(Br7&M%(-W6W#vI(eR_aputfH}8wOn4l#n;A!VngB z^nVnMz8>&vYAVvqu`&Ley+BJ#ODUG&--t=wi_m$;O7N_RfloaIy zJa>EL8sZ|9K*DI)c5-o4*Y?4a9>owdoeYYbxs zaEbE0Z}vkk&9W>%o2z88WC^I5N2DJ3URuv!#_xfOh5?g}8T9%#xO5Qp@ynavK*~0F zn4V};+L%zmmbzzK2EzZWU$G*Ow;Yh;Wnd-vcb(&-3=i_YZ!pZ4MmR4t!>G^ z>Q{J6<HQV8{J zb5TElwo}0Y^hKbu?8&$!K}6#u5Kzs@MfwX7jGt({bNx9U#(>J> zrh?wHw1>NX8v`8LI2jsUQA%5|vO_*vQrCK>H&IP8E`1TL=TgQ)s!KZB7DF)cUg$k@ zld{}CEv0oVCcD;29M_-Oj#2*Ma=T-EJO1f^5y`2+|4v;}yPe?^aIj15uYJ{DOA4T8 zB^SS#BL5Gf9v7wErI?`UIyntRB~5<3qdTfFu zKbp9Sa+lh3v3RN}*J8;)@GN#4A(eg++WI%afcwUuPs70T4JKgej$`f3{|g}-2Fcy^ z{?}pL_U`ScBP94?mY!y zsT(fsXuYi<`fQrTk#~p-;x#hSGSQOk+T%IJ=u z2v_8-z%wP)m%1uEtoKur;#G!MQJGft}dew zm$TlGrGbH~3?{0t_FYG5 zf9~xx$4%Qx|5;m@uW7W-k$2q14hGYMqtX(CoP8%D8gtwk9YPY9h5D+h_@S!L?v*E| zg}Z!q&ot^$P(Oc#b@e%y9a0YjYNll5CCdCpBONfIP}3|n;>6j!BtNP!y~)B{2%ACZ z{>@3GFMj$sngiWD*mRbuaB#XFtDhfw>#ZF}?}5)xERaEfZ*}E70KbNgRwP4utE!Ce zf!n5=FOba~5cfA!Z)gGI5|)m6Cc+)wgAm6#o;gtg&g<7WdPQnhxbjUv>!-CQmRV0s z<2WjpSGknGH`MI3&m56A0jVf!jbDJ`MC9vuqykD{nk1RS_G6!{aQ2g0_HT!4jA`IR zf^0zxo84(%?|xRJe2Zsu#qKc)2A#vvv>DVvm)Fg&yNedwsvbl78t8T{E49+UNcFa$o>?;z qg;w^;-I5+q8oTZz8c0T}3+=oafZhWsB3o^Wdb literal 484 zcmVXaE2J;z>k7R7i>KltBu@Fc3w9 z-~m#!ZnctjU-1A!4Ii{k`;{wdf=Z-tMG1lvmTAEO z*kU(-50nMG?q&X{Pgsb#1+`g;nvhly+Rear3-lh8PsLCkK#(UAz&t<#mpzr}OHkaey|0Y5~pzV<7A!2;$162Lsbg1~N~Jb<7) a0NemL)@*{+?Az)90000