From 8bb0fbcd1a2c7e29e0b5dbd7f92eaed15b366cf0 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Thu, 18 Jan 2024 23:03:39 +1100 Subject: [PATCH] Fixes/tweaks from testing bonfires and cooking. --- code/game/objects/items_drying.dm | 16 ++- code/game/objects/structures/wood_fire.dm | 39 ++++---- code/modules/food/food/snacks.dm | 92 +++++++++--------- code/modules/food/food/snacks/meat.dm | 4 +- code/modules/hydroponics/grown.dm | 4 +- code/modules/hydroponics/seed.dm | 2 +- .../materials/materials/organic/wood.dm | 4 +- .../sheets/organic/tanning/leather_wet.dm | 2 +- .../sheets/organic/tanning/tanning_rack.dm | 37 +++++-- code/modules/materials/sheets/organic/wood.dm | 4 +- icons/obj/drying_rack.dmi | Bin 1083 -> 1282 bytes icons/obj/wood_fire.dmi | Bin 16293 -> 15388 bytes maps/cynosure/cynosure-7.dmm | 2 +- 13 files changed, 122 insertions(+), 84 deletions(-) diff --git a/code/game/objects/items_drying.dm b/code/game/objects/items_drying.dm index cf5552eac9..c1126919ff 100644 --- a/code/game/objects/items_drying.dm +++ b/code/game/objects/items_drying.dm @@ -6,6 +6,8 @@ var/drying_threshold_temperature = 500 // If set to a type, drying this item will convert it to that type. var/dried_type + // Set if colour should be passed to dried product. + var/dried_product_takes_color = TRUE /obj/item/proc/is_dryable() return drying_wetness > 0 @@ -20,17 +22,23 @@ // Returns null for no change, or an instance for a successful drying. /obj/item/proc/dry_out(var/obj/rack, var/drying_power = 1, var/fire_exposed = FALSE, var/silent = FALSE) - if(!dried_type) + + if(!dried_type || !is_dryable()) return + if(drying_wetness > 0) drying_wetness -= drying_power if(drying_wetness > 0) return + var/obj/item/thing = get_dried_product() - if(color) + if(!thing) + return + + if(color && dried_product_takes_color) thing.color = color - if(!silent && rack) - rack.visible_message(SPAN_NOTICE("The [src] is dry!")) + if(isturf(loc) && !silent) + visible_message(SPAN_NOTICE("\The [src] [gender == PLURAL ? "are" : "is"] dry!")) if(thing != src) qdel(src) return thing diff --git a/code/game/objects/structures/wood_fire.dm b/code/game/objects/structures/wood_fire.dm index f9b7dfb33f..40bff94185 100644 --- a/code/game/objects/structures/wood_fire.dm +++ b/code/game/objects/structures/wood_fire.dm @@ -27,9 +27,11 @@ return ..() /obj/structure/wood_fire/proc/get_upgrade_options() + if(grill || can_buckle) + return null if(!grill) LAZYADD(., "Grill") - else if(!can_buckle) + if(!can_buckle) LAZYADD(., "Stake") /obj/structure/wood_fire/proc/try_build_feature(var/mob/user, var/obj/item/stack/rods/rods) @@ -202,19 +204,12 @@ if(burning) // Draw our actual fire icon. - var/fire_state - if(fuel_amount >= 10) - fire_state = "[base_icon_state]_intense" - else if(fuel_amount >= 5) - fire_state = "[base_icon_state]_hot" - else - fire_state = "[base_icon_state]_warm" - var/image/I = image(icon, fire_state) + var/image/I = image(icon, ((fuel_amount >= 5) ? "[base_icon_state]_hot" : "[base_icon_state]_warm")) I.appearance_flags = RESET_COLOR | KEEP_APART add_overlay(I) // If we're capable of burning buckled mobs (usually via a stake), - // draw a second intense fire overlay and offset it to cover the mob. + // draw an intense fire overlay and offset it to cover the mob. if(fire_is_burning_mobs()) I = image(icon, "[base_icon_state]_intense") I.pixel_y = 13 @@ -263,7 +258,7 @@ // See if we can dry out anything around us, or cook any food. var/grilling = FALSE - for(var/obj/item/thing in view(2, src)) + for(var/obj/item/thing in view(1, src)) var/on_top_of_fire = thing.loc == loc if(on_top_of_fire) if(!grilling && istype(thing, /obj/item/reagent_containers/food/snacks)) @@ -274,14 +269,13 @@ thing.dry_out(src, max(1, 3 - get_dist(thing, src)), on_top_of_fire) // If we're cooking food, play a food cooking souond. - if(grilling) - if(grill_loop) - if(locate(/obj/item/reagent_containers/food/snacks) in contents) - if(!grill_loop.started) - grill_loop.start(src) - else - if(grill_loop.started) - grill_loop.stop(src) + if(grill_loop) + if(grilling) + if(!grill_loop.started) + grill_loop.start(src) + else + if(grill_loop.started) + grill_loop.stop(src) // If we're low enough, don't burn anything or put out // any significant heat, they need to refuel the fire. @@ -386,4 +380,9 @@ /obj/structure/wood_fire/fireplace/stove/get_fuel_overlay(var/fuel_amount) . = ..() - LAZYADD(., "[base_icon_state]_cover") + if(!.) + . = "[base_icon_state]_cover" + else if(islist(.)) + . += "[base_icon_state]_cover" + else + . = list(., "[base_icon_state]_cover") diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index e9a1930280..dc635959a0 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -4,6 +4,10 @@ desc = "yummy" icon = 'icons/obj/food.dmi' icon_state = null + center_of_mass = list("x"=16, "y"=16) + w_class = ITEMSIZE_SMALL + force = 0 + var/bitesize = 1 var/bitecount = 0 var/trash = null @@ -23,9 +27,18 @@ var/package = FALSE // If this has a wrapper on it. If true, it will print a message and ask you to remove it var/package_trash // Packaged meals drop this trash type item when opened, if set var/package_open_state// Packaged meals switch to this state when opened, if set - center_of_mass = list("x"=16, "y"=16) - w_class = ITEMSIZE_SMALL - force = 0 + + // Halfassed version of Crabs' cooking system on Cit, should + // be folded into that if it is ported to Polaris. + + /// What object type the food cooks into. + var/backyard_grilling_product = /obj/item/reagent_containers/food/snacks/badrecipe + /// How many SSobj ticks it takes for the food to cook. + var/backyard_grilling_rawness = 30 + /// The message shown when the food cooks. + var/backyard_grilling_announcement = "smokes and chars!" + /// The span class used for the message above. Burned food defaults to SPAN_DANGER. + var/backyard_grilling_span = "notice" /obj/item/reagent_containers/food/snacks/Initialize() . = ..() @@ -57,47 +70,37 @@ return "almost dried" return "dehydrated" -/obj/item/reagent_containers/food/snacks/dry_out(var/obj/rack, var/drying_power = 1, var/fire_exposed = FALSE, var/silent = FALSE) +/obj/item/reagent_containers/food/snacks/proc/get_backyard_grilling_text(var/obj/rack) + var/moistness = backyard_grilling_rawness / initial(backyard_grilling_rawness) + if(moistness > 0.65) + return "uncooked" + if(moistness > 0.35) + return "half-cooked" + if(moistness) + return "nearly cooked" + return "cooked" - // If it's a direct fire, cook the food instead. - if(fire_exposed) - return grill(rack) +/obj/item/reagent_containers/food/snacks/examine(mob/user) + . = ..() + if(backyard_grilling_rawness > 0 && backyard_grilling_rawness != initial(backyard_grilling_rawness)) + . += "\The [src] is [get_backyard_grilling_text()]." - // Otherwise, try to dry it out. - if(!dried_type || dry) - return null - if(dried_type == type) +/obj/item/reagent_containers/food/snacks/get_dried_product() + if(dried_type == type && !dry) dry = TRUE name = "dried [name]" color = "#aaaaaa" - if(rack && !silent) - rack.visible_message(SPAN_NOTICE("\The [src] is dry!")) return src - return ..() -/obj/item/reagent_containers/food/snacks - - // Halfassed version of Crabs' cooking system on Cit, should - // be folded into that if it is ported to Polaris. - - /// How many SSobj ticks of cooking the food has experienced. - var/backyard_grilling_progress = 0 - /// What object type the food cooks into. - var/backyard_grilling_product = /obj/item/reagent_containers/food/snacks/badrecipe - /// How many SSobj ticks it takes for the food to cook. - var/backyard_grilling_threshold = 10 - /// The message shown when the food cooks. - var/backyard_grilling_announcement = "smokes and chars!" - /// The span class used for the message above. Burned food defaults to SPAN_DANGER. - var/backyard_grilling_span = "notice" +/obj/item/reagent_containers/food/snacks/dry_out(var/obj/rack, var/drying_power = 1, var/fire_exposed = FALSE, var/silent = FALSE) + return fire_exposed ? grill(rack) : ..() /obj/item/reagent_containers/food/snacks/proc/grill(var/atom/heat_source) - if(!backyard_grilling_product || !backyard_grilling_threshold) + if(!backyard_grilling_product || backyard_grilling_rawness <= 0) return null - backyard_grilling_progress++ - if(backyard_grilling_progress >= backyard_grilling_threshold) - backyard_grilling_progress = 0 + backyard_grilling_rawness-- + if(backyard_grilling_rawness <= 0) var/obj/item/food = new backyard_grilling_product food.dropInto(loc) if(backyard_grilling_announcement) @@ -916,7 +919,8 @@ filling_color = "#FFDEFE" center_of_mass = list("x"=17, "y"=13) bitesize = 2 - drying_wetness = 20 + drying_wetness = 60 + dried_type = /obj/item/reagent_containers/food/snacks/jerky/fish backyard_grilling_product = /obj/item/reagent_containers/food/snacks/grilledfish backyard_grilling_announcement = "steams gently." @@ -1033,7 +1037,7 @@ bitesize = 6 backyard_grilling_product = /obj/item/reagent_containers/food/snacks/xenomeat/spidermeat/charred backyard_grilling_announcement = "smokes as the poison burns away." - drying_wetness = 20 + drying_wetness = 60 dried_type = /obj/item/reagent_containers/food/snacks/jerky/spider/poison /obj/item/reagent_containers/food/snacks/xenomeat/spidermeat/add_venom() @@ -1044,9 +1048,8 @@ name = "charred spider meat" desc = "A slab of green meat with char lines. The poison has been burned out of it." color = COLOR_LIGHT_RED - drying_wetness = null - dried_type = null backyard_grilling_product = /obj/item/reagent_containers/food/snacks/badrecipe + dried_product_takes_color = FALSE dried_type = /obj/item/reagent_containers/food/snacks/jerky/spider /obj/item/reagent_containers/food/snacks/xenomeat/spidermeat/charred/add_venom() @@ -1094,9 +1097,9 @@ /obj/item/reagent_containers/food/snacks/donkpocket/grill(var/atom/heat_source) - backyard_grilling_progress++ - if(backyard_grilling_progress >= backyard_grilling_threshold) - backyard_grilling_progress = 0 + backyard_grilling_rawness-- + if(backyard_grilling_rawness <= 0) + backyard_grilling_rawness = initial(backyard_grilling_rawness) // We're already warm, so we burn. if(warm) @@ -1696,9 +1699,10 @@ center_of_mass = list("x"=16, "y"=12) bitesize = 2 backyard_grilling_product = null + backyard_grilling_rawness = 10 /obj/item/reagent_containers/food/snacks/badrecipe/grill(var/atom/heat_source) - if(!backyard_grilling_progress) // Smoke on our first grill + if(backyard_grilling_rawness <= 0) // Smoke on our first grill // Produce nasty smoke. var/datum/effect_system/smoke_spread/bad/burntfood/smoke = new /datum/effect_system/smoke_spread/bad/burntfood playsound(src, 'sound/effects/smoke.ogg', 20, 1) @@ -1709,8 +1713,8 @@ var/obj/machinery/firealarm/FA = locate() in get_area(src) if(FA) FA.alarm() - backyard_grilling_progress++ - if(backyard_grilling_progress >= backyard_grilling_threshold) + backyard_grilling_rawness-- + if(backyard_grilling_rawness <= 0) qdel(src) /obj/item/reagent_containers/food/snacks/badrecipe/Initialize() @@ -8184,6 +8188,6 @@ nutriment_desc = list("flaky grilled fish" = 5) /obj/item/reagent_containers/food/snacks/grilledfish/sivian - desc = "A lightly grilled fish fillet. This one is blue; it's probably an illegally fished native species." + desc = "A lightly grilled fish fillet. This one is blue, so you can expect a visit from the Sif Department of Fisheries." icon_state = "grilledsiffish" nutriment_desc = list("flaky grilled fish" = 5, "a mild, musky aftertaste" = 1) diff --git a/code/modules/food/food/snacks/meat.dm b/code/modules/food/food/snacks/meat.dm index be102ca7e9..523bc847ca 100644 --- a/code/modules/food/food/snacks/meat.dm +++ b/code/modules/food/food/snacks/meat.dm @@ -5,7 +5,7 @@ health = 180 filling_color = "#FF1C1C" center_of_mass = list("x"=16, "y"=14) - drying_wetness = 20 + drying_wetness = 60 dried_type = /obj/item/reagent_containers/food/snacks/jerky/meat /obj/item/reagent_containers/food/snacks/meat/get_drying_state() @@ -46,7 +46,7 @@ center_of_mass = list("x"=17, "y"=20) backyard_grilling_product = /obj/item/reagent_containers/food/snacks/cutlet backyard_grilling_announcement = "sizzles as it is grilled through." - drying_wetness = 10 + drying_wetness = 30 dried_type = /obj/item/reagent_containers/food/snacks/jerky/cutlet /obj/item/reagent_containers/food/snacks/rawcutlet/Initialize() diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index be9f5930a2..e51218446c 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -9,7 +9,7 @@ slot_flags = SLOT_HOLSTER drop_sound = 'sound/items/drop/herb.ogg' pickup_sound = 'sound/items/pickup/herb.ogg' - drying_wetness = 20 + drying_wetness = 45 var/plantname var/datum/seed/seed @@ -40,7 +40,7 @@ name = "[seed.seed_name]" trash = seed.get_trash_type() backyard_grilling_product = seed.backyard_grilling_product - backyard_grilling_threshold = seed.backyard_grilling_threshold + backyard_grilling_rawness = seed.backyard_grilling_rawness backyard_grilling_announcement = seed.backyard_grilling_announcement update_icon() diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index f626e35086..77340c7765 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -28,7 +28,7 @@ var/force_layer // Backyard grilling vars. Not passed through genetics. - var/backyard_grilling_threshold = 5 + var/backyard_grilling_rawness = 20 var/backyard_grilling_product = /obj/item/reagent_containers/food/snacks/badrecipe var/backyard_grilling_announcement = "smokes and chars!" diff --git a/code/modules/materials/materials/organic/wood.dm b/code/modules/materials/materials/organic/wood.dm index 62c31b0d56..49a5ea1047 100644 --- a/code/modules/materials/materials/organic/wood.dm +++ b/code/modules/materials/materials/organic/wood.dm @@ -20,6 +20,7 @@ destruction_desc = "splinters" sheet_singular_name = "plank" sheet_plural_name = "planks" + var/drying_rack_type = /obj/structure/drying_rack/wood /datum/material/wood/generate_recipes() ..() @@ -42,7 +43,7 @@ new /datum/stack_recipe("coilgun stock", /obj/item/coilgun_assembly, 5, pass_stack_color = TRUE, recycle_material = "[name]"), new /datum/stack_recipe("crude fishing rod", /obj/item/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), new /datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1, recycle_material = "[name]"), - new /datum/stack_recipe("drying rack", /obj/structure/drying_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]"), + new /datum/stack_recipe("drying rack", drying_rack_type, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]"), new /datum/stack_recipe("roofing tile", /obj/item/stack/tile/roofing, 3, 4, 20, recycle_material = "[name]"), new /datum/stack_recipe("shovel", /obj/item/shovel/wood, 2, time = 10, on_floor = TRUE, supplied_material = "[name]") ) @@ -52,6 +53,7 @@ stack_type = /obj/item/stack/material/fuel/wood/sif icon_colour = "#0099cc" // Cyan-ish stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) // Alien wood would presumably be more interesting to the analyzer. + drying_rack_type = /obj/structure/drying_rack/sifwood /datum/material/wood/sif/generate_recipes() ..() diff --git a/code/modules/materials/sheets/organic/tanning/leather_wet.dm b/code/modules/materials/sheets/organic/tanning/leather_wet.dm index 421ec67ac4..a806cb0ca6 100644 --- a/code/modules/materials/sheets/organic/tanning/leather_wet.dm +++ b/code/modules/materials/sheets/organic/tanning/leather_wet.dm @@ -11,7 +11,7 @@ no_variants = FALSE max_amount = 20 stacktype = "wetleather" - drying_wetness = 30 + drying_wetness = 120 dried_type = /obj/item/stack/material/leather /obj/item/stack/wetleather/get_drying_state(var/obj/rack) diff --git a/code/modules/materials/sheets/organic/tanning/tanning_rack.dm b/code/modules/materials/sheets/organic/tanning/tanning_rack.dm index 5ada3e6298..cf53504215 100644 --- a/code/modules/materials/sheets/organic/tanning/tanning_rack.dm +++ b/code/modules/materials/sheets/organic/tanning/tanning_rack.dm @@ -1,10 +1,20 @@ /obj/structure/drying_rack name = "drying rack" - desc = "A rack used to stretch leather out and hold it taut during the tanning process." + desc = "A rack used to hold meat or vegetables for drying, or to stretch leather out and hold it taut during the tanning process." icon = 'icons/obj/drying_rack.dmi' icon_state = "rack" + var/dismantle_product = /obj/item/stack/material/steel + var/dismantle_amount = 3 var/obj/item/drying +/obj/structure/drying_rack/wood + icon_state = "rack_wooden" + dismantle_product = /obj/item/stack/material/fuel/wood + +/obj/structure/drying_rack/sifwood + icon_state = "rack_wooden_sif" + dismantle_product = /obj/item/stack/material/fuel/wood/sif + /obj/structure/drying_rack/Initialize() . = ..() START_PROCESSING(SSobj, src) // SSObj fires ~every 2s , starting from wetness 30 takes ~1m @@ -36,13 +46,28 @@ if(drying_state) add_overlay(drying_state) -/obj/structure/drying_rack/attackby(var/obj/item/I, var/mob/user) - if(istype(I) && I.is_dryable() && !istype(I, /obj/item/stack/material/fuel)) - if(user.unEquip(I)) - I.forceMove(src) - drying = I +/obj/structure/drying_rack/attackby(var/obj/item/W, var/mob/user) + + if(W.is_wrench()) + playsound(src, W.usesound, 75, 1) + visible_message(SPAN_NOTICE("\The [user] begins dismantling \the [src].")) + if(do_after(user, 5 SECONDS * W.toolspeed)) + visible_message(SPAN_NOTICE("\The [user] dismantles \the [src].")) + if(drying) + drying.dropInto(loc) + drying = null + if(dismantle_product && dismantle_amount) + new dismantle_product(loc, dismantle_amount) + qdel(src) + return TRUE + + if(!drying && W.is_dryable() && !istype(W, /obj/item/stack/material/fuel)) + if(user.unEquip(W)) + W.forceMove(src) + drying = W update_icon() return TRUE + return ..() /obj/structure/drying_rack/attack_hand(var/mob/user) diff --git a/code/modules/materials/sheets/organic/wood.dm b/code/modules/materials/sheets/organic/wood.dm index 7e8def218d..8f2d6d3882 100644 --- a/code/modules/materials/sheets/organic/wood.dm +++ b/code/modules/materials/sheets/organic/wood.dm @@ -20,7 +20,7 @@ drop_sound = 'sound/items/drop/wooden.ogg' pickup_sound = 'sound/items/pickup/wooden.ogg' no_variants = FALSE - drying_wetness = 50 + drying_wetness = 120 dried_type = /obj/item/stack/material/fuel/wood/dried bonfire_fuel_time = 3 MINUTES @@ -57,7 +57,7 @@ description_info = "Use inhand to craft things, or use a sharp and edged object on this to convert it into two wooden planks." drop_sound = 'sound/items/drop/wooden.ogg' pickup_sound = 'sound/items/pickup/wooden.ogg' - drying_wetness = 80 + drying_wetness = 180 dried_type = /obj/item/stack/material/fuel/log/dried bonfire_fuel_time = 4 MINUTES var/plank_type = /obj/item/stack/material/fuel/wood diff --git a/icons/obj/drying_rack.dmi b/icons/obj/drying_rack.dmi index 950ada402ed95b6c9a62236ed04e83d9a617fbf9..618b0ae5d656792fc5d9c64617a3bebc7c97dc2e 100644 GIT binary patch delta 1262 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 Cr7J`L literal 16293 zcmcJ$WmH^2vn~uFNN`AS4S@tgaCevB1SdGb-6aez!9yUpYj6l|gS)$1aF;;`hWR${ zx$FG8KfZg{xj$yj)~@dA>ZhKnt{twTB!h)cijIJQfc05c@(Th2q7m>DMMD9u1dbMZ z11Imi)wNwE&0I{KtsGsg9PAMgJkx*w8jT2IeIq?TsHV4M#{jFI*5D2@bDRWs{hYMH zl2rRO!|ou0LGqQ$iYAcW=eFnjW8%3Nbcp$9CdX1Pw>Vb^wT=V5*N-mE4x{$Gd~v68 z+gp=Q4QQBzA|(tVeaLhn6DY*C3=CYA)!!-iz{3J^;Zm+ooo*Bq6$x$@BJ>O@mxe}F z`q%Sss7WKEFKk^LMGMi&|0T6pzcpjkM~~(igd~m2y%;Rs-RS99wec3wUFH&el<%y0 zpBisDsyrZ@xi^tM-|#2!2{n&w3FnTHv_wDlobYy^mY2k#MIh+4mYk^uS)z5B^;WdI zRr}a>Q;#`Fuq?EJt^dfCa<_cW>yKXD9}r=pV{<+*Bq*v#PKpA8_1qK!0yV;CNilWL z^pm#lo@CbQtzqIQn{j_YaXy5C_Z-`nu4ige1(-$y}Cc?N35+Pd+Oa-6SmZt66 zKvOQMnRXsl4U2{~NiIuYEP21XFa9M@qikkap2Fz)=xT**Ma}#<+m4mA(4L$Kyv{SC*VfXAh-Kt$Q3a1f>+qV`BzoNL^Mi zg&h*bw{~EMiutnLtVpOdWZG|B1J)#2K20#tTW_~qi%RK<;Lr56-V)(<-LHKI+abA9 zZ`LJP0kxH&VBtPvMme(f7b-7RLvm&Cu9`i_WhMpMW*XJe?@^>EKYeT`UI4u=mo1ec zP$R%&%}*=gTbg~hc5l?$r}woYsAXYys}^h!X1i0UfS27+yl_cS;J_&Y(k)gTv;sMr zw=)uG7ulUR&B#VL-+UhjgIEZZC9JQMt@xIaQxOk z`NrPj(?8At!$kF|_)|xERUXA;lM?z`qVBLX$hRC3y)t@ST~4@zjb7{O2AgzzWU&w+EtUjrU8Y=pPy2#e zJR4vb4TXAR`uH^9-`&~wHfD}Sf9sCpQrji_4B^yLT-D5;*Iv2we zAf2aAaYG(Q(87IzBws1wD*K2&%es~pfvv|Dk27QKm23fx%f>p@0k^ zcMAG5u2*xzCVJrH;W`1s)cOOZcLD;Hv#>k&ha$}=-@g|h)RfU(A`r^nmCrmDUK`p$ zy~hJd__QL02l~!LEt5=Ue`ps&-3PsV2s?v0;u2pgRm3j7w2L9DB3Y%4-YqSnfkL7C z2M3=?%J}}yPQF_QgTW*abB;|DGKUDBV}jBn_)T-eXk(Oe%MM3M*l=Q`{AgM~okzhz zk>WIqmEvmWUy2b1wNH*PfpP~qvCpFD`55zqN!#B9m!Lu zkNb5rBuRdKr8N6n=TEE`8AuU}lJZiWC_d|;TOrHGkwScFQ%_o>+)ZE;@x*l{9I5iEzuwzM*7dgLJjkup0_e9v={oH;aI^YuKtZUfs z46|s0@wi=jPN~47Lqy^`tzfl+WmfQ-=33=h53kK%03e3&edKy#4s&|{a9>DsVS7C& zW`F{Snwy)e0DjCyud4=a2SSqn@053+n{2Sz21!(#~!+ z+F8xeaGlaWGc&USmCEPm!)XhP-KK-j7Fk-k>lL$kUu$Iy+rN|3)56Ni*nDa01?{nk ziHRuAU`piWXy3O^=Na&hEi12ai?vo<-hg3qlEe5TE=@~h{V!%S@HdTM=(rp+ghR~@ zN>x%*y-y=z;%Am*z* z%~$)b-@eh-*~-Ys5KRzZqAa$0aV+M3tEpJ@xxO5IUusI8#qg2)X>6{1^oMVvlEB@s ztwa|6sH0MNdcB(Y#}AI*FGXt?5#m4lEv^}i%83wwj4}){R={6#{4k-A7KU8iD;FU< z#=0jgXgw)bsT9>0{jGhwRAX?!^0b;%$RSz(Z(R|!H+oS9ILJE*qoHY^`-vII!t5k> zxQsG%7h1g_?`4Ts2L@z`Cd~BCJ5j0f>*~02QWg^JLojM&L3{k8AooIF9Q?74gzTc6iE6~Yi?Ozq?93Hr_WgU^yCZk{ z#VZaj`%lZur6ku7EAmnl5X@+9zWs3dCn0Ez3*?>lXl5qciq}603sUpe^@evRQZKSxqkX2yJ15JaT%X^qIcL8x>ZBnAsA_tr-QqSlD>laj2-(@X(y8ZUvDeQAS&u}FC==iXa*Z|CV4 zDub#_%cw!JnMN2B^Zf--0-{JAPR|{QzHEkA&fts{KP*ujo1@Hc32EjE5)u;oUIsOY z@82!ecDW+WDApAfec&1o!V$KN;&1u&euM{nfz?YMt-BLAx)p^|xd)0)CcAvr?|HO? zkE#3pFj;L+(Zr4&4YX#a!RbK18p=mQFA%CS3thajl`QDpALCAAzj`D0{@nGS?H zycXdnt5I909FNo%udE++bIjV$LrP0g>;;`YW8m~ZO%KOYyKbi=;GHuYp{Ath$Q1!MZWdlJaYHX(<+|7 zl}(-o{P_3VQ@WH=#gsxe8iNLV{h{Rf@~=sxS#QrU@(Z|cjMxn+O!>PSTQkU5*mJU8 zUa|N3Amna zQf8VNe%gA(%=ZdSJo5*l7TdhL+r_d(*icC^S>>W5M>NsPw;U!N;!07Irx_lr1uK4V z*b?k^z4D+KM~LDtz{q@HfM}Cz7+hoCgYLbE(7HQdP}-=0Gr1?^9SCESwduzyC7l3q3uu@ol)sPL!^E z0T&rZMd5&uT5PE8WHnnVS6X>yV&k`+q1xI|VMB+r5v^?npEE|?`QAv!COyeK)fIc5 zt*tHKK#&qAwUCXCO$-DQy6{Y2TGAcM6v7bw`jxC&8#8NMhL;?Lnld(z9z9MrI5Cm1 z)qq80nMbl4^{I4++ez0j*>54nzb3_=jco1mZ5rQLA!P`$Jy(hyx3g3;f8QI4Le4<@ zu9RHkcdyqUBHZussodP$qN3>xj5!1aqlR}(HoHPFad2uZCu#m&@Y>ng0gE-89({Cl zbY^ajot<4=kkZ21I-;*nI(L$O(=l0vzDJ5kUy>GobAK|gjK4hq324@wTde5%q{?!m z6o6Q=BIT_2gprdg>7M9XYHF{6)7{yvoL^}z;7mehy<}bGyu3WCql0|7i-sS0LL`ZU zR6Xr|V_mJ54KY<`A{`U!GCJvC|Hj`olpbdH%y+3w1Ztz9&w*R7Wpw=YwD4a zLprZaw=QCH)3~sxC?z%ZMaPMIjk_1d!!Prld|zR_qq{ra>+5St8oY|uOSu?IAvyXt zCcu=Yrji0SNYv1Ih8|TFS(owh;ajx7i?lx>j^vn`WG^dasW$=aKI=W!Y=c-08Qz|c zyXEiXN<33qn_0!t1A)jGfGRk-xbR~8tt>4!&NsUO9kTKB4-E{U zy?*@~Fez3(zR!TojHGao3wggu8kPe3&>4sfn7D$=Xep#CvMp>g8FUyA#nar*V<{z|Vl zHv~)F+y#${rsOQJCvI#*V)%tstHHT<+g)XIV1JhHt4gB6qRyj`N!7;g_E3wP(+`C5 zp9~Gp3i@_(9{_ATh(s+e4=HA_w6de-Vq!(tNp?-Q9;GsRp8j4(%%%^|?TTX%zHz)zGn9GS;23HU{x{#6d3Egy zOO3n_w-U1Ry)}IE)pzX6U52C1T6})mOjLqoW}M-ibiLpjB!R_yRqcSN#yu3yljlol z6=xmgTfR_lmo^0umAd-+F{o4W^t7Xw4c4S(LUS`eHU)b1(?3lmDhOV*^kk|&U`YQi zSd|5D@tJX=l!N+_bLe}HHUIU9T`1Bq^Dc)ow4-))GxIGf zOQ}vxddLUs&DLyT1{y#5xmHef0pqOgva?xQB=aethWRvl7h^~v-g*f?5;a_Q`AOWn!nt{H}Q6^0N$u9PQ-G%xQ33e%uaIzExpD zdeHS)eA+PSbP*Y83c7{8BnjW!Z#EY(J^A>kZy-OT|5+T=f-jcRlv241`os56?J}Sd5>9Dc8{F<90&z>IX z0O*RyrHy79>KAsz_zH%Z3NjN%W^x$5GgY;8?)E#txvXnh8$?nTj2_pL;UqQlhT__L zVEI8$kG!@&z{Nh@khcrxT!hDdNQC8J!5sYHBmfFnj0IcT*nIQ!Oc!Z^Xo4Tladet% z1JsJ%Ygc8*s8~kew0{r*wFp9{#MT;a2*KBFSzomFq^CJK6}xwwF9JMVFGt}J%u401 z-B?14mgMT1%uFwafr5g#toVhaP?Uq+TpSBI30IyX=1z+s`(t;~dg?`$LNRMARX?k&aTZUv;3G=rsI^X}(nX@#YM?iy64 zRaZ-%Aym#s&mSqS8L>t8Z{_q=Db!%W;^M5NWh7>1J7;Fz$S2k!;KoV-sPE>68?KK3- zW}z%xWL2QzN2>uI6BrQyQC{QC@&IO;SoJsQnK8ovv_8Eu?97#lJiqq|7SB=lD2oMc zkODq-FT;ZpurEEwPULi9P-=_4cZ(gUWySTH0C3YTXD3JDk~Fmq4UpY5hpCwvNjp2H zH13rVwTIXp{R;i#vZAyKaPBv#OB^Rs{YV{Q_!r3lO`edEP#}Mi`)@v~=}4W*lA_e7 zF^*=|O!#7k<%aEQi8?->G&-93jnw9;hu7UwyP*7ECqL<{Qokc<+n7KqKYNxUW##jn zIc=@70QZKWb<-5y@gH$D4D&`P4>nz7#v7RN&h`PoK-HB4!>Xt{<6-QtRKecA9;? zw8UK4JGL+5rhh6c_sSc_Hk>=p9fLPF(TMb_e$+$8gFm-gTljEff?cC`M`Wu zRJ7R>j>g0kF3{Dr*|V5a&&|f7eU!ydusKtl0=+LUWu?T?b5+f~P;N)0#s6H^J@HMf zcZnupMJevbwR>thW|ETNAQ<#edwObrHI9TM*fEwNPzQRr(J4RiyH}^6t}lOF&MlaCex|6CE?=YD*g)kZhuTe z7L2b#)Ruma(%l`?a0SIx~+x2>GnZ+3L_7 zM@seX{JVWV@SLaMSll}q&(qPV)$p4N8<)x=swb%B;FZVeO0k=VM~yGcyWU|PTa=af zo24b1f1S;IqC$(hHtBiP*B_&y>7$k-_fvv-9W$eZeamUl?~{rrOJ$*n#BR}TqER10 zKlObb#ByXgUffzReS6(fnE7!17Mm(i89sO~SbJn;ZDT`1miEmWUAW1q&1@^}qQR?m z%){>qAKD&Imr`nKUP6lajUDX?mG_-JMVb;Zcq&D%nWig17f11HzD^EoY8&{v$$FgAj#^yb%2e|%&7lWKI7bUB#!Ox?&*06 zQ2W^apz%HVgDhUBz};Q*WvKi8C?Lzur{63pHkJdRrhtkfayOit02-^HtPI&6Zr__y z_9>-(=ym`8LIW3_EYSC*WM&lII3z$o2)Ca3OApe z_1AWlMM>DshvhjlL2K|V4};ML@U1){(`CN>(B1W*<)HUl!M0oKeypQ|?LjoE2T`c^ zM-7%AfUhb5rewM8JCDtLg~nW^VWn7?XINO+Z{W_-(o(H8yJ6KN2924~uE2)e!b1L@ zzeRG<;$t-NmzTW}{Avei5DNcYCt(>FyiVm4vVl__=1UG0cr`>)c8oI@su zMa~<@Ynh)I(8O@rjRi~{IPr()ap;uyHE}8!P@0$zkTQ_abN(F`De>p%qi5(Sy&##w z{=J6q0WGj*q-3ymrE;@c&7JMqLQrn14-&)CMv?!9cQHgkhO&bREyPp+`7K%?^_!%{ z)re2e2T{aT)M$YcKM*kjsdsy zWLf+XX?$nacsQ|F=K(u7=58l;%q&}ps6J8t-V?G}u94dRuJ<%w2>a5*V z89&S;jM^2Su#6z}$?(r)U0GUZ`OTi=_$fV}8=Kd_dj0KkDet1(57r;*@?P&V`ixG; zwkf5N`Evo!^&YHe7+oaE!MVS6lFSIhOA0Z@wwnDeY&ud6pYU(sCd5Y3%@53rr!L8E z0%>?K>}WODmUf zTAd;7*MGga$O5!7$xJObcjWmlh&T-OS=2=U>BxTBr$vMEt9A1Ttn~NTo1}< z-sb$ZvMl2ZO8X{wz ze&59>m!yj%Y*uzpVqK!!ux=;&w%^gM783Bg@R~Ah#B{-Cw)GPh6x(>w@eZ=##OjL; zF$D3t42l&O9LGs1n4LVCwxcn}X2;Jww>NS!*%lkokTKJ(gK30dLT0;vQ}UhP59H2g zsy4dJebZK+rU(f#?)DH6DA}HC0a$O*t}t6C8|}G-snWe*FT1-Du3Q{{_R)oJ!S_|6 z5GE~5UMl9V)9cM+s2f{%#wKjpeMl!K$5>I9TU1o$Q`5ZLwsaw1s+_|NBm4DX@@u{f z{;}R3CJ!=s6Ki9oEK$z;xD(Bu^yd}ApCv}wDqx1b(XT(8d+V%Db@lCNu_)NWdxx{z zD5Pb0n6(k~e0o)ccRnH^Ar<^NOQ&^>HEg+$C3O4-*Fhj;(iNBJzL=fdzkgVb6jz{( zR&75N|5w>QRO2Dcgt|$-bpk)0ZGWa&U5YMN%cY z`!@{~_?^us8q@^lz&(-tV}4Uw+Prf=Ca$PA7k9|Wsi+9ud)g*hUN)pLN^9N1Yj?lj z!KLDpmq8^fDiTwTad~X~yME$p!(}mMTUJaG#B<|-`O-v5ON*WzFr|?B;l6=zwc-=M z%@D_9;)f&_i{}URst`y?2Ly2F)rFs}eX77Vs`W|Q`r&n~?e_NMEVGu+^Hb_?9Gm`m z+4->CHmPQIvD#- z&cL30CnqBdPlH||e8ICf7WbD=+qHoWz}lsx)w;sypgn)#0A7qES5lPs#c;u0e1fEX zvGp7LFT9a_&irD(MFF5_0~e^l_>o zhB|Oz&X)!~u_PATcYVS`A`C`pgh;?nE!?zG${;O{o(ME5#w{qaCzvkjXK9Sul1`pd%x zHg7-RBVve$*k z>}}9?$RJRi>sWkbUXa3UjF?d5xo_J&C^}eg&+;{jwjb#trzu(OTO{s4*GpH5_G5g3 zRnc=^0u8>HYoRXbhIZvv+b(V*$xoV&tcRCY#SfnL7~Q_ zlQv_SzhyngE|#`EEGt4P-t)A_>Pe-MCC<<(G)f1U6GbU>J4j^z{1IqMN*>Ou@6!1m z*f9uPo7i=)iIX%O=Mohm(w|Y5kbnnbq*0V-sl2GL3+;8=_=4}Xp7+^Qh%i8focU5L zjEMQBGn@f3Wys*+7V?OPR6+AX2q`vRmgi2pu}Xvx$-ocv?&O4(zZuU{%3E@TA=KZY z$hVCPnI)zx4G*o~_+uvPKKE@?ZTA|Rf8|SlRN*sGP>A4jJ6C-TId7q1zHX#Rj45!~ z>KXUcRBjP9EsmfJTClrSz(j>&$JopOH_s>M?iX4#Z~<c>~T2-N*y zEom4nhQ*V8!QeJwc;;FVvI1$PFxIs`!^jTs=Dlm`B z@@^tw_0jjxte+$zfpaCs0#GL+tY*Fo9mMHT(%lI@Z`S=@|%|G!rHuRz?F zVvcBRMq;=x!*G!Z{|8U1?10>OdtCwn-pd?sRa98?puGLAiFVfR?SetrhVqb3k#&DPA}T+s!32*#|9<-juOh|O`j^L&SHDB~_u&C30*=spb3nCv4ClyC3d%oGeFK6hr)LzzCXO`Z6&mo;MH4Y}CGHDSYTiV~xE!$c{J}24{5n;B$ zm`F6+WrLUYQWTKUPEc$wPUjSN%f9hq!vnZrQR2{TFx!xW+=%YKW8mMefePE>)B2o~ z|EV0J(#?ioZQ1`-f}PZ!o&2_eU#s&lj~WTv75i8dL`I18T;=BN2&>+{bJ`#U@CrsV zr|L)yKvk?|G3@t~zyzP8sq;C)IjLi^ni|6E4vw8lfDr?bsrmk&va=$GXu3^mPA78J zy9qv4lt;ejZnAZ==f$YkN6-)W&x*nIJ2WJ@s1S})=SbeeHSiAU)bT6Bz&3Z+B!ILm z#N;TEK297&BHUR7W@P?hL$Msp$9UsA=0Yy*FQ`sFgHH4NuYp#Geg*k`tzXh$xM|6` z=k^i1wrk|R*S)&E=(^)K(M3i0Py`nNfuAQrs!K|kZOne=WffbIB1(d|aN;wR3?Cvk z2Pmx0zC@~XH~#|Isb%YkR~@5Hh#{5VwVMyY9XW!>49?_+IB4fR(*z&2zUnSMQym!} ze!vBB?MzpSl|T3Ti|k&kOjf=9kcL9?ia#nZQV{?Oi(XL~QcAY@?M-v4(MP4xjhCW~ zip-5=;5g9MnMZx|Y{)8FBVNewsJ^Lw=53c&{#TQpG;gV5#*m7_Z4c7ZQ(E z2BCD@za|g)k$7kC+Ii^hzon$EMlTG26${|J+%?&H&aawYF(a>p!m_RUF4~FSe&EC6 zUED}Ca-z^Pz)6CRjk4keCG~BVqmiQ@4EuEI#i;bAM+qmB3bUr%(|+f^A+1!%L?KKl zG7(SVok#GXf7w0h(k(p(!+yayq*`s=uk`YfVnZ%FZA%TnB87%gtWq-kcCL;6H&J~? zRuluPtS%^kIlU5fP+#ut(*2<`!rKc8z7OkI3gF&=Ue2n}a{&v~18Mcn8r-A($?3%! zM{48c>}QcDxX=V2?x0G#QAZ4-AC@Qj9SIwj50|4Y`g>Ey850Vsj2DfKf9l?(Zwnfc zdqzpmvnwfo9d|1{;9uJg25g1^aC3TN=;&sf7&Ehv$XYz_eS7_1MKb2(sR6M6;aoV#HBV?VpSHacs9SG=OWcBBD$0A3~O-TIQBIXWZF|b>JAvu#VZovJ43^ag|UF z(3xJdM+72@!q5Fy9z1^qpl>&R1H3HYpN8t6H-IU89NWvAaY|-j&JI!L=qv1?!t@bX zByz?23)}ltyychbyRs4~&gl5dEqa$Wm3G{ov60X2o6tIWM ziOZ6YFEmkMkuzfL7bB4N_$@f8|Hghx`ky3fG?%RBHjd^iKM-S1t*&CxMtQD-LAp73 zP8uYv6F9A?q7+wftj@{3_$~cI-*)Ld8(H8&N7Lb}Kvtr~28S#{pi~JA`ks34?%{DX z=_n?x$Awac4HZBjxHD!)fBMAcn?e4>&1NL%PS~hHam6E`ts#aRAsHQ*coJ_#3Aq!$ zc2mPb2?C0{3P>t|>ZY%1TbI#4O8fi+>PbwME=`>Gxl;A37TORT5!akG6>x+98JVSi zP|mD<+=p0@RByirK06Ckv6c*&d4VMt`i|5`7|0C>5PS4B6tWMb0*0xlquV26CXFN{ne!Rfu z(BS9bP^ozgH;iB(ouRjkBxGTWnYwAeJOZ{pcT?>ifqe$n--Cm%`|BDLm#O9|^h;j` ziP_zruD%TFtd;e6xH$o8fPbGXH;mr_1(TzROkaW0;0+)_Ia&e~O=JEcH$rv0s`+(0 zxi3e2?q$zQ5HftY>9}yfk4~3cSND6Jl0RYo5t8!d5&oq@P3R*RS-}_}(tjkhRJkGD zT-Dq;{kfZOq^iw&fE1D$ATO126B`R_G+9_saHQ>atu%I6;}gPAM~8noNroigRDS!B zf(RNlTYmWVc5_B-Zaeu>v~nR+BGVNA@UzQyF`5X6q6Zqq(#a=Ueo!VKw*>cD0sqP= z=YU*ZugiS1U>iMd!g)&v2W2w90cW zV^*hrnDjTJ#%dNWMuM zZMCpl~SC%uxze$Tyq8Ev=Sae%y>-6gBwRl$K@=GwadDidDuI79EBU{hCiMyQ6 z=V)`+k;*WxFncm8N~zJBRNqM5FOK^r&Z%vLlG#^9=|%Va)0Lh^`IJ-{{9|5WmbmIU zPALnQ+`nxM;C%&Y>q$!P)R#CGeW}G{qjC0di_*28RACvYg1q9n6>at2HcGo(K{HE+ z$C}!#zR!$6O4YvgqVLyCleYR-Y~DCue=W;B%EPZu|x7H_F;X(Lr}0^$1p(!klH*?!l}HSS92+ zuw>QxQ}{Iws5#nw^BiGrOP-uC4IvHeA>EfT{x<^+{@8JV#;HPw!{h8NB<6c0hY5gL z=i45CaGUXK82%=Yx^&_32m|X#*PNB zidr3SF}F?5(*L8tjbXx^#m`APi`U zXu$#UZ{n119uPkLs2JH*8yj}|Fdqc9u9Vg?`JSM^g6mcqUGo(cnXC$Gjhv2HfE_c} zIS4Rq22N9izI;=^y6))hd2D_#Z6f{ zUP$6Q9@0jiu&&H}1JnC!HSOaEv*|Pbm)|w{^I#K031CwOwAFhGp3QqDIz4oL|M&;P zjY|r2{lWeDpXe%7Zo9$9Kfo2HKg22S;eGUtdP{wbSrsnbA^E}RMxyVP8-U`A9>ek~W|_j(pc@`AXtD5Ac-w zx;1*OxzNsSxYn#dt@v$cAf~p)cP`nA$89rFKAf(Z&ISfAk}u}3St%c54v%;X&VXS# z!#Sk+p=ORvE`R$@+KYUk-b;*3$W<0*CWiF=aOG16Q7FHxwSe=BiFpY`yB9UhugCOK zL^r}O*8=IGxrXMT>sfz*|G z{2t=&UqsgJL`n^Co3*LWgMZnDeIm$Zf$q!z-Tks_GsAHyo%%KQsOR}_erVm){LxMV zI3C`<1SBq=qo^i4iT`D{Vz}hu|82zomnSAl#Ev@aL3C(*$qo-&KKJcs;FGr0dyZxH zNRtjF2mcQ2FatRTGy;Eezn#vb>q23ovc_NxO}#E#MNcKkj)I+wt!v)kIXTV(q(%VyH4TQZ(WN z{{&NXSV835Le~bpxBmn!Etmf0pi!e@sx+WG6ewUC$t>}vQ*FXI<+STA9Y9JF@a&*F zGS&!lF3Ylo?uf>AAbHSLC}dw%(kNSzjVN9187_6FAGyspJI*%03hTCl!1jx&77Tc5 zV*H0mQZ(f%hAsPktD_1jZYKEZ?92JgXvG)*BtO8NWXbTQBS+o&x7yIA#c>nJYMP#? zoTn#-a_q|A@e1V9Qv_ZrJ*XUXM`winHFy%ZfVZ$?CIzU^6dgtQO1*qnAkAaQXfi!X zvUSO}xg`EEA)+>&7b)#(*o)x}upECy2qN70FU^)B_l?iye6so_H?hv4)^5u{6C|wP z;WwBFPRUgn-=z1JB0F?~|lq0*g zWt9)_QZFg4fyTR7qBqY?N>U@-DKN>gF!^i8Wf z!-#*Uk?1SPtCima!--6&mZBm^0*i`FOziX;N)^NZEce4=sh6U-WZLN2sL6EVicoIPV^m=dNtP@brp*T>~zRA zU`^GxljMPY1%EuH(~@Ibz_#U|@Eq9>F#!yl!tMiRSuF(`ntJU9VKTeQgQ)y-X2kWR zaVg15Fi-y^kmp;>+^smNqzU^{_#z7UFrh$6f))>Cah(C=^Lmc1$L^SeTQL_b?RQb) zL^od1{l=%qYc>b)j$Ojg;RmDCRl%Cm>9GT=Vcx40tm5PkFI=wTrr3{OC|?8#^(x~DzB5zFNm%=7`#5Eq1B~&uUAmDua)9OM9eb*&7*}<` z4x$54LrxMV4}2kZEl1*>T?>6i%OM4qPtD-Xzw0+}7Ceq8c;=M>>y80j^TDt9div(f ztI+V3cFI{`VhC~p^(Fg;ZK0;zR-Ht>Wv#Z^GFM{m(FdF>1*rKnV*^+NBv)=Y2AZ_2 zm1fV_m%oRPruGRpx@fdd4ZK18-g@noq@kfK@jCckiJ|iJqZqtehKgxFG+giM=7!KG zDC|N97bwV)^<+1FX`4Pi7EP=H5d@N5>9Nf6vRow4RiTNt*V!?|t_&1P2Kf8hhJVz_5T?#|*c6!F0z6E?Bu?_MVBOs7wBjKQFO0nu$(#K0Tp)YG_yr28ffRN@b4m$fr?ZC8AS8qi+6DhM1jPUV>7l! z?|-y)qD4=*I+6Q$nJo=oo!BlP2xRq(^X>4uoOKYXcwAgPn?6s`)VEA+_uF2l!vP{O uyB>cG(I`#aU=!+RD*OL?2jB-BqbaPDG(>5+ANc$p;j@&IWQDj<;Qt4BDjpaB diff --git a/maps/cynosure/cynosure-7.dmm b/maps/cynosure/cynosure-7.dmm index 4cdd454d05..4f4132d47e 100644 --- a/maps/cynosure/cynosure-7.dmm +++ b/maps/cynosure/cynosure-7.dmm @@ -205,7 +205,7 @@ /turf/simulated/floor/water/deep, /area/surface/outside/river/gautelfr) "zq" = ( -/obj/structure/drying_rack, +/obj/structure/drying_rack/sifwood, /turf/simulated/floor/outdoors/dirt/sif/planetuse, /area/surface/outside/wilderness/normal) "zS" = (