From 3e9e75cfcc4445c13ba573a3243dbf3169facdaa Mon Sep 17 00:00:00 2001 From: thgvr <81882910+thgvr@users.noreply.github.com> Date: Tue, 14 Nov 2023 14:08:39 -0800 Subject: [PATCH] The Evolution of Bar RP (#2470) ## About The Pull Request Ports Saunas & Towels from Skyrat. Some edits to the code to fit here, and to make it work a little more sane. Ports some improvements to radial menus from TG. ![image](https://github.com/shiptest-ss13/Shiptest/assets/81882910/23386cc1-d4d7-4312-af41-10b207ea15ce) ## Changelog :cl: add: Saunas, craftable with wooden planks. Uses wood for fuel, and requires water splashed on the sauna. add: Towels. You can use them in-hand to change it from waist, chest, or head. /:cl: --- code/_onclick/hud/radial.dm | 38 +++- .../items/stacks/sheets/sheet_types.dm | 4 + code/game/objects/structures/sauna.dm | 101 +++++++++ code/modules/cargo/packs/civilian.dm | 15 +- code/modules/cargo/packs/tools.dm | 10 +- code/modules/clothing/towels.dm | 206 ++++++++++++++++++ icons/effects/effects.dmi | Bin 901435 -> 901728 bytes icons/mob/clothing/towel.dmi | Bin 0 -> 695 bytes icons/obj/clothing/towel.dmi | Bin 0 -> 562 bytes icons/obj/structures.dmi | Bin 46798 -> 48455 bytes shiptest.dme | 2 + 11 files changed, 365 insertions(+), 11 deletions(-) create mode 100644 code/game/objects/structures/sauna.dm create mode 100644 code/modules/clothing/towels.dm create mode 100644 icons/mob/clothing/towel.dmi create mode 100644 icons/obj/clothing/towel.dmi diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index ff65665f95c1..6bc47aa6bcb8 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -62,9 +62,18 @@ GLOBAL_LIST_EMPTY(radial_menus) parent.finished = TRUE /datum/radial_menu - var/list/choices = list() //List of choice id's - var/list/choices_icons = list() //choice_id -> icon - var/list/choices_values = list() //choice_id -> choice + /// List of choice IDs + var/list/choices = list() + + /// choice_id -> icon + var/list/choices_icons = list() + + /// choice_id -> choice + var/list/choices_values = list() + + /// choice_id -> /datum/radial_menu_choice + var/list/choice_datums = list() + var/list/page_data = list() //list of choices per page @@ -199,6 +208,7 @@ GLOBAL_LIST_EMPTY(radial_menus) E.alpha = 255 E.mouse_opacity = MOUSE_OPACITY_ICON E.cut_overlays() + E.vis_contents.Cut() if(choice_id == NEXT_PAGE_ID) E.name = "Next Page" E.next_page = TRUE @@ -245,11 +255,17 @@ GLOBAL_LIST_EMPTY(radial_menus) var/I = extract_image(new_choices[E]) if(I) choices_icons[id] = I + if (istype(new_choices[E], /datum/radial_menu_choice)) + choice_datums[id] = new_choices[E] setup_menu(use_tooltips) -/datum/radial_menu/proc/extract_image(E) - var/mutable_appearance/MA = new /mutable_appearance(E) +/datum/radial_menu/proc/extract_image(to_extract_from) + if (istype(to_extract_from, /datum/radial_menu_choice)) + var/datum/radial_menu_choice/choice = to_extract_from + to_extract_from = choice.image + + var/mutable_appearance/MA = new /mutable_appearance(to_extract_from) if(MA) MA.layer = ABOVE_HUD_LAYER MA.appearance_flags |= RESET_TRANSFORM @@ -332,3 +348,15 @@ GLOBAL_LIST_EMPTY(radial_menus) if(!custom_check.Invoke()) return return answer + +/// Can be provided to choices in radial menus if you want to provide more information +/datum/radial_menu_choice + /// Required -- what to display for this button + var/image + + /// If provided, will display an info button that will put this text in your chat + var/info + +/datum/radial_menu_choice/Destroy(force, ...) + . = ..() + QDEL_NULL(image) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index f835bb776256..00d793b6e1fb 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -228,6 +228,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("coffin", /obj/structure/closet/crate/coffin, 5, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("sauna oven", /obj/structure/sauna_oven, 15, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("wooden barrel", /obj/structure/fermenting_barrel, 8, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("dresser", /obj/structure/dresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ @@ -278,6 +279,9 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ . = ..() . += GLOB.wood_recipes +/obj/item/stack/sheet/mineral/wood/twentyfive + amount = 25 + /obj/item/stack/sheet/mineral/wood/fifty amount = 50 diff --git a/code/game/objects/structures/sauna.dm b/code/game/objects/structures/sauna.dm new file mode 100644 index 000000000000..0b0a10565a3f --- /dev/null +++ b/code/game/objects/structures/sauna.dm @@ -0,0 +1,101 @@ +#define SAUNA_H2O_TEMP T20C + 60 +#define SAUNA_LOG_FUEL 150 +#define SAUNA_MAXIMUM_FUEL 3000 +#define SAUNA_WATER_PER_WATER_UNIT 5 + +/obj/structure/sauna_oven + name = "sauna oven" + desc = "A modest sauna oven with rocks. Add some fuel, pour some water and enjoy the moment." + icon_state = "sauna" + density = TRUE + anchored = TRUE + resistance_flags = FIRE_PROOF + var/lit = FALSE + var/fuel_amount = 0 + var/water_amount = 0 + +/obj/structure/sauna_oven/examine(mob/user) + . = ..() + . += "The rocks are [water_amount ? "moist" : "dry"]." + . += "There's [fuel_amount ? "some fuel" : "no fuel"] in the oven." + +/obj/structure/sauna_oven/Initialize() + . = ..() + RegisterSignal(src, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(add_water)) + +/obj/structure/sauna_oven/proc/add_water(atom/source, list/reagents, datum/reagents/source_reagents, method, volume_modifier, show_message) + SIGNAL_HANDLER + + if(method != TOUCH) // Only splashing/pouring + return + + for(var/reagent in reagents) + if(istype(reagent, /datum/reagent/water)) + water_amount += reagents[reagent] * SAUNA_WATER_PER_WATER_UNIT + +/obj/structure/sauna_oven/Destroy() + if(lit) + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/structure/sauna_oven/attack_hand(mob/user) + . = ..() + if(.) + return + if(lit) + lit = FALSE + STOP_PROCESSING(SSobj, src) + user.visible_message("[user] turns off [src].", "You turn on [src].") + else if (fuel_amount) + lit = TRUE + START_PROCESSING(SSobj, src) + user.visible_message("[user] turns on [src].", "You turn off [src].") + update_icon() + +/obj/structure/sauna_oven/update_overlays() + . = ..() + if(lit) + . += "sauna_on_overlay" + +/obj/structure/sauna_oven/update_icon() + ..() + icon_state = "[lit ? "sauna_on" : initial(icon_state)]" + +/obj/structure/sauna_oven/attackby(obj/item/T, mob/user) + if(T.tool_behaviour == TOOL_WRENCH) + to_chat(user, "You begin to deconstruct [src].") + if(T.use_tool(src, user, 60, volume=50)) + to_chat(user, "You successfully deconstructed [src].") + new /obj/item/stack/sheet/mineral/wood(get_turf(src), 30) + qdel(src) + + else if(istype(T, /obj/item/stack/sheet/mineral/wood)) + var/obj/item/stack/sheet/mineral/wood/wood = T + if(fuel_amount > SAUNA_MAXIMUM_FUEL) + to_chat(user, "You can't fit any more of [T] in [src]!") + return + fuel_amount += SAUNA_LOG_FUEL * wood.amount + wood.use(wood.amount) + user.visible_message("[user] tosses some \ + wood into [src].", "You add \ + some fuel to [src].") + return ..() + +/obj/structure/sauna_oven/process() + if(water_amount) + var/used_amount = min(water_amount / 10, 20) + water_amount -= used_amount + var/turf/pos = get_turf(src) + if(pos) + pos.atmos_spawn_air("water_vapor=[used_amount];TEMP=[SAUNA_H2O_TEMP]") + fuel_amount-- + + if(fuel_amount <= 0) + lit = FALSE + STOP_PROCESSING(SSobj, src) + update_icon() + +#undef SAUNA_H2O_TEMP +#undef SAUNA_LOG_FUEL +#undef SAUNA_MAXIMUM_FUEL +#undef SAUNA_WATER_PER_WATER_UNIT diff --git a/code/modules/cargo/packs/civilian.dm b/code/modules/cargo/packs/civilian.dm index 953196411f9e..154dce436ee7 100644 --- a/code/modules/cargo/packs/civilian.dm +++ b/code/modules/cargo/packs/civilian.dm @@ -53,6 +53,20 @@ Bundles */ +/datum/supply_pack/civilian/sauna_starter + name = "DIY Sauna Crate" + desc = "A Kalixcian staple. Comes with a set of five freshly cleaned towels, and enough wood to make your very own Sauna. Water not included." + cost = 500 + contains = list(/obj/item/stack/sheet/mineral/wood/twentyfive, + /obj/item/reagent_containers/glass/bucket/wooden, + /obj/item/towel, + /obj/item/towel, + /obj/item/towel, + /obj/item/towel, + /obj/item/towel,) + crate_name = "sauna starter crate" + crate_type = /obj/structure/closet/crate/wooden + /datum/supply_pack/civilian/book_crate name = "Book Crate" desc = "Surplus from the Nanotrasen Archives, these six books are sure to be good reads." @@ -272,7 +286,6 @@ crate_name = "masterwork fishing rod case" crate_type = /obj/structure/closet/crate/wooden - /datum/supply_pack/civilian/fishinghooks name = "Fishing Hook Variety Pack" desc = "A variety of fishing hooks to allow for more specialized fishing." diff --git a/code/modules/cargo/packs/tools.dm b/code/modules/cargo/packs/tools.dm index 2afbe0e85c2f..3d5389e23327 100644 --- a/code/modules/cargo/packs/tools.dm +++ b/code/modules/cargo/packs/tools.dm @@ -116,24 +116,24 @@ crate_type = /obj/structure/closet/crate/large /datum/supply_pack/tools/watertank - name = "Water Tank Crate" + name = "Fresh Water Supply Crate" desc = "Contains a tank of dihydrogen monoxide. Sounds dangerous." - cost = 600 + cost = 500 contains = list(/obj/structure/reagent_dispensers/watertank) crate_name = "water tank crate" crate_type = /obj/structure/closet/crate/large /datum/supply_pack/tools/hightank - name = "Large Water Tank Crate" + name = "Large Fresh Water Supply Crate" desc = "Contains a high-capacity water tank. Useful for botany or other service jobs." - cost = 1200 + cost = 1500 contains = list(/obj/structure/reagent_dispensers/watertank/high) crate_name = "high-capacity water tank crate" crate_type = /obj/structure/closet/crate/large /datum/supply_pack/tools/foamtank name = "Firefighting Foam Tank Crate" - desc = "Contains a tank of firefighting foam. Also known as \"plasmaman's bane\"." + desc = "Contains a tank of firefighting foam. Also known as \"Phorid's Bane\"." cost = 1500 contains = list(/obj/structure/reagent_dispensers/foamtank) crate_name = "foam tank crate" diff --git a/code/modules/clothing/towels.dm b/code/modules/clothing/towels.dm new file mode 100644 index 000000000000..22c1b29976fc --- /dev/null +++ b/code/modules/clothing/towels.dm @@ -0,0 +1,206 @@ +/// Default shape of the towel, when it's folded. +#define TOWEL_FOLDED "" +/// Chest-down variant of the towel. +#define TOWEL_FULL "chest" +/// Waist-down variant of the towel. +#define TOWEL_WAIST "waist" +/// Head variant of the towel. +#define TOWEL_HEAD "head" +/// Shape of the towel when it has been used, and is no longer neatly folded. +#define TOWEL_USED "used" + +/// Icon path to the obj icon of the towel. +#define TOWEL_OBJ_ICON 'icons/obj/clothing/towel.dmi' +/// Icon path to the worn icon of the towel. +#define TOWEL_WORN_ICON 'icons/mob/clothing/towel.dmi' + +/// How much cloth goes into a towel. +#define TOWEL_CLOTH_AMOUNT 2 + +/obj/item/towel + name = "towel" + desc = "Everyone knows what a towel is. Use it to dry yourself, or wear it around your chest, your waist or even your head!" + icon = TOWEL_OBJ_ICON + mob_overlay_icon = TOWEL_WORN_ICON + icon_state = "towel" + base_icon_state = "towel" + force = 0 + throwforce = 0 + throw_speed = 1 + throw_range = 3 // They're not very aerodynamic. + w_class = WEIGHT_CLASS_SMALL // Don't ask me why other cloth-related items are considered tiny, and not small like this one. + item_flags = NOBLUDGEON + resistance_flags = FLAMMABLE + flags_inv = HIDEHAIR // Only relevant when in head shape, but useful to keep around regardless. + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON + /// The shape we're currently in. + var/shape = TOWEL_FOLDED + +/obj/item/towel/examine(mob/user) + . = ..() + + if(!ishuman(user) && !iscyborg(user)) + return + + . += "" // Just for an empty line + + var/in_hands = TRUE + if(ishuman(user)) + in_hands = user.get_active_held_item() == src || user.get_inactive_held_item() == src + + if(in_hands) + . += span_notice("Use in hand to shape [src] into something different.") + + if(iscyborg(user)) + return + + if(in_hands && shape != TOWEL_FOLDED) + . += span_notice("Ctrl-click to fold [src] neatly.") + + if(shape == TOWEL_FULL || shape == TOWEL_WAIST) + . += span_notice("Alt-click to adjust the fit of [src].") + +/obj/item/towel/attack_self(mob/user, modifiers) + . = ..() + + /// Initializing this only once to avoid having to do it every time + var/static/list/datum/radial_menu_choice/worn_options = list() + + if(!length(worn_options)) + for(var/variant in list(TOWEL_FULL, TOWEL_WAIST, TOWEL_HEAD)) + var/datum/radial_menu_choice/option = new + var/image/variant_image = image(icon = TOWEL_OBJ_ICON, icon_state = "[base_icon_state]-[variant]") + + option.image = variant_image + worn_options[capitalize(variant)] = option + + var/choice = show_radial_menu(user, src, worn_options, require_near = TRUE, tooltips = TRUE) + + if(!choice) + return + + change_towel_shape(user, lowertext(choice)) + +/obj/item/towel/attackby(obj/item/I, mob/user, params) + if(I.tool_behaviour == TOOL_WIRECUTTER || I.get_sharpness()) + var/obj/item/stack/sheet/cotton/cloth/shreds = new (get_turf(src), 3) + if(!QDELETED(shreds)) //stacks merged + transfer_fingerprints_to(shreds) + shreds.add_fingerprint(user) + qdel(src) + to_chat(user, "You tear [src] up.") + else + return ..() + +/obj/item/towel/CtrlClick(mob/user) + . = ..() + + if(. == FALSE) + return + if(shape == TOWEL_FOLDED) + to_chat(user, span_warning("You can't fold a towel that's already folded!")) + var/in_hands = TRUE + if(ishuman(user) && shape == TOWEL_USED) + in_hands = user.get_active_held_item() == src || user.get_inactive_held_item() == src + if(in_hands) + change_towel_shape(user, TOWEL_FOLDED, silent = TRUE) + to_chat(user, span_notice("You fold [src] up neatly.")) + return + +/obj/item/towel/AltClick(mob/user) + . = ..() + + if(. == FALSE) + return + + if(!(shape == TOWEL_FULL || shape == TOWEL_WAIST)) + return FALSE + + if(!ishuman(user)) + return FALSE + + var/mob/living/carbon/human/towel_user = user + var/worn = towel_user.wear_suit == src + + change_towel_shape(user, shape == TOWEL_FULL ? TOWEL_WAIST : TOWEL_FULL, silent = worn) + + // No need to display the different message if they're not wearing it. + if(!worn) + return + + to_chat(user, span_notice(shape == TOWEL_FULL ? "You raise \the [src] over your [shape]." : "You lower \the [src] down to your [shape].")) + +/obj/item/towel/machine_wash(obj/machinery/washing_machine/washer) + . = ..() // This isn't really needed, including it in case we ever get dyeable towels. + make_used(null, silent = TRUE) + +/obj/item/towel/dropped(mob/user, silent) + . = ..() + + if(!ishuman(loc) && shape != TOWEL_FOLDED) + make_used(user, silent = TRUE) + +/* + * Helper to change the shape of the towel, so that it updates its look both + * in-hand and on the body of the wearer. + * + * Arguments: + * * user - Mob that's trying to change the shape of the towel. + * * new_shape - The new shape that the towel can be in. + * * silent (optional) - Whether we produce a to_chat to the user to elaborate on + * the new shape it is now in. Requires `user` to be non-null if `TRUE` in order to + * do anything. Defaults to `FALSE`. + */ +/obj/item/towel/proc/change_towel_shape(mob/user, new_shape, silent = FALSE) + if(new_shape == shape) + return + + shape = new_shape + + icon_state = "[base_icon_state][shape ? "-[shape]" : ""]" + + if(shape == TOWEL_HEAD) + flags_inv |= HIDEHAIR + else + flags_inv &= ~HIDEHAIR + + update_appearance() + update_slot_related_flags() + + if(!silent && user) + to_chat(user, span_notice(shape ? "You adjust [src] so that it can be worn over your [shape]." : "You fold [src] neatly.")) + +/* + * Helper proc to change the slot flags of the towel based on its shape. + */ +/obj/item/towel/proc/update_slot_related_flags() + switch(shape) + if(TOWEL_FULL) + slot_flags = ITEM_SLOT_OCLOTHING + body_parts_covered = CHEST | GROIN | LEGS + + if(TOWEL_WAIST) + slot_flags = ITEM_SLOT_OCLOTHING + body_parts_covered = GROIN | LEGS + + if(TOWEL_HEAD) + slot_flags = ITEM_SLOT_HEAD + body_parts_covered = HEAD + + else + slot_flags = NONE + body_parts_covered = NONE + + update_slot_icon() + +/* + * Simple helper to make the towel into a used towel shape. + * + * Arguments: + * * user - Mob that's making the towel used. Can be null if `silent` is `FALSE`. + * * silent (optional) - Whether we produce a to_chat to the user to elaborate on + * the new shape it is now in. Requires `user` to be non-null if `TRUE` in order to + * do anything. Defaults to `FALSE`. + */ +/obj/item/towel/proc/make_used(mob/user, silent = FALSE) + change_towel_shape(user, TOWEL_USED, silent) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 610c8768cd752866735cb2c59d435e7b976871d9..0aa256c631e428148e97de7cb47668ff901b7abc 100644 GIT binary patch delta 15364 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 diff --git a/icons/mob/clothing/towel.dmi b/icons/mob/clothing/towel.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fddf3762b61a17d652d17706e9c44fae6f3430ce GIT binary patch literal 695 zcmV;o0!aOdP)V=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zsU*KVHAgo&Bel3hiHkEOv#1!Pm5Vd2C^0t`#5P1%Tb`InwAzf+#1vdgl@(n5T)=Jy z0F|sZDKQM~tpET4%}GQ-R9J=WS3z>aAPiJY9?;@Gz!rKy3_Ku__5U}O^w43I8G7lV z(_tr<&4vvEV=Y7z6BB<47mmCGXW&Fj1Ri+8nhAwOOWbH5-dSY-6G~RkqBmGadNbGy z0fHN_(ohe_jV2~0CMNzZmW>D+M=Fq_mQ-9H2w!8qan*GA?rfm*j?I-bgq+1Ra?hDv zw?@6?1A*>*DQkjERLXh`bXxOKAR~$RgyP%1xrCyM31u88yxtOux`ZMM1N6l}(LmHC z6wyA)27M_(G3pAIK)IeUAXy&iFT721hXDuEP!DmVe}{b=^Cgb;aGqmc>&@wSJacv1 z>bEiZM;UWtyFf5pks>GHYi4)p!owA$6n7diEAv?(nKm7w?nU3@1Gs6=+u`yvaA`d~ zKmCmG!qHwRE*cm2LTS^15}HB(k3rm%{|x-Yv>Z!@Mf`aAb$Ix1P=3d_?!!Cbj3*{0 dCMNy}J^>F5S4n3CX+Z!0002ovPDHLkV1lq}C|3Xg literal 0 HcmV?d00001 diff --git a/icons/obj/clothing/towel.dmi b/icons/obj/clothing/towel.dmi new file mode 100644 index 0000000000000000000000000000000000000000..93001ef29bc3f9ddb5f6f80ebcca3a5f3890c43a GIT binary patch literal 562 zcmV-20?qx2P)fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3KBSB)>d0M~RCwC9|j)$T#HTOe;#vO@**gRq2)%r=}38G&v)+xP(Zx<%yX@tIbGF z#OVZO1y?^8a3BBxl?+Xg6?yf;0003!Nkl5RV>J1aIBH?_q+0jXRsQeBJ`aM!Ss1SiJ$yW<&>& z_=?e@xB!9KX$q1%B1If3K(|eR-U06+RDf-45xz@E@CUv3tjA(Z()w?JLUjgIv^79c znn;nn+a1L&odH9Bs)2if3@8q)CE%^jnP4xFBPkY1*>zpnCQ*yFD3E7-0gzU9ZYCd_ zJ_-ntrVGFix<|Sg!3ZX47~X9yuq7bObKyTJ-)$e*5;CRaZp@D!{d*1fU*;brm!%Ex z5nU5t0LB)-R4IkuZHIcCr&m)2ou7(2+C*;Xoek+AKy`M5OoK%oZL20W_i3n8C8089j0761SM07*qoM6N<$g2)%_ A=Kufz literal 0 HcmV?d00001 diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 7c265737266aecebd2e74a676eac9988d8db9361..a984d69cf0303af0a2b12cd5bd4e259f81154989 100644 GIT binary patch delta 8061 zcmZ8`Wl&tf*6kpH2_cZ+fx!a79fE5HcXt>hSkMI5gA*)3a0?n-0|W^cY;f1$&Om@L zxX$C=s`tLH-ucm0UAwwZuhpyfUVYB!Av*j9J)Ryo_R-dNleTiT{AB0iX6Nh#0(oU6 z&-`}U;Cg|z=87cJ^;Idu?Dya_*3~ACxFF6~5LIP^h>%lgt_0whpp^wjP{^-JypQ2M zWqW9AbC&4cvCO23Z}rfv=-vM=pQtc29^IhNFHMGq{b(N6y7K8Z3cdUO`(aIgPXAlI z<6RCE)h_)Xtj})GzPhRuO0(cFur=2(H4|?F;~`N38&c*+vh^CJF|IvjLQ1CQ1?+!h z7qiY^kF;PHT#-j`LkdJCEo*c!p{+v$LIZ_ne1=7i;8q*MrxOFB_5yxM`w&A*Fic@-d8-MOzPJXGf5@&#fMa)+Br>N6uELA?VjN4>+OUe ziYy-)#{IgjL~@j30ge5Q^A|Ix+%hZq}2db_}k6rqVYH3Dp*R6#72G?MUEC z+cKX%hO^VqlJvLs>^ zI9^#r-m_DEfFGQ%>u(#gFJ3f|R<`-O^AKyz7T)StcXw3C<}g2bscps+zgMc#pTNr- zYoyqJY`lcMR^dTpa)*d#s&p;Hcp)ZtqhzSa&(QZie?A2!c(9OQ~J;hvO;e<}T<)f7^A{toC91|_g zZ{4Xj1-qpFngBt&Cg+(Ua5+3X{N;0({9OTz-g8E=ADc#PUs}$iWn(p<9chA%fLmnU zL)UaBPx2U_XUG$!Ykk)F>CehK%i4osdLcd)1;Vcm$XQ{nr3`;A`VuBXA+_72>JM!D zpvfhEt!?FA(Vg|NLGYH*gRwo$4&vJ8{xSzawNrDbbapR& zqQc76KhetyBmNQaSwxrUd6>vGaC1b6`~3O3$FE3SnfF#QR;q7tQ2#a&+Ka%yV{wk> z(0pbXnx-OoOxnOx#upiqotks-8$TXfQ*P}A2zH_ zUwdT@_ZfC#le*(|SOV}}7?ig5vzfpesu4fpMY}zw%l|$-LL&O4`EOv=nLxiMr6lc? zWRSNfS}Y@c`+Chgg%hSKN@e5cCrY`NJpjJjh8ua^MRdFq;B^hgkTN*T%)=DKzS~su zD6YO79O4|@1+IX-s0?F3A{>ptEn<{~JBAOp&_J0X5GR$wPTr?1;}sZ-(E_vyEkn44 zL!J^Uf*Dw;pYdL2@xsMaSFdZOpbY2=bi}-cX(bkEm_`BSTd>hxKW3*)<&1S@SZD4~)OOrq#Pn-{c)=halHabL{+n)*N}#?t^e*FGhiYKf4>FHA5N*>cmc%sDvc(ZK{;zR&k_ zyi`Iar_P`rJ73+B1--WLJB9~w^mWi+SCe{nXSROpNu01&MHF~%Ow*}qD zC9#Oosw!P9pi?6+`r9fl(K7N*@m82EcmPUizC2CtG~q$HX3-tPp&T%j98Z!K3#5QMC7E0IB(yp z-M7cPgHl_H9S$Hrf|9WenfL^zw+;=pns4L?3p9D{fE0gmYA6)?sK==$e`_9eOG`^O zgCC)_wcHl9WG7x(>Vj@EbY{d(Z8w~p{d1Fw4`fABzKE#>p2dAVnI9a&$YiGr>tvic^P3%&} z!R0DkKW$It9C}&fJ!rH1eK(D!{JrPr5$z%%9PQxJRuqH>54U1_Y3b(&QJETdr%WAk zN4&0%5e_mLF(rt^43Y#jF2+tFq`^`EAaP$BaLvp>xYyQl`-XXBt*X2yLG>E5e5_h> z>Ma9#I}Jp2b zYvvWK|7+BZ%?UVvf0Cv=k9@`?p(pOEE)tfWU4g;Gw*$~UcXRMl{z6_Ln61jELPrvP0u!J8w1Bf(DhuKz zgT%qFsqvjQ)KJ$T(`wH?FNM-_bZ-6_$y`JW%i1I#-ou73joB$9^%LoEiwHVSrYLZ9 zK$kpAm;@v`DE$(@EVm-R6%x4>LJ9=J4;idxUp8$-7)8kK9q-r67NlDWA-MDZI>2PgF$@gAldd<%~y@isU1d@q~wVMVbdn}|a zKjxp1g-kF_%-1LoJC1uIX})at#%^@4eslTh;DCh@E>6bYJU#&(0`6JAE_zf@KG{c$ z39XL_i`VQ6eK7-t%UT95w)G(bBN^zFN+1(a(leT67Wwk>LL8KIYivdu!~NGEWjPtL ze;=WxkW`Z?4J1wdr|704U#ayv_zk8mG7rx%n(m$Q!dc5%ighS<>qco)PX@~rpAvH9 z37!Zo!#HXtC94^MnAq5LH{omN9DOLjlywB+r|^jw&JL_P@Y_B0EX3$Wo%a?5L z%cDwFxq3#1gP&JI?YrtYHUBNrw`lX5a|kaEcaZu#-}to)n*XU*nOdXF>AzL#c`imL z>LKtQFpxbY2uVT^O+-aSxqYx@*w3ewUmJh6Dg%yf1kNgB1OvA!Z8~Ih!bI*(6eEkC zVnqz=#xbSFJ;IWaYDOhLebJSc#3M`y0U0L5H#GY6K!5*KPjV*Q6{n`ux|NqcKJGyna6LoKmHbq_R9RHj83PDV4YvG)nbLz22|; zM^Zw3)G<*ZH^)bgPoMFr+Dd#gmfmsBK_nyDJ8FEE*BPsm@bBA#v0~ zmc(0zf0Mq9k?>8sRX>InlUVIDDqR&bKB@1El|)SoXC}76@_Zjge`fS_B1%5JRABo7 zG_tbZrmunGH5FCnm|(^%`Ea?R#s`-L+l8nN7Ongk$SZ}OUo6|{9n?&OE#p7M8a^4b z67(LWe6={Z%d;%lgn!#(rlzJQ^}N3?(x{Z*tC|_Lpbh0;N+5G>s-K>aIASKoW4aIt zw^D48WEM0ESl>!bPEPLIJV{W_sU>y+8qjkuuFgfivEmG12~&Gr4WyP-SKG|H{St-X zXux3AScHR_JnnCD6jhu~Di4Gc{0En{3=9er{g zna~2Gt>@9YnRLsOgH5a+++@|GRtJ(35}jT=Af?Lt>=(R*Hrg;P}hYTNB)O#g&N%F^L> zXL&?4zk|uKv=&zW;eBE+J4L2tZj1KyoDZQ*+&506_5cL96H#D836%4*sTFO6k1O)6 zqdptew@nyKdYuk(=OqxV33}HQcpW;H7nHs%uozIS_At9#&wu+S6V2iJNfPWKVc`;^ z243B9V*lzo25s6)>;>)wHO}c4UE^sF@9}@Y<^&Xqi|tCRn5I75#oo?gOg-yo6FnIg zsW5IP2&@Jy4(mSxL%q|F*)iiqAue%Ywwjd$A;iS;u!7BLhx1|Ep1gB%BRR?5$<+I_ zm}3}(WZC_2o!HpEJ1Y9o5kaz<1GxX_A_p!ik8QQ!z|UQ5)zfl))2046*aMtEDcq>M z(7uAQGX*Aj?TYx%aRD})*L>{2mO3Zsh`z(P00;OspoSC9AtJhXN@}>S7M3PN=l@Vs zFu++^8T(>bxQ2%?h3$e-z)^qfAw-T0j3-#-7yg`rpCK=IA1<56?W}nEvyZ&=fSkvw z#N&NbdD6(tJ_;1_T*Nyyot3FN^ldrCRtIqQTN?_+XmnZ}boQW99wZf$fPqop|jPA)xlY)w#;$ra8N@BpQh%*@W{yA(~jP+K$cUo@Zh)mR` z885~tm89v6)XHuak9u5-!;*ShGFnqxtt`2GC=r<^F{OU_RV+(xB~eFFUM8+jKy^ft zf;DEDZ|uwjRxbA$)u)r66;3U)FsS9drr2A6=#9r-$v5L>QTNrKm5`-&!De7Jz?aml z`w?heC%sj3L8v(=!K)ay!;~>ybq_V{`{PCwg2>B-u%^bna)Hv*N)c$7q>Q+=4)gU zC|Z+UiNa?MA694n>SPfr15F+`(2x?cz*p16!Q^$?h9KMhnD*QaigdFALdd=z{T$0h z`S4)1NZru=YKL=2$YJGxZtm%@_h?o}f0>n%(CuH>7^lUqD4HO5bW7n5d7G@`;W|B6vC}Wj}GVl?&lrF?R{OXi%Uh*wy9_~;LBYoO-kO3A*3P0s9uXfOW$#XyW_t2ABD;_31uyfFU2Eu zb@n6T8YWr;RH7y{0(@4*vi5~D1q_bAG%sjCvfY$dPnW+IREYhwJuL|SWvn1#VqA8nuenFfF2~>A0}l&nFv0!(eOrhZeqL!q``}eA5g`2P zbL`|syZSxzckT7{5UC)dT-v6#0nYDynIz!fBB$?P7&bO4=KP8=I&Mysq>*GFpQGMt zJf>cEn@exCLTjjS{H;Z~MqlG&Lf8<1Dm*dl$RUKQ6-u0T!iBEQu`@@!XKU?=?T<`< z17V|Fz&p%Kq+$xc7elPk;OfntJB<(j*KanInaU|5zHA>#86clOlF~iWpop;P)O?uT zy$zJMr576$PGQHg7wgF{SlXt}`&GeLdB?8*IDV-feSd=v*P1M{hw}5redIVe+OTX&)?7pBoUedeFX@*OnOmy*9BKH~d#L&hsdbG<7t?I799hMA zVQiOKrA@{}8f(_*>pxk^4gl4cPQgUn-x=#*$Ev}zrIF2#e~gpu3dVQJvaI5sg|y zstcF2Ald72fzEw*m8qTIJ)?P?FVcS6H_f`_xdtE2wzYoUTL3%S&>@a_N9sKANR>%7 zIKbEzh%r@X=0^_N@)FK2({~I+B5Dw?2cOiIShQ52KOTzG=(xZIkEUN0Nyr#)-3V;^ zT}d}S8;p2)Wi~22fHb+*TlAZ$8ia$TTc}&~F=(;G58~%|CTC(osZ)G0j?YpD*MuW* zb6=D}(`S5?Cq!vvgmtvZWiv4P%jiiY9aYYy?Rn|n*^-6-=68HSXT>$&#LCLkbbosh z-7&wyqQkEqFez>m{C&DISu9?6kKJD37$-1hrd@bUH~RxQedmMuh zCTO6BZ)f^!!ezKmlw)krluC_QeHq7hhV@S}f1#@@u97R!_a)~A+IyecS)u`Jg1?U4 zN9CuZmcga6-5Ff==$(27kK4^SYI??Af1^--rE3KbNbNkzFyGX1Bcea;RmZC*yQ`( zZ$d}hW9dF4iPx4oReS;LZ2&(B-WP=juf%fdQe#QYE|OOo>EbQc+a8*S zr53LnsU-=(;VRwcG98{yUyhu6vTI0@SDrt(X*g*OoqI+xez6Y^t%gTsA`ZiqL4o z4|LYEQ(zJ4{P%LKuWLOjXzG=S$6IYBl@e=dXMzxprSZm%%bg-lP0#FWY5Nj)t z2Va>unr>A`^7GIdL(%*jOnDsvGb^076)K*P9$6o{nuQ9A5}f0pzHA|h&b{bsod>h( z&i~~x(%yrP^i5b}lPn&l`I3JyYnXKKsT2}-d^j%e)5#@e>&;OG(20Y6^=>EcF)H{b z#fmgQC5;A%ZP>{eKPR0Lh1UCH3qunPGaVWzIRX8=%MA^5<#ui6uE9N5z z!_30-m~uzvxjsMbrWs+e$b0H@i#1tKKps3YgWfSF=R2d~2K$TkV{Bs~Rr$x`UxTgX zCvFAR!2e$Fe?1Y)B1}&RMWr)TGAY82gUzLB9af#^fv&0OX7cJew5(pWke)2^b!-v~ zP9i~`-SkasS#r#RjU-q{ZtZzTknu-PRRQN-5Hi*izI5eT0iqcf2<(_mopI+G^KW#f zfi(&oGo79O-(CL=O!(JQ)ZUnq2OnFFOH%CZD4Ob{8P_o@vsmRKg4@l&b-rBa#MCwW z7;K*Snv)WOB_A+`(Rt~t(&{JBZ%oG!JG-pU&osfqNV%j#{EH8Ac{!^ofMo~3kHm*h zwtVLc$19orf*6H8=BqQg$vNsQGtk?CfICyQ7UIHB*Y?2KIev-0)E{tX!V7D-S3DCm z-VvHsnpVv>p8jHwBKOjGtYUWz9`~;&b#AOo$7~2Cp5jR|`yZWj{5#HxJ;47`G#(U* zXDUfUr0YZ_$t?iZX-%HM20;m8O8f%Mx9^n(CTiqu&<*@CSL}{68>!Gvld*6T^^9Ea zPe!bc00(ns)K0d5iHGU!%B9fB_BoFpo%-Hx<2KCXKhqO_xhTsl+0W|lD?RagIe3sb zdV|0ZORyfFiBPt%tgIfvWiT^i#@?~{)CEC#$$*1TK% zsZ73zL{Ou-?2XM@4U42Cw*FV=`#vZKz&OX{Q5WHT*?eIua)iN>f)$_czYiY0?92p=OWK zQn9PweN`K$W4AP$Ex>`ZZP#b=vC~#vDpZ8jEAMsR&%%D@4(E56Zz6fj+RmId z@z&p~jBDE4oAcd$?I&%+*4J(KM~jGCoNWw{$!*S~N?K{}x<5UBF4*Z&1cr(M>EmW9 zlGQtbv)0SEc=vx@KOlpgp@{6@|6F5@@q!JulZ{QT?#INEME`u0?XZD+_}rr7;>&5- z_=fylZIs}|GSfQvsQ@G!BWrj+zDEUB#2lR38ynoSip}$9CI6RH0BsvaI3z}K8iv9* X$y2FfqhFu{Jw6IDs?t^O%!2<9Cw%jw delta 6388 zcmVs?CEG-6 zq@obQQVNSwT9Jo;5e(l*1cRF}qGzRXA&{u%B4vf0_2?VxH=-YD(LFdL*Eo#n!tw-- z!`cuGe3w%QT1dfJ^g`PZ#3-~H2Iz3R7s5Ti3upL;uSjSdwkc5EK;+-_iw`jJQ}9!- zsH?-d5zP0i_YUv8hV%xs>YP~>i6g?v`mRn^pbhx;QYVmA^f@|+0|-a@jHPGK+}pmW z`R%k&ep)SbE2le__6T~kCw{#?;id^*_U~UE7n|s>*KI{;^X+671|^xLABUX{H;3?} zdVW2q!^<)M0B=VG&JYVLEwdZ~_MLxwa8%cQ$G_*?t6e>ISK3`kfCK_Pd6+j?*v1cP zV|$V`PBKlM)YQ{Bon#Vs5;x8CuS}b?)3lw;a<)EL_j7ceaXQ&Ng6$$Yuws|>h1G}0Ki_W zmksE_>)czH&3;pBc!kjAxX$ufWP>zz}6 z{)?aa7#Zm_bY0pwgE6#F1OQCaI0gp5QB?`9ad5_vHl)eh>(4zcv%Kd2dd2`}l@lC* zAYgv{4D^$uNBEf9 zKNQ9@pSu^|-0?o5(I|hMPA4MK2vxhPi>guh(Th{9w!iS_A0;6OT*eAOL}(Rp(-V$? zaRw3um&*wTQ&|M*H57?O0RTh{@rJb%bpTBd*QJkqxod!7)Bpe!gh@m}RIhCQCp}|{ z-W0?b&|q)6GmKAuVN<~jua>7z^V0($Sfvf09+0yNDu~VIuHy5CUOAdQQ34lYaRk7HX-23&Br2F z%sG49ZTI%2h6N>kX<@_#v56{%D^T;7X8vo%oUi6>lWjAc&DFeXCci(BU(EYj-a6N^ zNGNvx?D1T4UyGTD`R5wX7i+yYq7Ix?x?>yd+OdsZ-Lai^z9PTw+OeG+ zOCg2?GLTzoWJOFf; z#s=RBmfe5xax+42PiVxMF1=+M>`j+0jh%0}n#6E&%sF#CM;efZb!9Hj{aq1l(U&~Q zGw=3Zardj{FWvn4_}NeXV_6PNhnbE^TX(wodiNBo!_U^>Te|z}41NXq`hL zSTfL3(a~BrWA8QDtA8vxM%=Vn_IkaDMx*eD!c%{|eR3TFsZ=|Iwz%`EJJN^r<$||^= z4jg^uXK+0ulS%k| zJ~*9D*zI;O#^Cq+;WzyBNnB~5w`<3CA~U(`DAzNRPr&N)%fK~`iH0vS#^1H|r!qt! zBR=4oY))@AsRt1l=NO5Pz%U5ubQ+P75wyECIIA2ObhRTG3})2<2*5r^rUdF%R~vsu zf*1e{#RnTxlstuN=*%a_oZWVBpEVv%1{>$VHQLhIl&Wm8*|iF$fkUtFtQkMI>$ELJ zNi}~7=P%aJ9*|E8xi;-WWAeG;?$%~LIV5u}@0^*+30%#OC;I@LtvZBUW@DGfMsp$z|pPJBEqtt5NWyLkHq7Esrv_H zL7A(n3IxKjZ9j+G>4ag{5jYZEz?{`r)B!+9D|!L|rbC#UPdDTe;(!b{Fz|n7;Oa5w za5C5k$jzr(bEh#Gft-&+YW^EPf3BGGbo}grsqGRivTci}6Z5{>{Mnn?bo}(EJOAYI z!GXcC>_3w~f3fdBo$<+^fAZQ2t+ObE4?+lNrg8ulWo2b3D=PzI3{O9H2Z$&ydxyz& z0;8j&h{xmbhr;;oqwDdVKU;r;ii)WZwJ*Hz0?6i&&0quo1_%;h3}7Uyx4O1Ii$lNp z3A%p!EWiMR2$9$bM&fZqqOvw1GBN^3l>^SIDpWh2sCK#Fa#SG_k0TaOAeM+@I2J=J zK4Mx$3k;n;41J-kjlK8B_w7qob^rp19vdsa)H8@Bk1R^B-?(fHKofreh$LBu1tX$3 zW2`oMVk{28>0D~pfr%y~4X7UFWvpgCYT~Sn5si~R3fL8NlD5_B1|XY<+}?U; z5?St{-RIx0ShjpwnsJEJ&-azjT~?doHkOf<`nw`p-P)RQ^W`YhVIO!Y!klaEdTcOG zjce+0a`zDffSSLA^XJ(QK#kv|hX3Uez?ir~GMWn=0C*XrId{6*ktZ*rc13mCNC;NmSY|LT8;#$w?5_0i zxeUExV~mgVBvZPB8^^ykSiy9_RL2MzdqaR>IXvfU5DEcf43i=>|F*JobO|b~H6LVZ;o(JQfO}si{d0CS^2b z@}0b4T-oAV(=JRO z5qN)=Iuih}|I0n)^|yJG08-X?Wm9Q9HVxyu_=QRSEz}UM3sch$Pv{lgS)!Q zR;*oa2bTxLsY9o2OICKo0okRhewinE;do!=!sYWv0pQ&63wq0ng=r%p7%%6n{yu*v zJGJ+0dE4#HDaK(iKtFxB$F}UQ#W7=4xEeNl_`w}rWlPIf1Av;pg!5P3mw!J1HGcDr zf0&uc96+7N4Fp2)hr)RJ@w@TVb8n)lsR>`duPO60e|vXh=I`HrWI2GT1!NXaJ@+P> zo0|au-~8CJDdSd%Y3TG}aK>N=nWTT6&CNa+dT**5&9)AF>vw<80bstZ8CBegov;7e z0W*QzVqZ)z?fa=S`@&@vYs9bqaN1>!Kfmt>eDe7J?*6&me90Et+VJ8lKQ6cCaPn&O zrn&(@&0oU#r_&EWjo*CZ#c;DUgt4l40c0AtKk<=`*S;tay5?}c*Wc(3e=>h8w<3M^ z*w|iA)}sw$$UCu;i-vji=~XM1c5Nq_wcg+fs}3fnaE;I6hh(lib- zgltD9y-KmVR(=J5;nvM~3%M&OugB8Gt@Ia9e9CBTZN;7I*W#Vc2h%(EygqB6N1;$C zZZ?YEFz@N8CqoceMyCpZ0c(HjISfO9a|R&*&KSS}Z*>hgXXtUS$H3q~L36HMd0QHG z7(U;S2Eg$7e0cxN*j-4J%P|hd07D3@s$~F}S%s!aak`K{SXb)-BU7G2vX~*$f{ZiS zdkhT1dNdFMfk;%I7@p}bxN}2injEBsN8*@!rWadIy^rUFz&=|!)aI{HC=~gl-_=@6 zjByYNtgg$-h!UB`L_mMN*CQ*{nB3HbA!N6C01yN+`%;osnoI%$@*D_+ham(()44n} zAm6Xsy$%EY{nJ`(=Z4O-*I9`>JJ%bp?0rLXwl?E=#t>^>h})}Ons;-h$^$4A3Pqmi z&38VGnlrn>z)|Owx8y`-d9e^6Sf)g>77b=OGXXO0&*TWe5Db5ZGhWu#(?XrcZH9da zB&2zfKNLbua5q@{L(^JpI2^{GK5#GIIdBm7wlBiTAwP!FY19u#v^zW64aOKgvU!s_ z1QZH|A`kTb{(i9bhtL{)SKgtUAsoumhfa7{$Rsc49KK*s{$1k`hBPRu^SI3i2lGjS zG5AA40J2Fj;|za75V``=!-5BsfMCf73eE02}8&laZrKd}FRjt!mZP5@`m_u+is09t<*%*Tc2U%=SHE_M9Y9si!5kQDS-N*_#kQFA7fzHiUMW}l0m?jGH}!A28oYcXmY`556d!unmMvSTE%+`t=dk>yt!BhlA7Tc;7o70E z;HK7}0XQ5m)j{U1G?Ce~fHAx|O9w*dhE6ioK=6P0d;owUf513&>?F?ho}XRycHujLX1}O#U)3jc45Jm>KUUA_yX^!EmNEnJ_i~4Cdj{R!hh_ z7_39)&7R^8hHN#^v%lYmZ-4%A^j_>ox!r#KixmomLID6^n>KBt#)d|;hY!LZ3;~?O z^lpCu1fkaBHapJHL{%@C^!713*Kkdfrt>7922587_<|v60byQe0N|~zhOTKCA5Vj89Go-wf?*l{%{MV>q)Nt(iC`#z2r>K;G(Vob`6%QeR)e3qP>`0P}9Hq`7nE;AhXjsP2E` z6$*u7n&?-=<4v!AkPHD40c$8Cl|CBJXgh1&HJH%$0|3Dn2%86o0OK4a1nRtQnGxVT z;~zv2;EYQ%xCMoo!C9?b2jXm>GZmF$~n#dd=4i9if9oEk5!6XE0WtF6uoL3WefU z<+_r|oP}JiwZxfhCdL?ngurSH1B^*02{R8+=dQ`*1pq)0ArKxmp9Bbz_J;tRE_m_# z(`jI&;L8;Xh2oZ`Ak(zBvy?j<+vVHS|Kw|5!Q~+z{)iWgdLM;Cp|};v>j2o;Ci?_fT7OFo1ZK5(gzOVQvTndq3cc1H zGLyt2^B}O=tQ)8a?*`g77ySXowyDiup-?Ca;fkj4_bi@6!jOJGoJ+|j0a)dM)a_gK z003Zi_^PkgHot#s_7AXRq`S>S0RS|O;}6|a^A7p)RGCiu(`o#Xics?_ z{g6VTxJA)7w$+i`*nw5G0GMg>U|Rokjib(81H&M2ZKB(k5YhtL%nbv~Iv6;}tRiNd z;qp*0V=KYIu)3C^-s?qo%{ufC^aChd#j`)1#?r?=qe4Img+fsP`l5e39zu2ZYf|&? zt^r^b?phWOfH2GoUm>3ahzOb{4-G+5)(Ij6A~BFKWKkFq80VPd^~hE-W}gAZWF3Jg zyce|S{-PFd`P!x_nzi~d=LI-7Q$4uuh z4v|R?5QhAL2?tQq?5E!2&a{FA0~q5N@&`?iAC?It9SyamSG+M(z$`j;;pPc01$*gMC$pOrTZts@i2eOD1od#0&jK?&03mO z$v_nfg`#lu?wWO|IlDXajXJjnOh$b&svmzS3^J3x!h8zo@=ISI%JKx7sXP1Wpk$y5 zg+fsndjCK_(6$-vp+n$|!50ootv^Y14})y=C}o{iQ~1JcoM)QE_n$$pN&zSo3PnNa z4Gj&bIkN{ol6QajNBpM8591JK!uRbDz-FHdO9m=7^wNR-2R@K%R45dR4=QY9YdsMt zQ>lBS`uY}2=Z4NS0BzyiT4SNpp}lw6XYAbb`t+?WJ`|r;p-?Dh9{sH|g;(O1iogEL zN7Kh~UVC8U23#KUX%}KKBN$7RdRYpELh+&E{{hXFAvX}T!PD0O0000L6 diff --git a/shiptest.dme b/shiptest.dme index 3585b14b2e85..872f257480d5 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1357,6 +1357,7 @@ #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\salvaging.dm" +#include "code\game\objects\structures\sauna.dm" #include "code\game\objects\structures\showcase.dm" #include "code\game\objects\structures\shower.dm" #include "code\game\objects\structures\signs.dm" @@ -1920,6 +1921,7 @@ #include "code\modules\client\verbs\who.dm" #include "code\modules\clothing\chameleon.dm" #include "code\modules\clothing\clothing.dm" +#include "code\modules\clothing\towels.dm" #include "code\modules\clothing\ears\_ears.dm" #include "code\modules\clothing\factions\gezena.dm" #include "code\modules\clothing\glasses\_glasses.dm"