From 3c057c6e30269cfa1d4ac169ed98808757f1950e Mon Sep 17 00:00:00 2001 From: Kabra_men <46802162+Kabramen@users.noreply.github.com> Date: Sat, 24 Oct 2020 23:50:07 -0300 Subject: [PATCH 1/7] more kink vendors for some ghost romes + better lighting for the hotel pool --- .../lavaland_surface_syndicate_base1.dmm | 3 ++- _maps/RandomRuins/SpaceRuins/spacehotel.dmm | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 556bc6d0..9afecf1d 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -715,6 +715,7 @@ "EZ" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/obj/structure/fans/tiny,/obj/effect/mapping_helpers/airlock/cyclelink_helper,/turf/open/floor/plating,/area/ruin/unpowered/syndicate_lava_base/arrivals) "IJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 1},/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/engineering) "Pa" = (/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/circuits) +"Rs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/obj/structure/cable/yellow{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/machinery/vending/kink,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/arrivals) "RE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/engineering) "RV" = (/obj/structure/sign/warning/fire,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/engineering) @@ -755,7 +756,7 @@ abababababababababababdGlvlwjylxjZjNlylzlAlBlCaklElFjyjpkQlGlHlIlJlKIJlLlMlNlOlt abababababababababababhalTlTjyjylUjZlVlWlXlYlZmambmcjyjpkQmdmelImfkQkUmgmhmimjmkmllbmmldjuababab ababababmnmnmnmpmpmpmpmnmqmrmsjymtknmumvmwlAmxjymyjyjymzkQmAmBmCmDmEIJmFmGmHmImJmKjujujujuababab abababadmnmMmnmPmPmQmRmnmSmSmTjymUjzmUjyahaijyjyjyjymXmYkTmZnalIlInbIJncndneRVngkDjuabababababab -abababmnmMmMmNaEnknlnmmonnnnnonpnpamnrjyjyjPjynsntnufDnwhWnynzaVaVcDIJjunDnEtWnFnGjuabababababab +abababmnmMmMmNaEnknlnmmonnnnnonpnpamnrjyjyjPjynsntRsfDnwhWnynzaVaVcDIJjunDnEtWnFnGjuabababababab abababmnnhninjninInJnKnLnOnPnQnNfPanaoarnunTnUnVnWnXfKauhXoaobfknBfBuBodoeofREldogjuabababababab abababmnmMmMmnohoiojokmnmTEZmTololcycCPacIopfXfXfXgVgWgXPaoralkQkQkQjujuotnEjujujuaqabababababab abababaymnmMmnaIouovmnmnmTaSPaPaPaPacJcKPamTgYgYgYgYcLmTmTmTmTmTgaiymTozoAoBoCababababababababab diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index 814364c6..800a595b 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -701,7 +701,7 @@ "ny" = (/obj/structure/table,/obj/item/reagent_containers/rag/towel{pixel_x = 4; pixel_y = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/hotel/pool) "nz" = (/obj/structure/table,/obj/item/reagent_containers/rag/towel,/obj/item/reagent_containers/rag/towel{pixel_y = 3},/turf/open/floor/plasteel,/area/ruin/space/has_grav/hotel/pool) "nA" = (/obj/machinery/light,/obj/structure/table,/obj/item/reagent_containers/rag/towel,/turf/open/floor/plasteel,/area/ruin/space/has_grav/hotel/pool) -"nB" = (/turf/template_noop,/area/space) +"nB" = (/obj/machinery/vending/clothing,/turf/open/floor/wood,/area/ruin/space/has_grav/hotel/dock) "nC" = (/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral{dir = 1},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/hotel/dock) "nD" = (/obj/effect/turf_decal/tile/neutral,/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/hotel/dock) "nE" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/obj/effect/turf_decal/tile/red,/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/hotel/dock) @@ -715,9 +715,12 @@ "nM" = (/obj/machinery/door/airlock/maintenance{dir = 4; name = "Hotel Maintenance"; req_access_txt = "201"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/ruin/space/has_grav/hotel/pool) "nN" = (/obj/structure/chair/stool/bar,/obj/effect/turf_decal/tile/bar,/obj/effect/turf_decal/tile/bar{dir = 1},/obj/machinery/light{dir = 8},/turf/open/floor/plasteel,/area/ruin/space/has_grav/hotel/bar) "nO" = (/obj/machinery/light/floor{name = "ceiling light"},/turf/open/pool,/area/ruin/space/has_grav/hotel/pool) +"qs" = (/obj/machinery/vending/autodrobe/all_access,/turf/open/floor/wood,/area/ruin/space/has_grav/hotel/dock) "so" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/yellowsiding/corner{dir = 1},/area/ruin/space/has_grav/hotel/pool) "sN" = (/obj/machinery/door/airlock/external/glass,/obj/structure/cable/yellow{icon_state = "1-2"},/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 1},/turf/open/floor/plating,/area/ruin/space/has_grav/hotel/power) +"ux" = (/obj/machinery/light/floor,/turf/open/pool,/area/ruin/space/has_grav/hotel/pool) "vL" = (/obj/structure/pool/ladder,/turf/open/pool,/area/ruin/space/has_grav/hotel/pool) +"wW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/vending/kink,/turf/open/floor/wood,/area/ruin/space/has_grav/hotel/dock) "Ao" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/yellowsiding,/area/ruin/space/has_grav/hotel/pool) "AM" = (/obj/structure/pool/ladder{dir = 2; pixel_y = 24},/turf/open/pool,/area/ruin/space/has_grav/hotel/pool) "Ek" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/yellowsiding/corner{dir = 4},/area/ruin/space/has_grav/hotel/pool) @@ -729,9 +732,12 @@ "Nn" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/structure/pool/Rboard,/turf/open/floor/plasteel/yellowsiding{dir = 8},/area/ruin/space/has_grav/hotel/pool) "ON" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/yellowsiding/corner{dir = 8},/area/ruin/space/has_grav/hotel/pool) "Pn" = (/obj/structure/pool/Lboard,/turf/open/pool,/area/ruin/space/has_grav/hotel/pool) +"QK" = (/obj/machinery/vending/kink,/turf/open/floor/wood,/area/ruin/space/has_grav/hotel/dock) +"Tq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/vending/autodrobe/all_access,/turf/open/floor/wood,/area/ruin/space/has_grav/hotel/dock) "Vl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel,/area/ruin/space/has_grav/hotel/pool) "Yx" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/yellowsiding/corner,/area/ruin/space/has_grav/hotel/pool) "Zb" = (/obj/structure/pool/ladder{dir = 8},/turf/open/pool,/area/ruin/space/has_grav/hotel/pool) +"Zx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/vending/clothing,/turf/open/floor/wood,/area/ruin/space/has_grav/hotel/dock) "ZS" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/yellowsiding{dir = 4},/area/ruin/space/has_grav/hotel/pool) (1,1,1) = {" @@ -765,7 +771,7 @@ aaaaaaabaaafagalcHcQawcZcZcZcZcZcZcZcZcZcZcZdcdcdcdcdcdcdcdcdcdccTcGcUdhdidididi aaaaaaabaaajctcweHeIeJeJeJeJeJeKawawaweLawawawawawawawawawaweMebeTeTdSeOgxeQeQgHgIeTeUeGeVeWgKhsgyfcfagLgKhsgyeWeGgfaaaafLabfbaaaaaaaa aaaaaaabaaajcHfdcJfeawckfffgawfhfififjfifififififififififjfictcwfpfpgMflhBhEhEhGhHfpfqfrfsftfufufueWeWeWfufufueWfvgfaaaaaaaafLfbaaaaaa aaaaaaabaaajcHcQfififjfifififififihZfxfxfyfzfiilioiAfEfFfGfHfIfJfMfMiDfMfMfMfMfMfMfNameGiFeWeWeWeWeWeWeWeWeWeWeWfvgfaaaaaaaafLfbaaaaaa -aaaaaaabacajcHcQfifPfQfRfRfSfQfQfTfxfxfxfxfxmYfGfGfGfGfGfGfUeTcFcFcFcFcFcFcFcFcFcFfVfKiGfXfufueWeWeWeWeWeWeWeWeWeGfvfvfvgfaafLfbaaaaaa +aaaaaaabacajcHcQfifPfQfRfRfSfQfQfTfxfxfxfxfxmYfGfGfGfGfGfGfUeTcFcFcFcFcFcFcFcFcFcFfVfKiGfXfufueWeWnBQKqseWeWeWeWeGfvfvfvgfaafLfbaaaaaa aaaaaaabaaajcHcQfifYfQfQfQfQfQfZfigafxgbgcfxfifHfUfHfHgdfHfHeTcFcFcRcFcFgecFcFcFcFcFcFiXfufufueWgheGeGeGgheWeWeWjbfugieGjgacabfbaaaaaa aaaaaaabaaajcHgjfigkglgmgnfQfQgofigafxgpgqfxfinNfGgrfGgrfGgreTcFcFdidigsdidididididididigtgugveWeWegjsggeWeWeWeWjufugyfvgfaafLfbaaaaaa aaaaaaabaaajcHcQfigkgzgAgBfQfQgkfigCfxgDgEfxfAfGfGfGfGfGfGfGeTcFcFdigFgGjwgJjzjUjVjWjXdigNgOgPeWgQgSgRhrnueWeWeWjYfugyfvgfaafLfbaaaaaa @@ -774,7 +780,7 @@ aaaaaaabacajhehfhghhhihjhkfQgAhlfihmhnfxfxfxhofGfGfGfGfGfGfGeTcFhpdihqgGgGgGgGgG aaaaaaabaaajcHcQfihtgzhuhvfQfQhwfigahnhxhyfxhzgrgXgYgZgXgYgZeTcFcFdihAmPhChDllhFlMlQlSdigNgOgPeWnJnGgwnInKeWeWeWjufugyfvgfaafLfbaaaaaa aaaaaaabaaajcHcQfifihIfifififififigahnhJhKfxhzfGfGfGfGfGfGfGeTcFcFdidimQdidididididididihLhMhNeWeWeghOggeWeWeWeWjYfugyfvgfaafLfbaaaaaa aaaaaaabaaajcHhPcJhQhRcJcJcJcJhSfihThngpgpfxhUhVhWhWhWhWhXhYeTcFcFcFcFmRmSmSmTcFcFmncFiXfufufueWgheGeGeGgheWeWeWmxfugieGjgacabfbaaaaaa -aaaaaaabaaajiaibicidiciciciciecQfiifhnfxfxfxhUigihihihihihiieTcFcFcFcFcFcFcFmUcFijikcLmAimininmKmKmKmKmKmKmKmKmMeGfvfvfvgfaafLfbaaaaaa +aaaaaaabaaajiaibicidiciciciciecQfiifhnfxfxfxhUigihihihihihiieTcFcFcFcFcFcFcFmUcFijikcLmAimininmKmKZxwWTqmKmKmKmMeGfvfvfvgfaafLfbaaaaaa aaaaaaabacipiqirisitiuiviwixircQfiiyhnfxizfxmVihihihiBihihiieTeTiCeTeTeTeTeTmWeTmXiEameGiPeWeWeWeWeWeWeWeWeWeWiQfvgfaaaaaaaafLfbaaaaaa aaaaaaaaabaaajiriHiIiJiJiKiLircQfifihIfififihUfififififififiamamamamamamamiMmWeTdSiNiOeGiPeWfufufueWeWeWfufufuiQfvgfaaaaaaaafLfbaaaaaa aaaaaaaaabaaajiriRiIiSiSiKiTirhPcJiUiVcJcJcJiWcJcJcJcJhQcJcJcJcJiYiZcJcJnLjamZjanajcjdeGjeeWgKhsgyeWeWjfgKhsgyjheGgfaaaafLabfbaaaaaaaa @@ -785,11 +791,11 @@ aaaaaaaaabaaajirkqkrksktkukvkwjGkxkykzkAklkBknknkCjPawcQjQjRjRkDkDkEkEkEkDnhnhnh aaaaaaaaabaaajirkHkHkHkIkHkHkJjGkKkkkLkMkNkmkOkPknjPawcQjQkQjRkDYxAoAoAoAoAoAoFhkRkSkSkSkSkSONVlkTkUjQjQjQjQjQjQacacacabaaaaaaaaaaaaaa aaaaaaaaabaaajirkVkWkXkYkZkHlajGlbkklcldkljGlelflgjPawcQjQjRjRlhZSliljIFIFAMIFIFIFAMIFIFIFliKinjjRnkjQlmlnlnlojQaaaaaaabaaaaaaaaaaaaaa aaaaaaabaaaaajirlplplqlplpkHsNjGlrkklskkkljGjGjGjGjPedcQjQjRjRlhZSIFIFIFIFIFIFIFIFIFnlIFIFIFKikDjRltjQlmlululojQaaaaabaaaaaaaaaaaaaaaa -aaaaabaalvaaajirkHkHkHkHkHkHajjGlwlxlxlylzjGjMjNlAjPawcQjQjRjRlhZSvLIFnOIFIFIFIFIFIFIFnOIFZbKinjjRnnjQlmlululojQaaaaabaaaaaaaaaaaaaaaa +aaaaabaalvaaajirkHkHkHkHkHkHajjGlwlxlxlylzjGjMjNlAjPawcQjQjRjRlhZSvLIFnOIFIFuxIFIFuxIFIFuxZbKinjjRnnjQlmlululojQaaaaabaaaaaaaaaaaaaaaa aaabaaaalBlClDlEaaaaaaaaaaaaajjGjGlFjGkxklkmknknknjPawcQjQjRjRkDZSIFIFIFIFIFIFIFIFIFIFIFIFIFKikDjRjRjQlGlHlHlIjQaaaaabaaaaaaaaaaaaaaaa aaabacacacacaclJagagagagagagaljGlKlLjGkxklkBknknkCjPawcQjQjRjRkDZSIFIFIFIFIFIFKoIFIFIFIFIFPnNnnjjRjRnolHlHlHlHjQacacabaaaaaaaaaaaaaaaa aaabaaaaaaaaaaajaaaaaaaaaaaaaajGlNlOjGkxklkmkOkPknjPawcQjQkQjRkDZSIFIFIFIFlPIFIFIFIFIFIFIFIFKikDjRkUjQnplHlHlRjQaaaaabaaaaaaaaaaaaaaaa -abaaaaaaaaaaaaajaaaaaaaaaaaaaajGnqlTjGlwlUjGlelflgjPcIfejQjRjRlhZSvLIFnOIFIFIFIFIFIFIFnOIFZbKinjjRjRjQjQjQjQjQjQaaaaabaaaaaaaaaaaaaaaa +abaaaaaaaaaaaaajaaaaaaaaaaaaaajGnqlTjGlwlUjGlelflgjPcIfejQjRjRlhZSvLIFnOIFIFuxIFIFuxIFIFuxZbKinjjRjRjQjQjQjQjQjQaaaaabaaaaaaaaaaaaaaaa abaclVlWlWlWlWlXlYlYlYlYlZacacjGjGjGjGjGjGjGjGjGjGjPcQmajQjRjRlhZSIFIFIFIFIFIFIFIFIFIFnrIFIFKikDjRjRjQmbmcmclRjQaaaaabaaaaaaaaaaaaaaaa abaaaaaaaaaaaaajaaaaaaaaaaaaaaaamdmemfmgmhmimjmkmlmmcQckjQjRjRlhZSliIFIFIFnmIFIFIFnmIFIFIFliKinjjRjRnslHlHlHlHjQaaaaabaaaaaaaaaaaaaaaa abaaaaaaaaaaaaajaaaaaaaaaaaaaaaamdmlmlmlmlmompmpmpmqhfcvjtmrjRkDEkIQIQIQIQIQIQIQIQIQIQIQIQIQsokDjRjRjQmslHlHmtjQaaaaabaaaaaaaaaaaaaaaa @@ -801,6 +807,6 @@ abaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaacaaaaaaaaacaaaaaaaaaaaaaaacaaaaaaaaaaacaaaaaa abaaaaaaaaaaaaajaaaaaaaaaaaaaaabababababababababaaaaaaaaaaaaacaaaaaaaaaaacaaaaaaaaaaacaaaaaaaaaaacaaaaaaaaaaaaacaaaaabaaaaaaaaaaaaaaaa abaclVlWlWlWlWajlYlYlYlYlZacabaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaa abaaaaaaaaaaaamOaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaabababababaaacaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanBnBnBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaabababababaaacaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} From 7034e00e1c83ce8555647439657afaf43ae18912 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 10 Sep 2019 22:06:36 -0700 Subject: [PATCH 2/7] Merge pull request #9147 from Code-Cygnet/The-Art-of-Drunken-Captaining The art of drunken captaining --- code/__DEFINES/traits.dm | 1 + .../food_and_drinks/recipes/drinks_recipes.dm | 9 ++++++- code/modules/jobs/job_types/captain.dm | 2 ++ .../chemistry/reagents/alcohol_reagents.dm | 23 ++++++++++++++++++ icons/obj/drinks.dmi | Bin 98005 -> 98374 bytes 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index e65c8654..657cfdae 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -125,6 +125,7 @@ #define TRAIT_CURSED_BLOOD "cursed_blood" //Yo dawg I heard you like bloodborne references so I put a #define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking +#define TRAIT_CAPTAIN_METABOLISM "captain-metabolism" //non-mob traits #define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index e66870dc..b3a1ebac 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -885,4 +885,11 @@ name = "Hotlime Miami" id = "hotlime_miami" results = list("hotlime_miami" = 2) - required_reagents = list("ephedrine" = 1, "pina_colada" = 1) \ No newline at end of file + required_reagents = list("ephedrine" = 1, "pina_colada" = 1) + +/datum/chemical_reaction/commander_and_chief + name = "Commander and Chief" + id = "commander_and_chief" + results = list("commander_and_chief" = 50) + required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctorsdelight" = 10, "quintuple_sec" = 10, "screwdrivercocktail" = 10) + mix_message = "When your powers combine, I am Captain Pl-..." diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 46af0f96..366d8fd2 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -22,6 +22,8 @@ Captain access = list() //See get_access() minimal_access = list() //See get_access() + mind_traits = list(TRAIT_CAPTAIN_METABOLISM) + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) /datum/job/captain/get_access() diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 65230bd4..88ac3e2a 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2161,6 +2161,29 @@ datum/reagent/consumable/ethanol/creme_de_coconut glass_name = "Planet Cracker" glass_desc = "Although historians believe the drink was originally created to commemorate the end of an important conflict in man's past, its origins have largely been forgotten and it is today seen more as a general symbol of human supremacy." +/datum/reagent/consumable/ethanol/commander_and_chief + name = "Commander and Chief" + id = "commander_and_chief" + description = "A cocktail for the captain on the go." + color = "#ffffc9" + boozepwr = 50 + quality = DRINK_FANTASTIC + taste_description = "Tastes like...duty and responsibility?" + glass_icon_state = "commander_and_chief" + glass_name = "Commander and Chief" + glass_desc = "The gems of this majestic chalice represent the departments and their Heads." + +/datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M) + if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM)) + M.heal_bodypart_damage(2,2,2) + M.adjustBruteLoss(-3.5,0) + M.adjustOxyLoss(-3.5,0) + M.adjustFireLoss(-3.5,0) + M.adjustToxLoss(-3.5,0) + M.radiation = max(M.radiation - 25, 0) + . = 1 + return ..() + /datum/reagent/consumable/ethanol/fruit_wine name = "Fruit Wine" id = "fruit_wine" diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index c6694d3b7f7876a8ce5898caf27b88b8336265f5..d4f41764333bdc60cfc8ce6b7f78a2dc37a0b96c 100644 GIT binary patch delta 23415 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�@GhkyOHD+~E~vMzCUWm7Cs&$l?LcaiipwZ}t( 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 Date: Tue, 27 Oct 2020 13:34:12 -0300 Subject: [PATCH 3/7] better sprites --- icons/obj/drinks.dmi | Bin 98374 -> 98714 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index d4f41764333bdc60cfc8ce6b7f78a2dc37a0b96c..7d0cdbcf0f96d3d2d6bc1cd559ee1537159faa79 100644 GIT binary patch delta 42320 zcmYJaWmH^Eu(mz8y99T4g8SeS+=5#IA-Fqi+$~6e;BLX)9fG?%B)B_+eLUy9XMJnU zkDgWAYIj$4cU|`$^oRcy1RpO5DA^k{p&PDtnN304^RSu;eTU$02p4$#$y;wHr%=V- zH`-IrQY2U*YlZa*9bp|mFzv-x=aeT*- ztdJ~_?Q`k&c=gHtv66_@l3vQz%$L`M{ei=benjSLJfmc_GBb&FDj}WbZalQoKr4aT z9~{49+(Dh9uTt>Ra*~>f0IZS?7ybxhVYMSv1LKKs*_rJ_M6PyNX?+J4F@fpWHjEpe zMqQ<8+*mDFV8;lXe#tV8M)l)fV$@PM&cBL&IGck|jLap(g)EzHIE%AEdH1C0P+^Z! ztW^;XPafq{tWSn_JmQ&?(GMQJct1?LT8-B$?H8Ml^KTLTUC)yte!VX1?%JaoOa%Vek*a+;$Q^p9gjqWXQId0KydUdlTk z+mo~^>ClGWtx?Xw$^TYzdO~()ba@fZi2chl<`4JyH;p%awyyhYs{7UCV8^z|)YA*P zO~yq%4$KU$o?>@5H=uw*HSxx6VtfR^6wx2^Oe#sHQCpYrsnt7@ShD51+Ii>*S)% z7SG#%qJz&F8*xN;wGmzk2mLw|g_ZS}xWVxsKlSxf&gO;=q_BZqb%M-7ZVQ`+!-VTE zCyRd>cm7lgqL5{%Q>}cFNxZMHk;$PRfuX-+YLR~>WomV*T5(5|f@e!~5^rD!O;>Vn zs2++-u9YRVFi_(|QpYL(8p23;A|`niZG{-Xy(dRSmhF?=f#i<(7yeR!E+b}J$g+fu z0R4gRaPWAQWA4(TL%q&Nmy)nw>2_|4U=c6>6XL%5O-;zS95TT=?Ugzm@yC0(wVYIe zl*sZEQb{fsTxgpq#1L=|z99Wh+>w79#&P=X_-*n|Ea2qBqY)S>bDLUI&i$yoZ}YMm zb-vLtuFaJ!VaX_IRGg=KWme_DnVwOuo+X$aIoxz!v~k<^oqr5FIG1pq;!A=-NysuL z3qfMTE1QJY72K~J>@Vnhy*hedl9Yb(YGe%-aPC-acd&XuMfFHJ!JZ`#P7|dfS;tp% z=infpJOK5zCpM%Ke`0teA1vd|--vK{%n}SlqB1aHB-0o^5|-dQelqw_>oQ~U2j}Cz z(#AwyQKlAq(cf{e9hC*(4w@kU<$XCQqF+-b_25&zq_S<~?NTTcn;~+qG?@#H)e)~- z@nx@Ui5>z+29x#@BQ0Ij!#9xg-Mo?NqJBWgl^KxWiIvVeB5WMDT#25w-AMPw<%3OT z{X}lfxjyF+9&u&Hu>LxsQ#fRaG^78gA62_~Kh{)c-Z#^flOYGCTFu*t!~3k1gv=zgF6uU{i(%cDG}`Zk*M(TcMo?AIFGREDuS~;Tx+O?^3U#r_+C9 z7;sBBNVaR%xl49RAL32Nsy{V66d2pnjWWvkNG|U**7q4@0f#WxHLbJD~dF!zI zQg7}B8zVFlx{HF#s(=gOP8Z}?2;o$n6?MzA&xH1Rv@3gLZI&!w56r-gM0y}$t*HCy z2rJqhJvjC;M!!P0NJ!}LwvWb>8r{%8dffep%G#?>>yCzm87?w7#xgI z&zd^LY{WM{#wnRK8oH!puw%?A4?!I+;T^%Z6=9qc{KN=3z2aXk0=#%uJ|BecC4nts{45(D2t4z4JAL1O#D z53$#bbgC7i;hTZ+?TKHutoFlT&A(p~jG74S$eZ02D&N~>#|Z}gXh;mHqsA^!<3QiY zH%N8Qr#KC|NbRiy{k*>TNXu0!a06=#9A9nN7=jb42*k3h_eOcIC7Te-Wd9o3(wfF6 zQOIf{2()tG*rB>U@9qky`RE2++JC4`+qUy<>eS!t*jMMJ^9!ox$CKRczaO5@D^BV^ zmtFJ7TY%hMJTZ{mwo{5+Rsh)o#k<)4k2fUQnuh61K9#p&=JDT-t zqGvfhhrGR$G$-2pjjI{OpF`G2^&i#yYs5AY0hvm-Mq4clbtL~8I(~WtI6lqs@ z?ez}sGQhr=rfVJP=5fzigg*iXl$D?~h&ycPAt6XuQuv@Uu;>shjm7kN$F~my%nBFY zfB5_I2mc*aYKgw1*4!pv53VAu6V5+dt6q7}SUbD>+!ykH!q-2;-}upGCYs<$)4qOS zqI@i#)btp$&{QZIa^W?4yCD>ZsRkKfO_l_Gh5bJ3m_w6v4M1+RSnjqsq2S?p(Z zaF(d_&LqZ+g!rpRCL~}7hlF_k+8iAj*>VwtivmG|2iw{ItPtK$JMwLUK!}my@Z0>V zSz!jH!2_03JvBHbCBFx5?R{Bwq!m7W!UD+1&|`OVG?{Yet#W4%O*jaM{)*s1%X8!? zz-RsTXgI5<#~UBHp{jxA%OE9}<$8KYQineEP|PRrt6*KG*ab)%+03 zxB5*vWjkPK=Hh7KG;f~TWRT0>7Yw|Nn|}u@sp;jgK@RC?bOM;KvzjQ2mHH5sZIPA~ z*^AEWXXDZwrmaWAyM+T0PG2nPu-5# za(D_Rc0*Yp5CuqHN?enGd9wG=CGTR16E+OK&jgoONJ3K+mrf-MHCX|!6JW#EcRyiZ zx0j~d(!P2)3>yWN9BV5fI;Lq{t07KRLW6>Lw${<2Xh^nhuF|s1sdO}G0yHZ)pcLf5 z+eh9C+eh{}+)yC;g9E9i;TzuEjlH^|m+e3quyZHs?ajSn*W&!?@XPZ_vr==JSlEMp zNXzdM^Dxued$8G19|*k<__{a6=>%t#dJ5@1UGoG*Aenlc9ionIK^zcQdC_wCNnPzv;3u?u@A){SLU@{k;>1{H|0$?rvO6h`7X&r!sWDSyaSyPfLY94}%J#lUN6Y4N+A5P%Sg zpw3nq?xQCD_!}O3nGe^qK-CSj z9g5Cm{mT95$Dok!(37gV+{q}h7I-Qg6JwA+w2?C}W15Ea}Bf|L~DZw7ipsc@NP zkRY$)oJMvu;l4fl4aF)aD41U`6NGk_4YDVXE3e;ZKuX+aB!N7eHut)Fo6q!}ju>DC zyZxiPFa?x^RYvJdoLBX54^i?fv}&w_xtiPaX)~DCr~K*o@;T8a^CB8(2Q*mhGWNZd zc(1rw1Q0Od@}3H(u&54T!1s23q?_HAw7I#t2OAwiZs+*t6MSDbKKyM;yPu`Zm+dxn zZ;)tfg+sI#g)(`4e*6l#Ijq+x4&CgTnNe@Q93&1rDwd)h7Tfu`a+H^?^uXZvT~i_W zZM>M6Dml}=$h22J!(Xz530(4;$=YKpI*R_4#{&>;S9}n4$U?L{LfqOQqHqo0e_Un< z1{T~yBK*mohWuCUN%!UZl8pDcJ0}%-?nn`!e@c4Rn@2L7gL7 zemQI2MQ^{J5DJt9FZ$GxMphGyJ@SuoUHmbG$3-baYj*NiCL%u7Jr7d-t!Ip!>l|R0 z(GL8G*5izXJiq>HZA8%v5WKtmsONEniyYaZF6MS3CoSIx3*xOi*Dm_qYLFp;0lR{c z^5`Nf{scOhE6ucoIGGa=AK-%j8=DB|B#8Obh!Ti1Gc(nm*A`5BKIcOie<^<(@<+qN zWT1<;z3>F6N4B>M2Zx3AS#o<_FnUQS%PFo$i!cNC0FD4DEHmzA&zMmYJtf-VLUkTG~{Z3z3K%br4&R?^l7Gk=i zjE^WaVdq2^pAL7!ek@^m*m`mE+LZRh_jKf_&v)Cvb945*CkOgL*u)R9T}NDV01qeK zLu40QbNZ@pjnhAcgWH`k8HhnRjD2wH>wQssBj{8z0HKmJykfHwUz*&3KL5jqIHX%O zw$M)Y>qA|;5G32n&D&oa`^p|H^^dD93wU0ehlX@{e)>a)E(@?_Z^eA;t*$Uzzc6!} zbspM`?AMeolhiRKRJFAk6>et70b=`h@gkLMWzVcIDJpSkX}G<~Z1zaMF6EB&I0s}) z(STMuhu{wZ>gecU(U=k>^ z3MbOd{`p?3P}o+CedDf8%xGuxbzo$VT{(0~JqXCRgQvN~8nuDsv45lY#W4#A)*;tF zW%cXAC!7MOw}Fqj4CuB-X*ao%9u1lKAe`4A;6fR=&Eq=~_)95K)osB6?21HTom*^(VY4 zIaG{_7jkhN;E!G-;&4zf{6$nlJrsou3XPkP3B?g!WZ^G{Z1gLT9q{@L1%?;!3cZ0k zgLSg_N5##L&%PjSJ`TT)V9KWVisN~AMqFCnRh&1>+r#V-;#kP5!wLI$g#jocv=`{` zz7L(Y?0z^ zY96Ntd5nD{?jZ%>)=jMlPMp_8>pLoy= zupGCMSx88r%9tJKD**%K?6=c%pHTa^7fdr21>ph8z?Y}{FC$5eCn_~)90DRQ?H2ms2m6KKYF}hH zf2MqVb91e%uh;9X@YJP=%=FdX`ie8X%vU7!=5{Ur@byTIpgaT534T}j%j#&s24|pT zZ5yXT0p8C0bAqW)$i9x+2t8HVz)hziqSYqlPgjfkZFre}^ikK!GZ}EjS2lk(wS+ zV^L8YlnA0nao!&$S{wTS(NbLORRe>!@4ji4S-rt*;A zGZaPqzS!#TIX<@0_i5SeaMfHJR50Dj|2tbKTbWl#`&Xae!U zg)CsvRbxSrk_Gs|fYI%(4bIQYD_OTIR#Q`hifd-s)coYjiXxvACpHDyXy<#9 zKeEc=zeDkzM2Yp6k(Qp$ z%cBDReEq1dsVVj4%a`xEy1L*q-W20Fiimu6 zqK=Gw7X5tOFF};+Nz9fB!f`cPlbw2_7$` z`8|;owYNsH_?cs$mN)P)-17oiXa6c%9zXxx7vmN2Wrqq}`1jYv)-L;2Kp<$axOi5) zCgSFIpYZe~!~$CG-S%fPm)xK@t`6N9f%4{qTdS9(^Hcl$;Sno4{;OX@H)M7)_iZF9 zq^pZIxRcMfs%4?B{q+wP=z_a%^izU32Edr)0wbXUhl2T z#N!ZJiBh;nZ$6Dy@P6w5f}~<}7bPu+W(P!eO$gEFN2 zU!;Be`7zRGtq$W__IBkiUhBSWC7|R(u5sToJgmaoz(l_GTsQBQ!Bgj)fbT#;-rDf% z-2H&vY~hc)UR%)tGml9`A&`xLCgnAob^C?~c`gN(p|KnLY$RZWqh4N!wE%WU($T(R zWEIp!RZ>5Z?gBnH%9oCw=$4jpX3hmOQ#*QXk23Hr{dnEOF8TI?V)(5yb}cQf^u;(c z3g_BbW+qzT&k533QY&{O94{l7m8IvuYpKdmCJ$v|!lN4nZ!~Lg9*;$OL|C(>%coeJ znbkfTxyDMCySs4@H-g9@+WWTy-MgZlA3S~{uY-_Hda`SPIH!_jqk3S3^ZwQgAOZ#QFxe*75pn)$;$^Ln znRUKA|A2CshQZ63?LQhnF?te`@%zn8=}^v#HdU4QAz-&~rpbGq-x1EA0)zx|0cnE1 zy2c@cMgT5T@rl@Z8QAgypSS)>N&AuZz5X~|>o$V|zbTJW?)#oHUo}t?C=iNZ3v&Lm z+Z=w}_1L9xAlxJw_XVd7ely84=4I%2!v}L%HoO-`yq3P>o4$#{x6tg{4qYBk{Iq&A zbZNu>S;>au2(nl8q#il)XyxMj;Xo|ZoG`J)rq0VnU(B?aynk4s-gBXxl9=J?cH%(9W&-PE(Q{)2S02`iLr{ePpOd-0MU zjVuZqgyoniVve;UMY36Ag!|&R4uJxhQGF3M=lsFB-24yr-dvbM&XlbZ4#Q!RLtEfK~$p63rGw!(j1& z(eKJ&45lfd6h9EQoeVKyRo_yxz`YpjBzWpsZ3oY?n#LILLEK$ym( z*RclWhWG#Y>s!w0s&sRG*mgJJL*LVub#V(5+t&oH|j1~-1$A= z=D`vCbb38az2SrNHs*`;Vw4%Sdu<`^{^qv69U{7Q95lTuH{>z`g?w9MU82@!qYJ^%v@^`Et zhH9AZ(|%VSCSA;(5*%mJJP%HWe@V>aeoIg}B6;eh45NT8M)!N0?@_f&ly3DneucJEwvr+8ybFZ98@(S+Nl{2X)lAvB|N5Bzw{Y84$v7%+J5VgP1?B8h6KFhC$XQ1vC@>JUo|?-#zn~$Bwefobw=# zyO*M+e$K;ochRKpd;U`z`9(^)D@!8tc}|)L*Js1m9}&xn23xH zi{*BBx%cArwKCn?2aQ5UuTU*qh z3v}7(oLitB6bq;n3yz~3@cnLj4Qhxh8u_a366=+FKt3Q;(>g2o%=Z@ulC#Iz<%2Oa ztn{nuj^XycxFJqNOCJ%5Ub?gfR(T_$OWBQiL{ne?=CNtSKXQ3)BX#h-#I@6ke(^E) z8*Eh&rqU^^_*l{1AUAKezcnZ!m5y7|9GF&|+{o=R-ih>MGElmZ{_J(*yrg#4?kf_8 z#L*-bIwD~Nv8DI*?XA#BzwSsGz8TlHmi=17lJXLg0=@TN~k4`)n{_tQ~e%vMVYucz)mh4c$^KH)8Kty zx)UvO5k=Cxxyd{6br>J`N!%fQjP zpWXzo4-PuGl41;No?$3K+TbqbNhde^TkDCwJa~AZ|)jqM!Xn z*k*X1GuwYPzuJOtw~I+{WNo}xR%&D4ia%~Ogm@C@{2O`WL!L)$1-PR}c}=Jd9*5jR z&SmKnIUwe|Lb0z;Ylh_sn>8rZ8-vYWHwQyhN#fOdwo`Jn-r~7DS3djd^u~tY{1id4 z_H|3#AYN^?r;9uEVoe-?ECPn7QjPIrX;NU0mdw`Cbbi;}3_HAZ>W}@PPnqquNeVqZ zw+K2l<7QECs)o|1rl+LJ+%vMrb7`IFVTEa5OR1x>9{x%BA{WIF|CfHY8u!KSr6lf8 zAfUUOp7<1+-LYKu=>Zk^Ia`MF#1=i$1%Z<(EKoZhlWw0K8y8S`YnZc#Y$LT!H|K4L zm}#N*M`TDEFtW#Q$=`sB95V_%3)z?qiVO&VUulv$id_};T38PR%C|u2kyPq;wORMb2+*-2wv$TWVm4KF?t8WiC`L;;KXU+6m>4| z(2+b{V$X(y7eMqWOBbc0u`~VC)P6S)$VHIU?KT!ik&k@>>ednO!L8CnZstQJap&%R ziyeH6LSQ>Tm)(co@G0)R46o2<6L*&_#N79jb1dE?Lx1yacD!#!@ru|@1GFR^V7M#R(_p#tM=y_T6`Sx z%~;Fc^elIt&(hM;3`|TCvOP(LsJ=db1a5(lelzE-7k2G0(>G5(c7WUKhpYhk&w~0! zGz6U#4vASbzNVKqa4+u*qd26FnM-rg^?!amxxwI4O{~&j7^ocyfvdPcOlgiGS`dFJ zO@SeK$k>WJ6Rkrb6f_tU4+K9@Xk-?!w&LUYl4~UC*&!bCZw^Zn&U~tjiy?FIo?tA|?Cx^ynKhv$nz^ z+}VzC>pyu<^YNatNkq32Um6wUNbmvNrGMEsqR(MQ$}A7eULGt}=#=ciM#Z1`M=m9w z$~BSdvQC1VHt~Nezvd0V*KgWu`0$E{9bZjvkI8Ea*AChzUx)OVfR#cB;|j{-^|xB7 z6_w(*XGyqF;kOeU+tfNPS!u*6yZ701ud^$$hUkaJLcR`uQzf(x7|?*5H}(b~pJ53D zF*O&e9|v^42iMGm1FpEdTERUg{?ledWA2}~s!qyMadTHObGiZOB%eI^}wlApHAhM6Y~8TFZICNE*PVjBHXe8z71rc$?Tqg|@0 zG{gEJ1dR+zQk`n0W^}!}BXa_DY5f6^4*HUf+OFmZHmDEk1TG#GB-Ja9%*c;~&}+E% z-LgQ%`;R#~NE;Lj!>j+mpF9J-xb7z4Z&`G1>VXqFuDx9!`+v1Ofec4`|66PYoY0Heqw8109V6_E_Hr~(VGq( z?wL1T({@K$F_`K5I;WF#d=N#YPkZ1OSB3+8Ltx+Glq~MsO5XALQl2yDAZ~j_WQMi% zH5T&up^8~^M{%dwrAxRvC032Lc%(~soh0|ippGqgSV2a; zLie~bkGr`Pk35dz-f`xvi)zJ`t_c0NPLZKr@6<4cd?=3G_~=_&opu{3Qwz32M8<|` z!)bS3Xz1Y~2tIt$AopiZNGq@jqcLBf>szpjpAmllb?dF0Y#!%@ zp!m1{+$M54=1o4dKfkvTy1Jt{$u<(>aDBV!c-YmVl3y@BJ7ko*gFK7 ziPXwM&(bqHIQR#2miD6Kj=uNsG~tWM^TMZY{Kv5!M_G7TPW$a)Ciu-rB%sQOE?yI* zihwXdM=a3sE{GH-c@l*+?8W%@{$zeWfSpJ#!Ol+-yfShEgZUp}TOKHZ-KU5+h! zr<=K1T@}XUnF4;or;9DjC+G+@^P0JmmO@1Ox-way6&2OtOFb>yIRvm~k^x-MICPo> zx-u2id3E2Ji@$p7+q1&>k+Tt`WLDP3oG=R{mnr%PLKF@2E0+yvbbWz$eYA652Nit8 zbOs1b>;&|$h2rOaFAT_s*9HxO5rEQTv>M;CUm42aQGOakQOzKVuW5gE>kfn6C*}h zq*O^hc2Yw3Et)kYtD7BtcIOATFzos?K<$DQ7`gnsJ~6xrhn_tufpfryxGK8hH}P)R zk8(z-K5Tk>G_Yf~@%&-pVT{&zGP@`%HtU}CB%LB~X5mrtl}eavAZ40KOmc0;;HlGsEVG#sHHs|OH0A^!<6k-GM}N^#dfz8r`A= z3@Izu1J&P2pJEtUSo*6il%-wFMv>wu}EAj7zf*ub>}RIi6mCbd9)XEm`f z^|nZ9iVfP+DxdQ3U+XeuV3+KLEZi^0?wau@66RtbOxUxzkRhfQyS)6S+#7b40B*46QM2MNdK7WNWVl3_ z?Up!A@{o!u9ke`wVYBBQ>C>aE9CnhF>K*t=)KZD^MHmkhh~MaI;xPe1l3Jq`=#HCD{|KU)lS@Ar&sxuS_j!KHnYX(9EeuVBc_3c%M;j_rIjpc__o5u> zojks=gX%j!u{o4o5bO9;!F;2hgPo5jcfjT}B|i+;f#j z-m1-1x#&FKO0AqNVyk#y{r7& zV_la4Ou~u+Zj$3;-#b%s3|Qk8$ix?$CZ?sw=sf^2bwIqD5@E#Eb0qhT!XG&>-fQK9 z{ziZN#{54L^m4rKN|8Z#e*(}(%>S`n(!4ZCEQ!B#*^IrxNdJtL8pyciP zmOb=AW&I`wjT`{Xh)I1Q#oeeW#|q7uNN|2e@+u4uQj)(bj)(Fz^&dneKXpjHz377 zu-Y;Lbs(TNm)vhXYvBFwy(IEy4s4r9crK<(79qod`d!G7eZ_OE93AWVp#`m0N%w`fiNh*s_E-1KET1>*`VQGX=xr+L z=n(w3bHT?4LN6{ZuDiC7si%g>Eq&kJYo1eO(U-;@)m9s*)$;3thkVQy%(M#%hxp{* zz6fSk283Zr8W+$0TddG%>QpZFmbUaY4wj+`r=%uejr2E?bGh6QI?pxsqgI5SNqHU2 zWsYbnihqZ37riJ1AHO1kw$kl8vGmRozQ{O1RVo8KTd9>GVmAV*MU0!r$#+l|Gx~83 zpLN!r7y^pV$WTOshj9_i%z5L}|G5SZ6N6mSe%Pje8_NTM+a_B69=Xxx%^n&}TQyW= zm7n~5Fck*5ynZRigmhB*HF;Ep7oNMW^;{ZVo}X>&?VYaaTy(6c z)_6U&a`_Pi0_s&Tzk-QFV2i-Z&6xir#VCWWRzh^tFE~Zy@T!@xaWtdXZWs1;a11&L#^yrSzjL;Q&es zwX2_7<^A0W44feF3v3Lbj*cr9Bt>_?M&d;PSX%wMs>#(ok3f{_C*_?3`Nlegi7U)h zxSUt_0pZ1tn1?rJN+s+sYTqmh0-K;Spow?)JZ})#Nm3)NK_qYvXdDl~y(;i)3d7oM zChOPNNiP+pkD_xZUnGj#Uq~I(09EUtE7Q`5`peo>8E(O`2pD?SckSYYLeH(y3V%?i zsFhLOko!GplgGr+RkE1D^rC;O#W@M+@XW$7Q~7=*Q&KDq4fGxXQ@e|YE>$odL+kYQ zm7-12Cl4R-B)ei=1v6vs7syG37OC=H{~O5B+U2gTw+K?~EFaX~B69%gh=X-Hd)K>P z0!ivfAWVsjvwz22^b-Uh%`B&r7&W*hG#64{Z_{wTJts7HWf4F&<`x#z&*`>AeIfOw z?3u0uzBfm63@SK2_lI2(Ue9J(Z#IeQ_XaAZgBA@ExtgZyy+dkt)w>&fU4!>^XFdIC z*;~iD7+6(W(3JY0_gFgZ`X}S41i?I)}IN!Is?wq5c9nQ zv3Xdu-oH-i_5|2yM%4qpnuN`W!Qb@#%B**Ol43A-dj2GY2pn zbr27bIsZzk@`3O&;N1o#vTCR2(7Ak4mCb&63ME!S%1g7=o}mxB8w48vH5|ASGDQJ; zWT}4OTVE{O*H8sKaVUAIH-PYvTe@7rsSQFrd4A1wY2h{+gvuK0&jz{Z$b+lu5*Sq` zLCeGX$P`2R-l>TeoWQIO(62?!VZYIi0QAq?(=jk0f>hPiD2q;LCDr6qaB)*i?;UYk z5x~a3ud{O-EjL99=Emh>=6!a~x2F@OW7`lm-p+Ja;3=I6SF#kMtqIpui-8zkLfz35x zRX*z*&X{#m*g|CxuA8jwIvFeojuQKQby)Q)(%s!hJygZ$>V-P_f3y_H2AQx3g?pxT#3$Yw|7IkW58=%f!9}iLv~v7ittv+d>SiBs zgFu4BcD9DK4(2`8gKU|Pv+NC;NyL;o^ryURT%@Md#tFt_Vi5%u^tSJvvvOl%cpfa;wpzC5blZ2$jyuQ2p$@v>8SW8<^2z@ilI?gA9ColuUE^x4Zr; zX;UyyWKT3n{`~c~IbYs;zx!SEAY@~lr0hiqwmQmE?T@G5`^RHV4MOY;Id9hA!*|AR zy_J%R3K|a&j~{qfq`IAN#7yVQHbpQT{CLE%G%F@3D2VG1$mohU)`?yp5~#l!UDShi zeXUbc$ka1UhW5W(-OsN|zvNsPbCwof9DDlU($r;$45BOVrPL%>YtR^ zzQ11MnhY;`yU7WfP7*v;EIxjG$?PCHK%h5Nd09u8s{q89Z}KfKc>NQh+ex=@Q#GzV zU|xEDdY6bj`M083#!Eybe!J$Z8d3uJ6NUj&`*#r>daMkkj91>c+^fF}KwBj|MigN#vroy^L8{-yinF>96G990S#didlno6Ek$@_mjS!=juy$NDRLT9!-V-YIG_yHJS-aplDWVdQ zJ88N4^&Nb>@;1BOpYcKN^WoHYw`}nXZSzclJ!hwD|Xt$?})U>p4 z?~+zf!p@JG1}-O;5dXs0P`C?#tGY?li?#)MwF!nrCbbmJU(?}5{R^#^0*)y!VNL>e zJqCv3;r>4;LkLo(vAzRztU3<_l{9c=Mep4rF260WDWC)j7J0LyaZ1LtUjyJdD^xHFhye!WAw55Q~|Sx zu#~VQL*nii6jSA&nbFU$roM3uzO%VUZ;zKTZl&KfjYPq_CcK2**TM#SvrLvZz8Px; zX+PZC{ERklYwjXRxA@U5Bmo|eVw@_xF2=~$jF`-us@T%-hGix&B0^X`a*`k?aIESW z+qH%N(tZZ?_qrfbVDpa;Y%vbhC%D5dvX?UUMn7DpdOiRLza4p`$AzE8;*jvL!)jhP z^xkpk#3?v9#}$iM!heQ~p0nwps}dUTLSx!H>-76&2gn7>7Bo`=s40!_{aiO=$PajQ z5hM576|uCNfK}Eulc);LP)Ov_p-puABkJ}GvI@(yVBBO!%H$$_P{IrcZ$R7ZH(3wG z_R@M=d+yh>To4=2U=E^af6WPyla~*ex01HCWgY2!f-4-(#Kb0~Z1(e>MMef?yd%Y? zxK`wBcM&8W^5-AGBhJCtu~6>dQGb}Xgzwq)nQb4`oV29AiG+Se_=eXW>br1N)B`g~ z9hX!XF>7DV?SVs6eY^N4M!nzeo-ycPp@R57!Lw;!sQ-8*1%6EWCKN@D2I@?L2MfTU zak1NlJMjivD1E)Rag>)6&!NL=!H{I-azwJlnZ7%shgTE>9jlI9}v2b$s zaEt#(N-O2N<~8;>h<*vL*)$+8q8`}!-4AMO28Ri`_U0*W18S#~_asy^PS&1vI;xef^p_*`o#x_Uk)!jPXK zNymA(CL(~=N<@x5>x1!yc;y{9T*5FUXMr|8g{v#f)$$Kav1B2`+x`kvK6Yi`<0jYF z`9slyBIpvhc)?shNv8NVnh(9`P|Yp`%siI(CjlE4`(V>BoxM^0x8!ytuXJBj27ko{ zX_prPV#yocwvQ%|Dw1|R`?|RI(zzW5`6sIFjG(M>LT(qZwPTIe{3wVNk zp*j^`+m8+O62EuDYCkuWbUMyTX+~iR&^qm(wU1n0b})$y-jyOP?Y$Y8CcglfYeZXt z#E&fsNa@Q|!894dQ`AN=(?155RLO$I&}rX8xjZTliu(j%1zT?oVNOje%y#-CmKtq|K@@Ck=YC!998TKq}lM67z55Ak9ikRov!-eQboIs_cIf<>u)?^40ZeeuBf9 zZwqSjK-FH@A%b?7<5y>!L$Wv|QvFs05N1)#;PP&K1~UZLuzcbssYRG`#E|MYxt}E|aU0b9{_Ubd2ds)*TYxtC5U^1AQnMpqie~v9KpV^X z`QKlNekot(XM-+EaCLUFNOM3Q^>y8WtYli+b{t_GFU&GsNOrr2N?-Hv|2-;MFm_sI z2y@VAVr0=1;Hja~pO5(M^JasB((X9k)jx!|gyyC#)-JK+Ft{~(F7)<3Gca(5eSb9)XFY{?!Y z!JqBMuyH^L22I4i0kq2CRMBqN3y{On9HYze0yjoJ9}JF}+m*ONUu6(n>HgY}Lt|yg z{(xx%(%pu#f;aWZaD7qV_#M5MXwiviK}baJA|yfx5h55RNc0+gu1+FRLi8?rj}~>52+>84GDPp4 zVP?#4e4pR*uJ@mJt!tUv&b?=!efHV=v&-$+9tnN0C>Ff9#de3v+Lkr{+q=AYT(oW% zjt~?dH4lV|@ftSi(_ZCAK>(#=L;UZCRel|xbGK}Zgx^>*>#XW|2I3H8<=r~rM?#hP zAd_ZzpI(OJ`$2j4o#|>KzK!W>E6THZ1Ko7va~6=#%JvfS2R;(?=xbpVZA#IjH@TDh zg9m$j=l|whbY?~!b8gm@!?NZ+cRXfaZ6d8KZ>@U!HcF#IF5_8t3!5!9dvNG7SKMQB z4_Vq=-E?d>jBDi5>CT-yGz<)3xSWA35VTeLQ>eo^=eu1_dD%QUIcbST9^&#PV!Roi zV7`r(6iN9}UV^@&;x{c1Go9oX#vG|VB-B<%n)iKexQ^?}cMslL&s#~DR6}Y1!8Z;r ze)lQZ@W)v7MEh_Amc}fs^9w^@dZjZuG|Sj5d2Y)2PzW(gxvr0@kGzE93OMNHjVe z3&COPMygL3*WOg1{x@*^hK$d1K0K7Naj@@>|dPrd8f9QGCq@fZvirn`PC-b5bWTUs=I*2)3ct%3a0_&+i}TPeJos&C^UrY+vpu(g4dr|Ux* zsH&N_p|aA`Us--H0k?0AJJJmh5aC4W&!1|5vZrTVA!m`%Ck};Fhq)hdYbz^(%hE1v z5zq6~O>Zax_j-qiHDWjvT#yGAK*ez9oBI}+%hTMA=D`>*FeRBUa+CNO_~FS<59&{A zITf}3mf~~X9|vYz`<{Bs1D`yc=}I|pDKjZGib;4Rkrx)1K@-j#7A2iHE+XmlP0EuU z_F|0A?6O<@_U%>PR@5Y=s-D1xWP5h(Zvntake4h>wH6G)&G7@Z#kr6;Tqexqv(@!^4>7<`M|M-3nX4Bmrs1|%P?{H4^NIdk%S_CzLC5tvu*I;$l zu+o&hgM+ZF4#$?4qZdKK$Qt}|F97MjGnV|4d4vfx^Ioc%Y#D+Q7;_fI1ipOv5@!ZE z%-re|Kt3hhS35cF|Mz3$*Wf;&_Bjyml&{y%^nq&urwgXOujbXOH_vVO!e-`NLS{bM z)_f4`!X=K9_+NuWE>J z#1Rk`rPgA(P1`7P&i_fUOdV%0uP{wgw@nA6KTL8_Io`u7Qo`ai2>TIYDVlYqk%EX# z@iAtSP|4Im*Qat`Z@V-0NB-`#QT+P)*nJHgYt@*H-1ETh~P*A!u& zQb?dtAC}uwl}ZkSeuN-VC?&kOGnS$kH~WO81BGecSlFy$EWLS8}BN(Ddl9#3#LI(g*Uj3g7~! zd!kcrdoudk1QI&&4Jab7PnQna8w2Gk+p>SVSHAe$G)mk5R#M}&5|)A} zZ#T~IWmAN-oNdh0F=x@cP&|OSl`bwLX`g^5!|`PzxpikU%=~n|%%t&#a@X4;uiGz* z9%y0PxT*A1#nw^!iswH23q!GP;OTKUltdWszpS5Myq_8_WQHsB0F&^(e^V(rDX_(p zR$EnBD7{DT7~S*dMg#yXDiE(ipvX_A$!@s=Ko;%+i_wc=T=lqXjgLfb-RhN6P5N<(~&|wZfV zgT)5}$7}{A^dlLQT{fPJ&0lwC2dc$Q&?z;UR2x%t;J!jAh(S>;&)8aI)<0`Qtt)_$5SAQ z8zpY5V0y9u8b5fg^OSV_P?Ar#2jue!gWt zKA`%E{a`rJEi@ZnIA4x%!cBvv=Ub1Z)}@ioMWT|I_a{X7XK*p!5PD;mn0xXN2kh1N z&Y3ZZ9HL~VJ(_YKdETVubX}0GEur4nITW03^GPbyT8RS2;6G0|g=K=V?>83Kz-Xwx zuJS1<>Ftqq+$(<@mb>@kp<0CD)OsQi_&LPEB_fjKT-LiV`{>hJh`&b%)7buil$o?NNN?9h^-j>P)C79I}>+Nrne!Nu0A{^&eTlHy&PNd>9y z${!1)UeqNA<{ZQF(t@xx&@hA1Sg!U`&iM7K(QIM99HGuGS!G80AdD~gIW`Lp`&$HK zUzq;U@UwZ&=+)@bVdYffn>2230@>NJIR!C+qDB6vBa+s8(K&l=Pq!9*W*X(*`=t#z z)VMV$X}{e~Q;#{+n=DFmz+PrLZo1*b0%txXHa=XZ-b>Q7%AlJm~CyIlS|H8kTA z!Z-fkSb{=JH3fXo6a6Qa>(j@mU*iT~{f0!~YOaU1iXFw?9Brj2w)#=!J5n5^Y3xX# zu#mcROdf~%DJK%p%-D63wxt1;AjwbjBGOW#a4C-}+gEgwvgCxLe#{R$uA-#uP&(r{ zQk5f+=%`{)FgxLijzV<>{y(=6*MdJlL_BeO79Q8eBk+fY5r?Uf?^6~QsFmh62T<^S zFfXFikNhQd*r)Zi!txKEm05G1G#NeTc!ATK&6PqoG^dDJg^NR^B6(k;3gV)%J`d{e zO5y`=hzzS5gaSbrVfZhF5bp{#UAk0BSFxE^U*Z6_EB)!zy26h7@zP5kuVap#ONkh~ zyALHD_dpN$xD_(FgL1*PKTB@oSX3bl?soO7y)+yjaFCn=J1PcW%cCxuWfXOL_6vAv z2OY%kHYshzlJL&_aOF||sbTIH7IuZurmMn%2ILi8XJq8;H*)0HuS6uX$z;On@=4Y9{^&&=%#x%!=rZPoMwHklX0|)aAJqG(sC$>> zHCS`T<#n8SyuZU=k8TX1YO(XicfUB>)@Eh>`8JyR=OOWphQpt~KEGN1^_dBs%1x{3 zrg%(R>q75;4Y-&#a9Su~M&Haf>$LEAbF}@s95tjQD^k>T4*vV^(2q4vIRmS_h3lP^ zWRT+_ItsU>KO0HzeY|-d7x!mBZ1U(4*f`y z$7EMnLjrv3z^^*U;&_*pSWsC0Qt8ji^M*=ub+L!mqXSpV%CrAYcC8+PP_3gZWxI*8cmom@~)m$Q#_BTCa_Fbqpen;%gW# za6jl;!_<8-mSq};L$@-||C(9ktd~a2dOKBCr8l&d58=x~-EL?YIuioI&1+82vx>Y5o=@&|=iOU}`OW-GH{rgOz2IHgN~X3VK3fLP1q{zn>p>Pv&vaJF z93^+f1r2Npma?Fx^Zraqvt2cgeYXrXbG<7F5E;g#pk&8BZt66pB|#QvYx(78oe-ED z+gFi%>+Yk{cP_0enG|N7WPh~R_*V}eB=sHQdg}rEWqz%c??i2CK(d_=&9Zz|Pr}Zf zf|ckPbs$_|#bvF|XYzNxUSqh0_gc+%+S78?wjK7hUns1@B|5yBk?_*rKMmZF10wwo z9kciA7Hm#49MQ;>wv9`8Hc)BFm1r(5EcwT2CMFJnuN+Dge5R7%Mlk0SJ&yftxb<6H z(*FuP8QAXXf)&xnBd=KrkTJ0nB)#GQrshQuN_$B_C%i8Xn zSV@of&s@K~dvONKbpIFSdL+^DFtH;s-D*PU{fyAPKAlE!7tRaQzr>0EzRO8*Ssyk3 zXng}RzaOamSG`NrB02N%$<63tJ*M1^jmpQD#RTnazgv>DS-T-3BYf!=)Cy;K;jmNE z#0T?BM?H!=N0n0MqXw(G&_#Jyhn*+|Ka8`pNOx178q zvrL;36{q4Sv?+0uJaMhuDPq)vD&jKQd^HwUy3-G)LB+44E4LJ@y)&FZOun>i31*v!Y{9Zbc}59!35OY9)E#kC#yvcvOU; zyuHG&bn&|~xsrRp#KX$!4|ef>OCU7%=$-ydh3VKAAbSCCPRzbtuOxtpCB_pw$sF0a;OnmKVug!r zMk607*cs7ZlLb0l`URbJWNPs8eb?5#U33q$OqnN2`F83^@2zWcWUXaVNQb^J!PBH6 zp#3=aDaacFU$mi6&5{BZ_yM&9`dmSY zK|0@Cnq;dleS?_*e>-0q?Jna=>c-1b)d2w*X<*BePUIhy^6nMX`R%_+1&{RkHne4W zRN2Ey8@e4?esxfu;ltJe3$E9YDyzYV>#_MsS80NLKbe1&pYK{om1)^8b0Ym)zse$ry*ajPExtE8?SJ+t z8xrw$Sf&bfe@s`wdgkPmW1Ge?wBb|g>i^rpJ7Pqi>;e>zY5iy-A5^fq8R=aMr1Y$` zqLZt()-AXrA~nceLgc(5M}`UzFQgwoJ8g{OZn5OiUJpZ&udi+qR@Fgxj_%6i{nW+s z`wTi9(<=05Xtg=xJ6imu!hDhm@zo~FCQzY)bW+2Qi|@!(5vUM#}n${a8qjPcgfADEaEK;OUAnpW6ZgFA>kG! zqZrlVO?f3xVC$9$$x)|z2}&^V27wAeZ^<$72qJ*@J#i`x>+6WnHsu;JCjJc6W3Z*} zN3SWQe9y&Cu(4I@kCFm)4XW+mao~g^gfv#kgUq!BLje=?T%2CRC3=kMxHDRJX91vl zzGw3g0i3x~={y>-+cw*1SS`N9{y7e*=p{w9bN8&q;5Kfen7;Q+y0T?E37p8)F?p*hI7tzBQc} z$%f*D&l>eX@x>kv+0=Fde9N&}O5nIGxnjThQ}CVhtBy{%gBI!_V=^iyDZ25|+0%Q) zgdm@Epk&hRBb%+SQcFpLsFd`i+y6x21htq+9%p2~=o8m_mwUJ>HaeFCG~>*BLCTN> zE|OcyEe{Lka>mkf=e=@Y;Me{rG|snff;GV@NR2T;yber@k;HR{dt4^8Ar8j<~q1Hh2|* zXWB$1ph82CBaBr*$xi;e>vIIDt)BTHAv3!HOov6i1@6W>o0$%IVf zTJhLOI@a>2Lm|ep0h~m_HJ~E!@jhKRNif&-)=5c-o5n=fKUJT{AEYqEkGrvg9_}wI zSQ9vR+!vG*X;0i+e5C9i7n9HFjBsvFJEA0Bx&>-(P#P8|)^8h)(*y?T1?%f6eJ89JT?l4akBjf)#y zYT&tktqh(KW$s7a!w7p68R+2_5xeuMknisq1CQTi@rNMA^@G#EGg^Oby$P2tLucSl*hcH6NbD{mcIvdd#ciX*)PFp!Hr@s=@E8%KFt;Yl^ggKFMC*uV+s=75JU~e(PN6p3!|jysG}> zzZ7&ZU&MXUc1QGTl8_7=fnXMfR;I{D{~an)9s8S?@B$F=qNqFKjg0Y|8Id zmE+eEc6mMjJ-k!1-s@4w;OZ%nBIgtxOpQ%QN}39wdJEnnhF-ZYEIF32p>a=(Jrw$B z4<@e_uPL7G4=Uv900+pe{h8hkzgUIs7io&tZ{B>9O@HiYXYni57LOIvq6sO#P`p}B>fRJ$&8DO zyKJ8|0-Moy&rCE>a3P3p$vM0R@>)*Jj$>hJ@oVojiANAnA7Ol}o`#Q!ne(^~39Y7i4<59Jw`V<^oA+1}4)xeb;9x z|2{Zd`q_&&61~EY4IAFHqO_Az0pG9vDtq{=YuJ|xM(aydI{$&_H8~rjkS-!}8YTz; zuYK;Fe83z&_PDih6Z%mjm#*?{ky6DEMDqO)p1h&4S!mNkr5hR2OP>$(n>ju_!zm8n zRREE0CXP1lb*tt29Mq{o)12#b;b6;g8)BVQsEC$GLH#yA0mdejndjaTn0sY()Nz@e znMc6PyquEP2>I*6b1?Rv%QnfOB3(V8aAF3pW&QySH zDQAqP*#o@}5r&|@r5A`rd)-uSWsXa4$80Z4>>Q%@RmJ!h*d7>GnLph4DXox{loU~l z>gI;`{knQ^e3_koVIV1a@0sXRi3IAb=rtmjvL{r8z*GmWDi*sTtkr@J7L(q9WqK7S zNd+9ub;Wg1DgF22>oYHw#Jp-hv$(g%VD2~*jvrx8h=7~8+OhP2uJK>l5%;s?{I2!1 zikUY%Wqxl?6h?;qPR{EMQaFM3y|0^(QOkF0-=-r6^g{aUh#uT0Dwt@`ri^%A7^Kb= ztzOEAp7kRA<-jhkg*B8~UxBzlxigvXdK|K&qH zlNY9LW75H~XD>kY{Yz#Pp9vL^iC?w8@`;POZG|5cKtUFxju?+c3_mMQjlPGjaz1X! ziK%z4szkgpLv=k!WXXH@q}+5;Cc92)z>P`==Y32UZ177o%qTg(U@MHz+4p3X^UT=% zx=nNs=*{%}I7=&6B9P1L&<@j9P;ZlB2V55Sw87rUNL4d^1)|!}yqUewX#87UGH*SN zjaWQ3I2nVgT`hp%tQZa0Q9P6xj9}2+ZBrq<`mJcG(Q}pkn zRlBesdi@b`C~PnN5|Vh?l#nVZ+&ay2Q17{>sfLhX31k>%lc+VF`AsK^n^L-GQehDm zpoxFwbMV5g=M^}+nfoc4O-TN$o{Wwry;<-FP}q=U{+^B1#o`Gq0BGk8*2pgmySH8L z-Y)1E70fy~5~boNdh?6LRa%NgLwz?Wz+W(Y`?R-a!b&(w6+gYo?q(k=^QULwFjwX3 zF}&lwn=AOphc*X}T-O%UCwLcdhfx{~%c~YwF{riEvCiFLXrFV(W!&oa7v-sU2{8|AraUIhly&FLjbB#S9?=0=uptPD z^PuzgdJ=y7YyH{F3s2YksMcAolZJ=E7`Wvlr!>r9*Z#g-c>lJjN!;v}d)VagvTh3c z6C~Wlv}@%#20JSES0dNs)i%pzbj-VemOLbSxpO4NY9eiwB*%YMyr7}9Q_SNNEq*wQ zHF?fw25Uh5G3Gn_QHTXwln2OU@|yb12OzL`sVz%Nf=zilX#Y(lN{;fvFBJY7yz(a+ z30WhP1Yh#C%>?|d5!PB(Ln8bv7U|UeG5U~C&bMn+K9BZdFy}Yp(zz~W^}>evo!Me^ z&e;fa3Pq;8Kav3Odk0d*%4$313;92D z#jfl(ABO7GLiu^o9hvYfJ`!jTRd>UD1?O#xZm)K9ha+dhD=CB9{(S=>h`Ltn(Lw!^ z{@ryP%@o%zwo^6by~2lJc`^ zdQt2tKfIoCyzpT_7B}5y<3O5)^#smj&s1&ScQ;D9L^dWIIvaas-@sfb2Zpn32A@%O zK6q9uEg{y%5`tfIrg;NbaB{QJuV{`@f8DI`KD>o~ zaQ@A~9aQ$&8mfP(?0NsCa?LHrIdKh22SKbP8T|Q30K7tzMsZ%=eSAa~t9=Vzb@Uq{ ziXQSjnDV`tI*T958XIm0kQ7Or6~$@~(@T%~+%<{dmF6?>k{degcH1%W9io%r4Fye| zwyq|)fpNPCI@=Gi#gb1xX~a&QiB~=7_^v7n!VivnD&x0~d#uFN%!hThT{l;ymeCi- z(k))(!lx3Cnf-Zz#ooQ)!wLlCvVw;q%l}lId&1zObU+#8nxjc`8YrJUhA}&*V7-rD zWRDV!Z5-AG3V9#R9`rxMjnw_NO-cq_|ybP0mT5a9om|WSby6T8r#MCg$CklyO?{t!rgN5`0(+iP(+aEPphB*1knEL zq@H)O-D>VL^$s~S7zz9LsVsd2O}-6!U4%iDal0KK85)!K&+y9)q^%6>k#X_FhAU0s z9fU0s6AX$`21oeiOZrYN=SnepC@AuRE_Zxg)M$kTwqC4&zypc|-l;!&Qe%=T=`XWe znv9;U?*`hBhZ%nz^k1MZ8XS+yl7ekA*nK;65&IR*XWzJQ;Z3gD7=hbeBX76EY9?r< z4VlAbpWb|y_?6qlURBS84CXaom%-tC`#))^vJK2C@6~kxF4t(asDBkv$(`r z6-sM&RnmGPUsXH$n%u zSHIE``FA$__TxY2+y-GL)m>{%nT37=&i^85`MWyVM?znli@(SzeiFi$Mnr2&clqY{)A6e0-N4cf8zOM(iZ(=;_6sjXslfnObU0 zcuXQfFtAdUp`!QE@lpT@XF*w3C9YUaTojH{OX;1kHnNMwk0vHCZ%!E1J@{V~^z$&( z%!V(G(EM(o)TFbt}j8C*w((CCiGaFYAF>)! zG?!jx-~MP+U2R@goCw%bfn(sOe|nEVOPilQa}kJfN%a9-a7yOG9})Xr5)(F->6zNEw7s` z;qQcPdpT(zTp?p-!2vdwB3-~Z)JMP{Ifpqmdu)KAKXMw6J-`{f4Jo$fS}7iu6H>45 zewXYCl3~7eI+1)1o$}iJ7GZg7=4=RH9?Ripn*W~Le`X61@VJIBxsp08M@#oFYBEjd1XcCMP>Y$(b zswo~ih^bsz7v+&kdc97SW7y818fEhJ8KB%~{+hRwACSk{glwFu_QMU{s&5}X5vNM8 z?PF1dOzEOiv(8g{po)y0C50wSbU+Jrn|uL@f&&$$voT$&~*o>3{gR*hLvtiLY4g&Mf@oG5$$l_{@ViO6FnJQ=a=fZi#5CN}P_(Eik zAIMyjs}+`7L-_F=UQ|Gow@epAGl$hg{)gbvs90RUe7leXIRYXgT{BjU$v7Q9;pj9Y zU`!v2OAXR*pV;WIbi^&x_gZs2G(Oz3{zLlOUA(ia)4Z;+jWGeT2;4mJeb7*=%*nB^ z8iKQRbzm2m|IoL{>{vM*NH}_&BXbRWst7>a; z&em1(Zk8uBOwuZ*;lH6IN8PBN`$uxDia!2fpjP!F?}=wYYfuxWJgIXV`E@_Tb*iiYzW)+3h6fmYD#rw%#p^y{w2<&Zy8a26RS6sGf>n zu=+=_vU;p4kCh5vzaMW>+YM>uCJ%O9UR512$JpF|TbRF=UmsQLiaZ)Qi!drWT~AnU z1rH4ZmY?4WjDspDsT4iRR(X7rK#neOF7v`A;%VHSB3E-eyRzOU)ykw2T8Elka>tZg zMhRdG7Ki;7yk}ozy zIDfBF7!a)tyeX`ie9BQKN0Hs88V$FA%77v7G*omBv^R!j?fszS58(Npcmz0z&$xBu^RO z^2qDpfnu^Ii}I8x!uxkpGx+$JDkXS$0iE^>+KQ*l&8g*g!%Bbcduu*t@k>+6Z%wQY ztQew^=sO=RRrH50B0FA6uaX4@y-?1t_(k-WilgyPwy2HvV?5o>*1ef@QxQ!<9EU8! zb&bsX-T((5!@@hi*D|NebF_GjND!8$Q3?Q#rSd}7dR zrgr&m#5`?f%=k^u^yPv6YKxjI)y=;Zp;<4n#gZ95D98Y8areqT3DKQdTHNa95a8(^ zGPt(Ed!o@3{*_JsdvhptVCR|F#PB)x`-feOj;R6aV>GKm+&MzxfwQIUToCdCgMDGy zWh(i47Bh@mO=lSe=lsoUdjDa+^sjeu#?-55y@N|}FYgZ>EXBuCpLeur-*myEA6JBc zT>JopMlqARLwR9}TbyI4N-aHLqv+dD(@r;O=Gl-xhby-75V^&}xk6M>;B;)4 zbWmuU@uFjRR@5Vss}Yfw60>kLdb!Ff>KdV=6Bb|jqY?_XxmL_AiSzJ;tgfyWGXlg; z<-azC4?X7_9or5rv>y|1U4`@*hCmQ`2O46)%|<7hg@8IRr|ZK5_Y9(uEl8d{iV-** zTz_uw^aCU6JHMlUnz0v=1ZP-qw*S>|g$5=)c!BpT`$gE0OB3{1vAf38CcTSzoobD!`5DW^!s1UWM)}qZfK# zB*i2q#+>8CM+?1v-NQ}K>uJM-qtV?^&>rc}3{OYkSn+dD*s$Oo!D8m*)Kokb!tquN z(_YDHCywhR9`W)D$+D`o&MrDdAWrr2>YF>nkfTRx}s`aQCT@ODV(=|#C556F@1_lyaS~%o*gQ!)5 zX$q#R@|tg)el(vRBgs~&0Jun`pk>fD*Rl5TaU$=l({Nj4V@-#C==%=+5yrMYpB9`% z*l0ETHlIOdbETSbBS^;)1ifw*hR`Xu{{G@E`$FfGm|l7Pe*j6v=Pw7%2m?tJLMHaq zLdprLq8N&t)f|+jB16ktZeISp5-ZTMq|BGQO{%hDIJFx{{|q3%|E)suG!> zq5G4XGUQZQ#P}nR0?f%J-xA}si?tjN$RH?;x7cy?1^RZuoGfjR&%H5WW)^UA2}Lkx zZR!zoTwJQlZ+-jvuY|{J?R;Tv8YrBUjvGB!R@xs$%)YdS0YI~10ncts^GL4iKT!NB z<=rWkk=~ohFY!Yp+0-+LSWKl^%8gIN-v%O|P<+j(?2Ln&!l}op{O7w78Fwnb*LC64 zerZ5W)VJ!91EwQrJz~c3*#O$H$oAC<6ZNlg5g(xe+!fvrH>0_~ND4R->KZM=s&aST zQjA)>?=|n#n{9|Esxa*ZmfvR624Bhn?KfGY8Po6wC5g@N0Zl{{jf259Y4}l0qBeSL z1Yxj#QN9fi79*V|Ri?tF_B)n=p~mLJ%I3%?uP_$RMWoMtIBV$}PQ`&A-(HKS=5ln*seHN`7Z* z+-k*d>^ZWMRNCd7?~R%ocV#gLzL9jQ43#WZ$P_Wnmwm-(iHGvcU1=#37ZF6&tV9n%GuCAP()`yhR+iwq^q;>r;-r zwHmS89Z?q(3!r--%lhCmMbWN_aT zW%F22Oq4J~HtKuSfeM`&_lw`}FUZ>$cDEv_MAfpG6h6-1WQYRS?I6I}VgAjEspZ(g z@M>W)%J=+sU#-8 zp$+G2^r*WYM?&jT1zNJ1IFcdj;&>EnrBP&wI2s8qHgSd6$_WZ(2gk?V3UK&C@|a0J zOdhpUlj#Z<+ItKXTDjbpV|zxNKJbB&JYvmv5p*%zUR5&lKYa8XwtwwgEL|S1-Wq(0 z)3(0e{Xm73asK8k62GOEow;)^M}YkgGc{;BjL?ekdv^;kxBIcbu1!h2IMa3<3pG`8 zRmn#3X2V)m^+uPx8>?4Vd2Qdk5d#EPIOIp2@Xua;V_R~^Ni$)2dA6?b#tQALF_0gA zG55YRloXdk+EJjLcAGu;Kfom#F82lcrsro+6IGJn>YgwR%FAf+)=l<6-BbqW=aFyp zoT`YjV`0sSdeGj>Jlf7;zVb<+Qds51z8P?hF}CL482$CwM9QM`H_nL_A~!3IQ_q=} zeM3Zi4keTAS<8XImzVeyx<;!)-8)igL21FTw3u`x&99dfj zQsV06uTa;wZ_2;cmNfbP?D^H%%lv$|HoN0bAkif7P>X(Rd&~Uo2TE3zwDbZ^;t#6QfaYRLjr!gyrlW+&*K_6cso%S=^_F+<+*}Z{(-BBqAi|f>- z6Q?>V?~1omSH=o;&eP+b;$Ty3=kf8JdDXkD-!le@-+MhJZdokeSO9qf>}M#6(q57k zD#1m^54`fRF#NYQLm*YFdC|Gol&Rkz8d`|GyLj2D#oOA`&Y3Ne^iqn48N3wy{e3hQ z65N7!3E|Cqf8&EBgVFP2Iy4I;Aw}wMe5zFH;^}!D9~m{LX+4mTAZ#f=SBd@4!MD5q z`~LJ7OqjCZx@q`FgfqadXVA+a=kTNQO1g)7^%>i}e{YO_fcU8{_5Y*0Q4-<_8gUa`;qY3{<=w#uvts8oafeyG;4NtiiBP^R2J( z(5;JZnoP=ypHGyo(1AzX(#bVTa=BfAFBEf#_R0(QCJMfWu-Ce@tqde;WkqV2EUIRA zcPF2AT*nXilSi?@>QI#hStO3gegQ%{P~gIm7fzy}!`-Roe7}nmdF$3K*||ie|LGF* z)n2HWM+q&?l|S-ImLeN)fnr=og_=@toh;U}yzQ)wypbMMK(Bc*u?PPPyH!gYKBDZ@ zxqdZ`x6}mNLlZJB1*~M_Kjx^6}b1UO|?fs|(bP zjw3ptN>B-#s~IKK^(!qsSSmd-yc}?XEVGRzk2IL zzEj+en39Dc+ficeV5zIqkyi;BhZ_sS;o*3k|D`*z-v>`u=M+VeJ=C^Y4E)LU@P$3M zz%7h7vLygWdp~CY=s^p}OL$eRm)Q&cC-S^P|3V_sIn2tC_Jp|S`n|4>>V$u8k~gfZ zcHfyGs_t*@^%>#8L9&Pdbm#*lWj6L*nc$+`iFvi8{Edv{1>L5+pSZ<0w7ijd$-<)Q zuLEF$XzhcDZJfS!dKaW9-_p+=iQc;GM((t1%Qafv0x63eYj5#=->rhrSzMoK#xMBv zi3Ok`&jzyJkX*-|$m&EO2z6)(Moky-H^?e2kQW06H2)zGt`^x>S}$>tDO^kVIQWRb z)#Ap;D;$q4#skq}ziZ3A7P2x8CFudy!oA^C9TF^Hr zzM3ok88P4Wsei#ZZqkGl`o*7XI>lhlh%a|&akr`sf5R~uH!&M8-aue_3ODPQl?6D{ zk!{R>u{DU^`vjG51X$DVPZd7>0EoNT*Ufzl)V0j=lWWpfrdS0DB1hhgCu+PbnkNe8 zO0ZU+WG~^^{&w<|Ls^^=eDi(m)iwh;-$ZGdX0aM=xEN?*bjM%jnQi&{O2y+#H-S-S zPymy{6S>!ZwT(!we9uY}tQ$`0M>q4SOwOoG@p&E1ojQ0wt5?|o={)wE(hg;I z+%Gi2B>cB#W@Zg!oC`rlRA`w5lAo#(H!!CfUYEpN3E7Kd3e)E!X~U)0T~Q^D7o=i* z%AlUF(}8=Loh5s=yhhp?E6=;t=3x_l39G}Ypq2Cd;izLgfov0N<#}eknH+qOb3;hkG74+k^I>e^DD2a z=bQSv-?3bF4y%#RHbNTU7_y}`y18q<`&`aeeW^A+-N$W+Oz7u4ppggu(`!3>{?ly# zFU6Lw0#^-qtJ~bHSsd0zsVapiNQ$l`mo6jd>uR>;zW}!?z0wx?kj8G<6Crhl?Na!H zqn;i1*im;IgELgGIQiz0%4vj8uJ(KIzHkK2BI5(u8KQ~p_~tiiD8FAm@?Y5gcDDbx z$wKxEfUds?;ta){jWW($B05k*c|Q>LDRWs$&hYc~=XP+ZCIOx^osV5tS!WvCxt{0B2*gmH2 ziJhc@^uSCpsmh>=>8qt!53=9}Q2IT7F=+{SAs39!Sv|j!*W5hsj=axLWOi@smCV%) zuhKe}&B=4H(t*CfJJH~QQBI|nc?6X~Zcz~m<5#{l&j7zw%l2&WQ*wxiuA$%+eWO1 z@=52BM!U@WEyI57DZq)Rlph+~qV4{bVuN<*iqV$dsMR^F9UQj@$|&*Mp&(OFKD>5L zetTutLu@osxzB^!0pC)c-FLi!vNt%vK3Tmg-KB0k2N$cVk>>-9GAPp>h*er>fg2iM%)i4l~Y zc~~@lbyqtT_wiQ9*8;iW&pVp}^#~d7y95K$Q~S(4H=(Bv;^@xW)cRxm+b4dwPqKPV zXx{_51ZF_oP=@}!G928;XTX0P(g(8u?jP+w|10XI^g_1|zRW(s2BepK2k!X_&?@@u z1qd=Nv#)+Z;-}(oeTH-E^5SaW&xlpRiUg3o<qA~d zvOv_doxSWs{)TFc`@ zC3G$guVTlIKPTxFL}>sce%4fZ%<~ngsU`|vSBDv(xzDfstSAi6k^f&^-x<|J)U7@A z4k}Hg2`ESrkdBnl1VKfR5|9##2uKyAC}jXCiZm(GgdjzfUZf+TD4_>Ly7Vr+6ClYQ zeBZn7THjh9KeA@dBw@~;oOAZGpJ(p_P8fm7W~Ii!Dt(JqvCIoJ58;frL1aYvVAJ=n)|}v>s-E=0C zNR-c)eI(i_*wF1-bs;`Wv`yo}C*2t7Y}zPCtD1=C9B9Sqz;4HnQG;?7yy=%9DsGpN zl!sN`Sm~ZPo1S%fy)G#+lhQ?PA=tUt`rMyX)35ixbm_m$87ayCHQzXw_n#AL3D{Ix zNQ*5FLV9iL|GR#hS;hXzWJ|6qB?Nw7WI+Bw<+#iFSH6j%JZYFYzh-mr_Dgw^t$Lq; zDv0%m^MDSg0oG|s5vId|BKQ2fZ{w3Q{+N*gU!D!j4ZH=nWN?T4l9GcT)6>)c3`hvx zvg2~ZMO>pRYxH=VeHw8F{!_SvvseWqA}>t^araS^AtCDp1{c(2TU|~Ppz-^L>)~H} z&ucCt2_${9NYnhC-6TH%C=E#K{jdxhb2;go=aiCU5fM*k5s8!bCl0zkf};?4pi6U3 zS?(sF1hB8Ev)B*$B>?f%IjeF*Yr_+!o{sw0f}9#1+~auAdm~jT0%u~*#X z2>U|l1Png)YH?Pyb(WXqTW0iGeD}JODT1in7V_tqhL`kh)E;4rtA=8C3l$Sp=Df&@oK5n4< z;7e!!*j?iTsCgdkf$*$SH}^h=Ub8eqKls#5MQv9lNUO!bkO!8Mn2=Q5T)P*RY85&5S7@kEiZyblYoy@jK* zGbK+CRiBEjbdqo->gVPVB?i_7xs1sH?v2}T>KHWvpq=4vYXUNW0;rvLqXCKTvZ`QV z%71#^Zw%iYJp8GKHZ41Vh{3@*>3D{tJv>$AuZiOH;PpO5YHk(XUg4huJf4gCkF?k1&Hl#U3`+_e;+3Y8MHQ=td=VMeZ9k!_1x#UXzft zwN_EDgAjl}JQZtOhD1R^98aVF&!r{_D59!PBX{7H{!$=B1}rQs>2Rq%g$By`Tv>?h zGyI9NcH=d}z2FDDPD-oKg%jw4>433j4STViDe%#xl_c(wVJ101(Or0pw>UZFVQ#%%Xkpo^KhS9e z30U2sv)HG0=Z1TBZn$=*hU&s4gp9QWOTp@v0vipcV5PM8N9*N-DS};Cs!7V{Z1C`j zh2rF%Pb zF^KK`5v;HGFFW7oTBk1cktSq%9ipAlE*A@fgdpDq*gNYfQU*t~!%%o`yWWaZ+;_rI z+_ac6(UNr>c%|NiEG6I2yTO;Nmd@Vp@SS0^;=WO{*dwBSaScn^tCmCu+fipoSUI&j z`*7F#(FmAjAizTgh%cCxI{j1Twl~Ult4=ply4Wklg7l(o~a{7BD zbC|~0^VYI9ce~+05Oh#qQ>*EbFWN;p{42y>z+%btsf3(W`Ll`1W$td((r|ZEOIbb9 zrL)sT`mAJ6awD8hs5yA!q6bdj#c%}k>Z{)@4R~Fx1VQdyX1N4JzEhBE?AU-`T{yWD z9JiL7$GJ|>C7lT(z5&};qBcN2T2!&*~@Lw$#Tza-U;EM zo?7*$`Rx2;#R$$pA#xwW%V*zn!MFoSlB7nxYMnzv_B36qezd@FDvQh$EV3q9+s zOsC5}Z;Fo41AJZ0f7EgmT2_|}H4&%9y@FkOv_%2@PE793+iQOOxH$taJ(JGy4a?`7 zNTij@3!aT*$#_iO!l3?GQ-a2GGs_#S;a1n_|D7B2p81}JL6^7x)7n~EgSZ?rw1N^R zE!@G=sFz(qg4UGA^GD~c$EO0cEf%;_?%%b7FjjHnEoeJN0#XD}3A2-_pq0Uv!sM$z zn&I|kV!%?1Omh>1x*Vt#g1@lh2~uDdCo-(Py~5? z^eN>88j6Xm`E#7{kdux5X;HpJ2KiM7Ax%+xf`5 zf02vwD$=UZ#5AzpI6H9TBIq9xF5e22O~xQ{i$*4p*)db|a3^K)t$#1e%Ou@OTi|dq z63I~X0a1)?Zv1~=3b4(pa244F|JI?=uAToPA6=s%zHX~|ywNlGli1LD!c?-y#V#C$ zdE1shS)!w#U-*0yFRvickif9I*{osi$v;?kI_Y||JFvBdQz10Q6%*YNfBZPN*x^Mz z3kZ}*@+N!qU*TKqf3XhRtpB>?0}nFVW36+2hQ(5sJq~OlF8Y8h1qv6Jg`59BP3~}9 z#tDBe6dYv(ZGKHZ92-q|y&s8J5IGyy+7;e{&*NAjlpz;s(Y7742koHJAIhMje$NdW z4&OkN%lP_y?dnM97$Y}JxooM<;YT55pDkCUefhi6;BANRmvf7az7!@?#LX>UkcitB>^toKPfp@AcL_=8sb{F%;9aN z?WYit6%EekE0S`IFV50p;h^`!g@(3(1+5C;ee)8(aNbZ zy2r&GL-OE0F@Q_GyuxVv1W7o53SuWaS!{*gG3pL1}4ww@OyIp<5xDJ6NlE=4~_VdnJ|+Vkj9K^HM_Y#XUtP9laK+H)IC z@7PcNtXQlj_1*s-4UWEi2e@?Z8aF*a!V(U4Lp!$NAOm8lP4_&YfjohWG`y>G5NE_(N zlHEUtbSt-+RNm5%TX!sALZ*!Z1AY2}dHLlOEctx?(G`^0PW>Fv$AcJ<00*aY0ZA6b z!##fD`X30G5h|4RgDg0!fUV<#uNF_zKie~}{)RulL<;^xgBtdqsLz=R)eE7mPo6$4 zm?Sm&-v-i8Hz5Av6-R1ns)(#?vS{)(No{RyS^%mNYB)9mQAH0!S)4{n?0}ikgYcDC z8=+bNP-&0(jN!X@;RTE0z?b!$|aP@*l zpchWVq1=1pF^fYP?b8Xpi0~PzY>E~*%yaKgaAnzEX;ON6H^Ursq<8 z^O}NTt~bMYHzEZ|Nq5_82gcY~j(Z?F26-7gs7g<(l}`1smH8h5(CtJ~Nwf#gFmQ0SfJDl6D*!61b2GP(pw zqLUxoYw3Ddx%@BJdx|O9~VwlX3{9)JE z*Dc#RrAhDM`w#cbC4VhE(~@dVqZ#-z*!qQy2C#}sdd{&-g(TnxK}mozmIf`H-1uwp zLVby58`tEv((q8$1CV>f<(La_pNMh-03Bmk`Z~R_p<&3qaN4*@L6$(k%2Ti+KhNrV z#qyJG)3>PB7R56(?8x>yG@f^E%KgORK)G*L?`rNW+RD8 zd&gn7Y%;IH77(X_=h|2vgNg}5#W|^g8-ju@5F5%Yk$`wWXneU>3zfZm8{RKy@VVo} z$6>XT+}jk@ggLfEv}D$G+%RPi9a_xIz4ns;c2bfNmjsD6cuBAXHhrJmg`R3#tHnfl z(bf|Y#fiZ0hR1uTYA1yc4^pDS8h-DHVLE@>GV;$$C!KA9O^p8qZbEpAHEMSV7|)$s zXbHvNw@^te-0t>}U|fwqF4Pvo?Fyb-z|y3l{vO`6Tz9iP8dhd!FgOOLTMNp$PiBbd z4XA=<;OVfGTov*D_D6-(I=&o*qyEl;R%MWA;`v6(=#W>?9_gzp_V-!Ypa z(7Yn0M2bhcg{&XKo2OM44%%1s0AuDVV)yg1MwK?vY`~_!w*+tg<6tTdspR_BW%Zkz z+b>Hl0^9p_r$hi0aq28Z?9_|6%(dlPege|)#?d6V0r%BD%K$2bp$-)G?o+<68lI3rU6R;NJ`bS{3gvC)l`Er#kVtF4ZCI z-YeSe0H%W5pk=Jd&R+-d?OB6b=ULf~zK+bwcu^nzn?z*&jyq`!VIa~?R?Idb*#4*b zXzMrg`|n1s-5bB{MtGM%#O;P_t(sUonlAMqxMk2b&bM*r#DNjVGBlX38UhiVk}QY; z@yC@sh(auFRMdaBC1KiF_jp@AK7o)$1El?SueISXGeQ%T1lWZwS`uKw<~Ly&f|(+P&S@Bhwhy6l@o*&5MQvk@ zKjl=0PhOA%h#Q5+s{5_k$@nl3w#)V9zST5kAim1n*gz`z$<#a>5|VM~&+=YtBoQPW zZ`~tALW{$#I?S8o*Vof~doYH`b!Z#~^)jjD@y<{?q+bA6m_rt5VdntNq;DId2QU3E zUNafMzYDdxJ_T|qn>Tq$OrQOo`RdY|f2k!Qf&qDw{#j`5^yRqVQNCzu^dGi1O@)?1SKg|$njzkg?@~7l~@*}1N z*nw&{`DH4riJFfFKQMg51cuCp3iJss1G~8;Um>MQq?n^zolul_peiMV^{T$Ocah38mze~v*nh3;f- zcV0heneMgUzIJj;{-MU4w)hn*>>MDaKijVn2IamV+{`@n_;qv1s$c{DoSq+%(NY@Z z12m0pAbwrldVAyS!tuhI*~7r}WMw9Bvhm>|&rI?b_m7**uLVqdZ ziZuz?5x5h9BuIKu2nhPLj}H2Pc=IND_r7QJnXtrpPn3eA-%k- zM6KI1EYi9p{V_hz9PJrm7tWBOW2{VMb%S-23i;>fM#SfZ+)rcl0k60nvRkw6#e`Ni zkzafsMPL>MGVIu-L^$f>}=EH06)e@5vF7s6%H) z`i)}r=6A0fFei1aDZ4Q1?@7rM0=9{J+-$2GxsfR# zBpm*WTPc_ks*06)L6K-=i(!WPQ|m;loB7B%v#a`xj4Tw5Wezx41qAv1pn7b34M48!#TE@7;lB~F_mfpj= za;+ZTck*DY<>D&r*JoKFceSPtqr5nY-nDnF=E?y@HV^re5*nx%2|) zg(P{9Fwl;?pS9UEukhi5&uN0uAtEOR;Zl1I9O+LM_xA|E2rqFn*@sS=(?ZV*>Pi1~ zcA{Eh$FS>a!@zhk1S)GIva#|hLH^)6O1hr@zTKu9ht4JQ1cMcyn+bv3B55Cbl*}`B zRK|jbXTIig>-kVNDPS2-{~Dzei~BnpR;Pfw2LWY%ZW%=`Gi^)Zy@;B^SAA^k(I8#L zI05uqW@OZ2M(=C^yXZV!wU3Lj7l&JKTOuYC2)k4GI!%xf<$8{JjxX&SSxuk4=d^K0nY zN{Cx$r<|s+wr^@Y@|#9JmB^3xT8GBp2)#sm)(vV!OEJwqtMT8L_lAO6rB@I;j&|al zcvXTL(+aWsO^FrmfQJpTsptX9m6>?5hOW5I6ne*{*ZUd8VvKn?oH|+x1p$-%dxA@F z{lY1ImL^}K*dcJ=s6VaR{`qRR46U@JnVUPBi;QI8?oxQ#YiGKJsX=aruVBv?)LggX zoBJmg5!KxELV0-KyLJ`(@{8Zd+=ktpimL*geix9=G~-|04?IrWFq^^dW0yC62tCs_ zWMTxOY6rXCC=_3t+o8kPCr*Pr1*!Mu(E`hogq3KXxM)Qh@+Nsp-#=a*_+KeHckaL8 zQC;VOZc~q5ibfWx8J{Wj2rM18@{$avV5cg|`;n-cc#rN2ww@BljI1u0H4Nw*VC+;3SETeCivIIwg7n~_kz`mKwqiY9i%3~^lO9Z^TVKe5-M^10_H zrqr%OVaY2;!!>d$M1WFYx5V!r+lgRvNE0LZUaE8^junM=u&;@`34VCZV6<3sgtQ<3 zl=HMGPsSO6TS$CB=fJk$PMjv_Z1Ia*x0=t4yG%LkCUuG1R0w|WaGGde(cX;phA?go zPME7o4SqYgQH^4-`^)~|^Yf|%w{H9K=i~BZ8NMRnk4Q1B*;qhN7pFBQA#~Hi1C!e zST?i$CLnhj_@AX2dy3$3r9D#4($46<`vJW5yY*}q> ztqa-yazC>pH~~SKH|Vt)Z)SX}h1$|!V5CG=1w%$$Q{_Q)M_RXeMPzU0-=B2|R}$dl z6xRMHnq5t8rT1Iym6?KKqHTx`>apA&F@H>#TgUop?UDFZHQ1H+6Ew<5<*T1r6}56_ zMPvg62*vXkmfQZWwT6TiBLpKiTpFCe=9hEpQB$cA-l zG@`D)O>Wot@Fd`XzsaCQqa<{yz}3biItS|UEYs)&9eYeM(Z)8zNruU5p&VAlS!a(7 zZ&`$yrKKhUf!y#c&mn)&(cmMj+-#^7He<&TtQ|uMKPcaWspM-MhojOr0sl|E8&?riQe#*t`Sc+skdE zG&`aw_YC?@y!(P-7d#!;l>WN>7I@<^zt#Z8Rx1Y#7!ByhKT+v~-mFh*Tu71~^|0>m zgc6imZ<>I;c6i&Mv;Ku5i+WP_Z`WJZsjHz+Kz0%Kt0X$)P#HRinwMBERQS5z|6W!M zXkI8CLHBXNZbRF0h>B#MuIIH!N`Cs!S3~g~eIoNnSle8Ait?fF_v4N|w>#`5X9|-+ acnYcq_I;gZJLCZLr+r6PqeRUrxd6yA;T3)fs8VNh*pxIMueR zXI2%NZ+0_3E}l{UNM40qJ81P zMHh^)H(aeabEps=k)2*ad;5(_SbnA@Vz11}!&=7v>Uu-|V{Z24Xb(8*ktW}qUazUu z%`ZFCBAw^Wn&+)ZODg|Xa>?oXW58!Tc^jiSfT);r8Y6{{H|mTnioAKOGMmtNiY7!i zR5mu`408GWC`?&LOZkmg&A`b~(vh0Qxc5t9^Z=P!i1Dc=-y9pKLUA7rY-)rXTW%cf z^BjFtmBL^cN<>^pF%5v2y5P-}i23>JHpoV8!ApI0`2tI#3{B12hmwb_JGlq`#G%lF zxQ8Ug+!Ds;r$N1Pja;FzV49LlFI*~B3 zCuo_@lT^)^8)3~nC`86;ky3D+Xx)`A-<&?W`(gWkFk6$E1fowP5o=XwKJqbqwa4S; z*QD2r43stK9U#*@ic`%9q`)V*?j2sLQRQ|pL5*lBuB{tesF7WvRon~3ByJFhf=1)uchA3 zFP}!)z4FI#j`ui8%u*sYww|?mC!9ed2AhqiHl#!c6N{Z>>9r@GW&$yBNvfGT4OMsX z?Qjk*h$j4d($3qaLMB(^=UV9{EmQ~ADlXGXON3#mZ@^s#6xiTL=0|0B!J$c=CebB~ z8dII#1)7qy0Uyd{T!edhR%y>4jx&8J+fgIuf&M-<)2tp(Q2QreLtt3MprCmqNP3`( zKXVfLg;xez$kL{nA;B&8Z-al82T#J{4|Bn~qIL!SjS@IDP#+pL&#%Qip?)aC=GoEB zM%IuZ*aX6NO-K8v9`Fjy7TyScSgHrYOeIr>d$#`5xTRSU8$jK2QQ-U7<1wLZz{YgJ zIThXC@U?h*(7V9mp<0|HIqm3oj>Rs%8BzW9;A;Eoa(0+U=9(369(h+Cf-hjGiS-MzoEq)(++H1eI z0xvg-Np35?YC{L5<{`VTq&IR(au?Fw3j0WLa|I_89K0)-$7USaVqEBFa37-~8ed*l z>cA5!GM6cVa(yw%_HuEEachJ3nu|Pf`b4sP$}WnJXbAq-DS? zjaI=&mS27aD|?rjqX5rje&kAH;QJiRt~@O)EV(WKd;M=U@k-ArRJ8?`pB@|QLWjAm?N=2P zsd3-v2uHMhnNFdg;NhRj(@oFi|Ic0wj^~Rck+E26iC;G$Z!7 z^;SWL#a|)_a-}+ve|=A-!_i)lFfK?5k z-);&ZMcs4oYiQS7Z<`Oe#3mx)6w{89zkzmqhMXsqN-4=*p38jjd8s992wj&E!|vWv zNAYqvK2rMGT0ZX38xKAYc2@WY6e=Ulc5M&yIvtl%o~v+%RP7+h%nxi0eCna>T;z@D zUupJNv*fRBP`R4^=)frcO(S>HB$C|JMT|V%_u}E9*MX#rT>5T;dF=|bNlWjRh>Cgu zb5<;dWh5xAis+`5T&Qa6O}J-h8yoWAN}9D!*KKQ1oLK5pqJSQ0cP<7zyAZFqM4I#6CEY5%odT9BShlKXla1{ozVCJiReY~r&arQ1s9+M6cYK336tC--+OL^FL*|(O@4c7 z41_BhMi8lZy+0m48qP98u6RYC5LUcWwt$MNsfP!z0wXT8wf zRO>0ehcQDtfM4Kwu@k3QB7e=B= zpwBz5Joj=$%U~Mod83bR2RzB*VX`(9QHpYtCLuH}Exu-NdhNZfwErafFU#f2O4QU& z^r@-dPO`X3Y6yO&?y_gJA7{NJOoNy}TD_dW(LE{%QoPN(5nA`w|9kBc%bd^Sw$e87 zX#ywtwUciINa)LanN5B@kV$@{K`q#!a@~ddbf-Y`@2#C9Z42<801_|foNYbJ`p-Mw zVtz6jz*+4M{k(ssMVDtOXl0eYO}IGW-XhrKTCM z5J!T`GJMStV?CC<4&30#qAaals5rtoIdY1zjhiIR_tD;NcdK*5X^rt+ul(vlS+nTU zDH?^J*jO@Al#Yx*UR+!(>gm~7^w3sPg7l>*p$35rWXAIFeTl=8kN|jM27xrpxad;h zzT(U7e$$SU#@^2oQ!FD%czeOI#Q6>U`6DSQ31gKSqR$d4ofn{48r)@Um3WtkEJ+T@ zWxY@zjVg)NC?!mJALmFhN2t>RPS*Fg8P*@aFYGWUAy{M-OYyDOrZjQ?>URYHF`oXuR_m9=HZ!1hY>Iko3B*>AW4#?Y{00-L4b4z0{1&CKw0EZo#NrNd;hTDQl3&bpkb)WC-Jxh@&%`>Y9r${HH5AzzgZ3`V`Gy&`gzJ+Ik*ghq%? z^Yc#yfJAMko1ZviAXUK;>&RaCNd&vg8ivc#KDnsFvM;dQLFweGX4_+PDTiz8 zd}psdH!(eEaE(+Bkrn{ImlP;-j=ftOJKeg7`J7PX!Z$t7QWThUtDANM4GI+uebD{A zouFwd+WOVpYySk}!Qk^OHGS;~kygBblp0y->k}0!q;y*oHwW`8dzY8U5g7T2>MU4z ztVLU~5bi(kEc$xGQ8X3p+MR=_AkfgM_CK)7eN3XR*|R{|0I#;#Wj=6yFqwVJimI78 zj;Lxn5Q3V9S^@3VzRY8{@F{RuOm;1bL@0Hs&K55`CMIOjE~LwN!@MvrJaS%n(WNkc zAwM&2UCOe8^o+vZ#)o3u3S1>Tv{sO?=K8;A_SAH zQ0hGHGMCx`N;a029nYUZn}#jPy*Zsp4SymCiEtYCJbozzOTAS5yR%u3@*HDq1KEOE z+2lJ~85o1oXfEFWW%&IY!@Y|Avf(LwfxI_8dxF-v`aGrtGlO&4ia6i?z?d7e4k^K| z*stTw8NXKpjXCFzerfP3@8mugJYWHpR5>{qjQ~I%*qXjSJ7zGbJbhU?$j(oosNXRL zQI#@y0qf-oF;73TQfqwkup%LXmjD%bg3*6!6iYrVR2PvjC^5cJy-Ppd&> zMt7niGJT$ZlQlSOA34VeS`b2lcq$^DhI-Hy+b>?C{J8q-XDUo5H%3@#d$OK5t7p0x zNEs-A-H3q1Y>JVB9&Zp2?%@L5Kj7kq_`f`EZiv0UK3Keal1KA13A3FAcBch{vWapB z@JgBzNW0mUp4;cvZYob^+qSa0`h#QZC0xyZ!*{ZVWOhBo8vmHI17Alno&a)CM`|;4r-~IG$GuERi z9J2Rj-?{1$bC>^>;hSKzV?&|I`s+4?4!5aaEk503!ynt%g>wwsiP49CgBX0Xo9T1b zRc$`Z7YlKC^(HmjWY@kP)Ew`mtVf~SSO4g=3(DYNS*j66__|PA_CbFiYL(p$9{AZV zoN?dw`psaOzYLN_85NY6E)==-tzsq?5iux-?RE1r2^> zMCgifU%Y;TYjW@b>V9yim0SMZKuV8J4eHJUdL8scTRM2UXIIWTI`(}!qPvD|-8LAY zhQ@CE%QvWge1HVk18K}#EEKn3T5EjY7d5I4D?1n6mkysI|2J95h90CsY%XTJb@ zhr9j|)Q{QImz*CDU2@P`G4~!7-_D~s&<9z1bo zW$wBsPw>3yJCZDX>ozSPT@PR`pLhbFbCBE!3Vtc7A=iEpX*--QLI=$Ufp&LS-i~iV z>?3G{Ah~qv8ngdCyqI}y1JS(2i#3*5Az#Tpge$A51s2FB{mT`}@9*5BOeacJ>Rg41 z3FE*J@7at~#+LfTe1ScR5#cV)tG3(|DhP?g6#?A4Fq*%eQD%2>0jckds=O%)Bi`F(GrO)?-ob;)kGB{Ggwe zAfY%qK<2k{{G^Cdu4%}Y`~F^#?()5R4JZ%XRVRPFuicmGPuBT@1E)*a8H`}%`)`_0 z>jK=|f7>4}p3v`GSQxYS35w8;0|$5Lw|DCxIvVMVNFea?01bgrML{5jSwY?z8J5zP zWioV^F&~9Hga6vza0Y+0_~b}k{+d}$v&>h~iPQIU$(Xv6oL35#W7Kn*fX|66N}4i; zL#fg%c3 zF6POveXiZs{F8+rcCe;803b|~f=I|4TS@pK{~~VzF*!BfS*2!F>iSBRtoM})3=znK z)6j6sG`sTi4kc>}Wu#?mVWxRFW&9^}FtXy@Pn<8D3pXYC#;&c$9(d6#>%@=ODr$_0 z0u*H)=_8<|R9bJqI2afh2)G_A z&N7ieC(MI&$Jp z_Wyon13wWkmB9h-PV0%`W>()(6G9i+xVq*BqL2{&k7}bZ-utzpy;SLpqe2388CeDz ze0=Ywec|o(6bAGvtOgBg1Rj2-Jbo61$iqN0kWG9U(*T2b!ouQ8iw=`51bD;dVf zoyaoN{KGGE1}2;K>(dX6pdrf)(t2jY&xNTOnK!>JXy;fBKlhDhj1KNsTJ8eOX4j@7 zNb6M=_*wDJNTNomxrF|!?HPBs3zq~0JfIJ$xfjQ`r>(%33`IL%*f#Co%$*twOcby{%=IJ@G?0obIIg{e` z*TZ-2v=r!sJ13DAlSzeT}urWzF@A2`m1!5PE{*P~ZM#ex% zikzXLAz3>+rr+Qi`;+weXV$#g2%nETlJh=hFY_fc}3k2Qgx zh%$Zcv4Fa*S$ea|zPaL+WzXtiU-DQ4LjV?(Y2j%tWfYfS+w{Xh5;zFyM*yV@8-PK|9ZOBRbP9{(tm;vo z6brMB`8s)e8uoQM6r@VNB|Y`l`j}Z2 z0qi**ilbz^obcaMT~PW$t<T?8$a zCAt>x&%;jSBs9e-sB&L2y0>M-W7UJSJo|kLS|-Vjt|K?i*w_YfFBm}0sryO;LrB9p zUt&%#s;U*g+0Q|A-2#6r6O*4uxHyi>)OE!~@oI_lpOYR4-MQ_Ijeh?4xMY&9BS1Rn zf=g}-s=Sd*icFn|BvdxKN^r4-14Aa$UiWowX}00d96JBgfSE$9MT1P=b!W2yHJCf6 zeV_DUaTEr`K=Qa&bD}t!mj*z4zqUWFkF3dpHg1C(yneMc`5YRgx4oUSdPW3=(xtAF zkmNRQDHb<8e7eGj*7Y!sQ^HDR#``+8C8hlun*xFyI(7tP?T>9MIJy)}yJW0FG6n{` z8^a%9^g~?bG?Bj5zrv?6R#0kvN308IviYw4{AH*tVGdduEDMtjn+<@-oJDLv1M)o@ zV?o}O;@Bn@R;uSJ4d$z!drxJ0-fqf9++s{)evN0c*dTrg1_-XvzeUO^MXbgrgQ*f9 zGZ(}3z5Tl%aHs`3+~h-}Ity~&%oNY88vH%wA01(|*V7c$_Eps8SSg%jJ_*gVWDX40 zwW3Hr8r#98&>)Hd2oRV%UYE%Qlz-RmXZ{|o(H1iSLboNDdDI{$@6qwjuu0?LyH1TW zTLoxTwSriFEzO#AgV=*SQr zkrv0{EK5(J9$KUZ_b^+A-l&A)7u%fZ+szGY-9}fIJ!YnWlUbL3K8r81c^?uH%a=J= zDySoSf9*3KR~dSUEfZ#DwPz^GdeFsP?4OMRH2lZAE2gK&2skKUKg;)qPaPB%b$m!4 zIYX6W{KjK=9ePaw1qwSP+@_B_Bn<3%2!$?RC)yvf{mO>_Y4|laSO16ouj5}9hS7QF z>n)Gun3XiZgAVchi)b2WmT#)EOgw4=E^FUWlEtQOI0~rpu|OyJ_4ebv>8U;o6*-zl z&ieAv`r6Nk^UGT zDpg#TPq9CWQ^zI)G$s@D>dd2GKx|xPqb^O!q$v-KM-sKyJ;sB!Zcw%d>XxWgxTwD! zM|NAMl2}&Ltv>FLhmyf@088whdQR`$)mxim?TQx%{_Yw)N0m~e*_WA{?#}1!oouK((rQoTOVj% z4WE%hTI*q8<@dyV?gW3fAcGRP7blm%a(FM_A5*jB16&@OlD%Ar3}5WfK^p}=@Y{K# zO;+>*ONRgNvLPcCO>(vV@?l)T#mx=S`!_kSeZKUb|RPsX_tWc~^{YkDd#4?~Eq)@HKGzQO0+VE`0b{fQoS z@9a+>(R>a)g!Y|OX;0lt7!{Z4kzBt^n*C5tq?dP$3=awVcI;6ahEM?W(s=;g$<*U* z!tCVc=H)T4js2dqOU<0dT;+zLENYL8K3C}1dvN^9GPTS&O(TtAECOkvpSPx`V(7)B z#TE3tG>MZ(G)NKZ0cU^AodSr8hfd)--^&@VhhByZUfR=JE?VJIk>@SB&q4grXOs#Trp)Lx=EppmD97Ma&WK8?YCb z_blx{NFaqurCPi8rPtS*p@SO2yMg1}>v*Ex8)==#x=H7}GK@t$MM)e-aClsK_k5H2 ze-jgR0ky2je@x)(?yNn-jpQ?`Wq5>VYNycs~Cq+KTU} z=qkJ(iF|@=?*YM$$>MsodDW7O?lbMR+P})jONf5xb^*;z5-{k7j(U#kqiF<%$t+z^ z1@)ybJR{g|s5)_u$M5x&Biom!?rFIyT*b=_M?vY^1}SYqP5QCPmZ z6&Z=Cj!sBrvDkNK#^Z7tKGx*lbe7jp;U6Q(EjUSuUqlNma(2@`ws+grA_upzq$+ow zTP_BOnx1>#kqRI39SDj7f`AyAOak_dykn(La#^TVz90J@fY!!il%5^-;Rz@xR+ zIc@!pSMyO@$L>?*L+mFv)m~2X6Wh$=SB|=q3%wvZXbmhptX)p+WL+3T1#$awMkW}w$3oW7q3rC)9q z_Y%cSBJRIj(rNBOx$BzNW}@9$;5mQ&KNr+`P%HVa4#R}!KWBYMMy3s}Z2@>!i+M=e z_wFR+B`&*f@-jl|=+VK>qwXgV#<%+{Oqt1^-e~`yqcPLt4J&me=Ny8(TNzOw`(pe) zsg{4AwF%T^5#O!DVP=#ECgQav=YJ47NtokuqwHH>7&74;*o3iWW|+suo-{f+#{#M!Ge z!_cq!ZLf$EPnGR-A>cp9W5D|7R#N=!@d|o@vpl3Wm-VyKAE^ouf%2U4mxM-LVtfsr#xn7USyLGkVQyojx7oT|j|e_N4y7Ual_c3c`B~ zw>2K%oPN0Xmp_|H8FILV6hZ}TKK5v_jow(sl^4X}S@x}_&u&b;xAfoDE1a}CL(Yej zQpw7{{!CLeo}LqOfSUKln51GLRomJjxdJPC&z>gKx^NaZiEXZwB)@GPi9=HgJLe4t z0|~?3+*mIHijC^)D&EMYRMgbGskg6FIPr6Ni&r1jfpBdoh_FS?^j~)wkJMb*X8jTy zY0~fhPftMg2!^Ff#|9Y~B7%6aAEb17`$lrd)$(?;5AXR<(ia%_WA}Y?`+R0E+!jtb zT4b2UsCh9(>-y9mTO9ZUX3b_>Xj8;ixW7Puwl@rTWJKl)g5x)^@Lr);V}O&~5{kgZ z>YP=*m?-uj0p3ChvLf;+*r=Q)-+nb3nkYNg4ZGUgyWbU#!qx8os|$;cma?Ygz946y2| z{1J=-7k;jXJ!Py&dGsw&xxM6E%y1iVYKeeVoI>|CM&zPZw)O;ib~|1T$}y|&r1>V< zB=qH9QxUR?Vkq@hf{qHr#0M1O$&aCV`gb+Ei=h{5ZbBGY#iH{Ls&un>?N={`d=m$5 zZ+?}eeb`q5(xD#3dVTa4+dLTKcd?|c(KNQ7nz*u@W7oNT=lYLhg}J>Kie&8TF!%u` zx_WsLV$Xko0KIwF*ui8~6i1>r`-w%yh)VREdy8f~-}!G6&wb*tBW$`QJJHbRfBEY) z2MG3<%}Kbqdy}K!(sU6NIA}tf5l=3OfEAN@k?vYaMB!of9^(xb0^Z22Xh$;DV5m|f zvGH{S${6GdBb3SX@f^0J03255k`CZKEh=WNET%Er`0!WTHmGVY44`sKW9T+!>$Ive zJ!?6x;(XErb-JZ^m|VK330bEIKukQR#&+LXo@5e-?tDb+06Y0_aUPBFs>Kp}yGD9Fw@f4g$rz5=Rp%#aSS zcFdxk$~MkFBv2lh2yOxoM2CsW-kbfd;bv3Ez*yl!)}MSJZ7|<^Gt6zAZ^-&@^`&4* zc+owWj4VF{(8bBv zhiBd@qdfa}eL=+JLpK0$>9PB3!AO9h1!7@extk!|-;>tyQSNtramS#H4nQ^^)XNxj$G7rkqjzD9PyPvm!<4y)Po?#zE|^ zNov67&!VEHGFi(rQ8PC(JL9idvpq2{S!lHjzlTTNZc(*S8!3Ut9xp*rhbm(0@DKUa zpFc?_I@;7q6;I;AN(nBUjJ)E`o3Di*bDUq}PktHHDlhajk{IGuHy5@lw&y^M zTjwaBu;RLV5Jo~m(uCFCYn^on6=w+5r=q^owuj!jDO>|d6IU(4-(p1ebXzr_J6a64 zH+uJQgL<>|12_OAP%)Yh`c^@#&mSJ^)-@_H#PAXXMm-x!b50k*do z($c*8)3WKB<+BQXEVMgD9osqLjKv39!3WePQaAi`o>$aCoyp-1S0z4jPFeMbHJZbb zuJb);z(#waxxTch-{!QFw<$-8g3LRza;8_V4(DFH&$?VMWvQ4f8ghMt+R`JoNO&|M z^anY-tSr|8YL$i|Ut7B<_7M~o@q@v*Qim*FPApQ=n8=(WaZ<=#V(v>t!K^+L~kDlHtCo=BPg_QRiNjay`N8e{y}6mB=<@m0KXn_NB>#pP-u>O#O0hS?-FM zGjRCQG9=MMfyuz${Us3rHA%t|OJcKDg4{wB+W>Q~7?xc9;xVKyo=32u+ma+`l^h|%@xdI2bhdyn z)7h}_!x*+a#J{sRo`5#h_dd9VYnm`IXk)TpvYV~~y|Ds!@f|R zMUJCLsr9^z7ENOwDd(;Vj&d#H@KD@zt#;cDa*yjqZCi&=59bwzn;I>gyBQlL#{Rv(Mmxw26o zi)&!_GFKLFz{b-vUNea|kpmYW9lOO6N*~(j1Q4y9c$=UX^a)^RWWbgLaYuCsGaxFS z*dh-KZvg8PHHL9~&%}lZ0RTCPcGKSn*(;UMv#cSDtBtM4WYo#i zhnbnsntMzo%1UCTF3>4svkOR~G~eOD>dxcM`FbbS%?GLS^Yeqt(jlEchva$9;?fd3 zqgqw1xClQnMh6jMyOMd1YeJW4MruHBUjQ^4r$*2Kbn@MzZ!QroQX%qXT1a?#fw4e7 z(4Q-VXE>?yIjx|5kXf4neg7o=Ji`|`Ts`=EfGtGcz(B|@3ad^N3m-H%$sQL$ecz%V zX{f?ZS6bGG{`N#|e1mx%Sc=|g!AE#vE(-R*#&+OD0^NYdIO5db2-u*HhT%;)2e{-A z<`z&gn>L;z3?|2=(4hDGu2j3`G2DLv^rAJRQygsBo0amSDnS`m0l88r5-MZ74y`oq zGGEa4{Y3o~59UmzY}P2Up`f5Ted<%Qt??8ROmF0CJ`HCevWymrFc2Pntyv($3!QSc7su0m$K#xCeW~#=P(Gi)R*A=O{%nSFZ?*(Tn(%_5x=BkFL{3Wb&%60G@NzriYj}=q@o-!OxguOLa6=G zQfLwPF9llV9Z!&kS3aJdZ;8ZK4i7jJQp31XA$iY{_d)6{ME+~*)blM=noZPGn_SLnHH{wzxdSV%`=Bqf+dx-9v$t|T zOaZrxmU4inC*RTWv5J;fD7WpLYe^Svm++hM@jH0;j^5Skp1Ma%bMk~e)=KAnZJmR+ z=1R>InF9FQi_xw_k3KMdjyYhQ-SIXBqT!>jjov*NHW zGfbn*KJ+=azC>Mr@7%4*PvHA`l}^v#FPF0M4*&^C%))|pP-rM61;y4DYhyRU?E}1? z(K|Z1p(;^tfkmxX6Fx9!hjcGAk@YZRQ@89jW9d5=Yg4x*O%j6cSEi}AV@Ug_U9;5h zr@Y_X^Mf?GA7$*CbY+{0oRKeOCDSWKuDyMPqZ&*t_vByrb3e$Rmq+<8xhkWFKDOU} zp99f`6||HxF)$$Cmz#NfE-U4th)$h(B}(3WDRLvdsM9CZ1KuY*!*P*?bD& zJ=yl%e}4iV((d>4A+QTnra63A*I>E(e@LR?w+_~s^(zEW+*%|{Q?o(%yXv&K2}f<2 ze_Ge+LV<+d?%@BRDyIa1?~09=&U3Cd2jO1iSIk*)31}LX z&N6@oz%#DuZ;RZ5a-SEt?xl&Qr>D2mQMUfL=a!Uus2|(fOGo})ghjJV)R!ymO}x_A z4$8moJ(MUQ=2rq9v;2}I=i0I`)(KydTv7LRZM~Nh;a&TSQL&BS&Q)jd4uBQUw9Jv2 z-gkIE7RP8|EP$Xn{ragtTD?dzWYbd-+It3uhSx^#+GsR0w=Wu04|;M$e?I>!g9<eC2JyM7=(g8`|NWPT~ntk%6(+`~7z zI;=QZQ_0#oZi|Iq@olR61nebnL;gIN%|A@RSN0n8r7ERJ=Xsqr2R$HrPE}mY!5hz7 zaqS&{*n{7Bj^*_Yu$<41UsQTvK`c$8-Vq?kKP0pgrGi&4w|57r)Z5G)M|n`Y9oIA* z`1)JxrFOHHcVOMUxhyr!9k3=wZbx31O6N_UDZ4LEu7|Sjkzvs#) z8Y#Iz{15T`QKI`Ttq%j9?sF97jfdy8yp8FUDn$-Dt!ettj| zR4t0&)-TWN3je1PE?@;=gA4L8ptQpW0y7olKjQ>JQNFwRgRXq{S4O}=;UMAME?=K! zW~ul&wHA5w>j_7eG?&0ixM?shNYqA&f8V>}Bw4~x$!O~2VHFrB&b%{S4S6%1yaRdE zc%VU0>UH!>XWPBci*qS%(__%DDnIeno2Kn%Am||o-H*59eRB5cy&Wz5 z#U;4`=56ZcTk^7&!7J=ckEb@}*J|B`o1+iTMK-@;-U6GnzX&N5FtxHU-E7$!&c+J5Y*AR) zbZjWl@!BYThmUH)6`t;$*Kcm8SvH|PpejBTY(NS+C_tMCDs&n_93O;@;QYPtFI{m~ zF#h4UAbB+vN5PP9%baZ3&ogJ^wD0V(MBi(p%2Q{D!CKLGE`X#^jQPCmK`u@{|31_L<~>g^H=70d>mafDK;iTeu`c%( zm^%l7eRL)BRX;tmExJjZ5De z&E)&`aC(Tbw6O6ln$$Vlh~E`|c)oS~X#Z(A+@fCROC}*V2I<+T?esAR&ackePY92# zMAU`OMiG9*SR{`<>Ky$0+8+ov?SuN!k2*x@8ejbS~xxiWp*k3-ttxD$(syk-a5$ z?P{|@*Y@i+mEZc8`>Cm^ktbf}s<;B6zq=ZI+Q#A?WCvF_ua*qVsUCpRK%L7}a|thN zYRDyP8HgN)^pguOiH|LJd!`69&Bs7gWRkya$ReSOW}W>~Q;=j4O~CNd?sQ6Qy*T`k zDg6t)D5%fr-4+6%z+lB`G8E{@DsbdDD{Ap;T1&;$*vGVrdci2NUPMUenenm?9S8=S z8j2j|G9u~X?A5=y2nZonOIpr!=I-%O2HaP%mI|EHW-AlHQJ4^{%5)d&8W9%?Oc3YJ z56O|Um-@3=Zfl!s*h<*WQ{rMsS}Y-2+}YQvQHOI9++jJF=e^HG`yo!y?i7^An>6od zoT4=PtEd=Z`SsocM}N*^mMdBTDJZL4ggZ%zPV~^A``;^H07Ky3hlq70C^1uw(0+Nt zzy0Ra?S8Z1iNCBLO@>O&vCrzvN%DuQvtsA^l|pdvqmv_vm)rA2HT3Rm=>X|dCJzlQ zi3$!jI?uK8JQ(u5Tuy!PrqY$5hD@-+N-TRM$;hvB(W!h#h3~{hmw{R3m({lH4{;(U zKa;9kWrk>M!055>3dfWPSKd+hx+tXO)#>cs>c0AGEJ@Jku}(YlY!3lrr-iT7UzE9& zjZ{$xP{TC7CF&fJ=c+fV5u)bd_&9Ik{m}BWp0|~ylY-V5{W!@ZBPw#g5jd-bN^lk~ zP+b{6KrR1EVV?u)sC4}3U(R^${IOh?upb5iL3nB^A+WQ*zrE2Fh%e}FR}}U=Q&%9K z>LyIgrq7Mb==SS)Q|xz8m(Sa~otLRv;6VQ$80naKg~-F|EcJ<(^#Q)t zqeBf5L{mD_r9rBo2{^1gO-4;4>QX^HwKiU7wH}IaZh3N%e`z>$6=D^Mo01iw^5Q^r zB~=FAr_)0Jq_G`{84h1ibhxs3GhF&nOOJ#s-~@VzQ2D1qO!t+P_S72>s53obJ5L! zglUv8I9TLdTJHRD#&li9)+eaO7C)j_|(*^jd_HuzSmYWSZ7D#qG z72SFD>r*R4LJSZ($EJdQ>QdE?vg=;mKPy$r5{52xWYxAk#vmXKwJ{)YPx+gEOuAH! zn(vV-vu?#kCO{Ly`y%v&E>5yo5Z-QY#8U4ne^4p>F+c$^Eu_>kXx;JQlPPfv^C=Mi zQaSy_x2&QIAs&jR6t#B`0tLgsj;hNLJV+nhMJ|mOk03!oT^1n;C*PrnsVt7bl*S{} z#z^zovF&cH2rNpI&~@m#bvM8!bk=fiou7}t^lc>O==^9+#5z((8QI?YGM>lzhSM1?rqm#3(M?yK4f#VMBJ^*+6&)Od-(-sC## z+Ycnko#~`^wIySTfZv{7m_f$QZ_8CXD{m93uC;ls!p<=MFPts2Pv?JB0B6l4V^M_c zL^-Fc;s6jFlocW3=osTx>qEw0qkI>1aXzIt87#Pxw^x+i)r9!e)Ckl581Uew?CB~N z|I&xfZ=2}I7>yQIz@x03JC6G?ly(#w)<+Qg{^QR+T@(!3E;|lU^1=ybikX6}B=~E> z?xyzkdlaIdpHT?8KX|v10IL+@Dk`dB0!4_T{p)XumDV8r-%0MA(2?eM=b|KKGDAyg z@lThte6Jf8`NQH>JtZ>e6v5HCWQCxDlqrV%4@-{G3t{#a;wdVAr`VJRa~<^H|Dvs$Ld;i>nh%|hh;e#oLSdf#Dh_di~*Nu%1l(6hQ@TNC?w zLS<~!&^)vtzN+h3mFINelDL`rMIqX=))pygjU}PEr<3Ofe!vI zgYvJh3oTs6#e@?l2Yjo?Y1ceSkCtm7-MR`2awEUFbtJGqINzN-yHHKgjA*?ztoutu z*P|dVeKuaGOFu@(7al1%H>_B?#~P!h6{Si7f$knD%f)Q~8-_ocjMv^mB|NV|L+wHs zOWYh}k86jq=_uZ2lEqF8v?xXJufgqJ67kiy7AKxgoFQ?__+6a}Scz!}>L_BqR8GIx zMSWGFt9W1roa(7?Twi$Zz;(ZVeb1#!Bo#q(vtbyDA(a_{fQyCQkdT~P;AV|9AKOPe zKodo=$I`Wc-;?{d0^Xh{o(^bH)mVJcuJ)ZQ?q)N=tE%T4?GW=3FZ%rPD>v1r`ugS% z98Dk2Gu#u+>6z2f{Y`K7NwbRelD})KExHe2lP4PqBx$`!3Ff(7RjBnY*_+47nN%7V zrLJGG4ooonOQ0rp*8p$^L{1+!p&x#9m}Pg|L*aswd7@p) z=;O10k$#eB$A4ujtWr^C9oRHXPjPtLY0lEBhOO%?WO+X1{d;1^rGg>JHOf^}nhg*f z$cREQZkx%};JrG&y=J=6VD)~6RZm2cHVKMQ&1o&c&M`1Z%8XDIb1W85{v3{|1sEAv z&77UN(H}Q7p%>?sqfNd%<}k6MAI+$z3w?w60{R?}fc^LMPGsQ`#OAQVM~96B>dco* zsPs5D1c|<1y?MMo46Nobgx`V>4zzB<&rF+ZL}@xDwV8)&U4JVsrc?6r^%Z?PsE;_N zhP%;hQRr`Yz`hPF8h7J-+7(S=1v(^6UV21ddg##J&_@_GH*$Q1%7J5khhUsd40-eD zi0^nW`iGstPnO*CHt*@hYm+BBNv;;wjNg?oGrowA&&Q$ibl7^VTwmw84ls#laok(* z>!QH!d58#L?9H4BUM@0S%+P-!AL#N`XSixPuzcfgmd!*h$I^fMUk0MP0+F;zXe#nl z6U6*bNRaP^@A=ouH3JWVMxp?c_rsDDl$1i_+}zyv)W1np-Cz2e-WQp6c}WUPICPQ| z`pDSW{#cP$1d!)h)4pdolxNz+yA1H4pgz4{%-ZG1nsL$s^M|?Yk6mhk1HOb$X7@j7 z35Csa%e**bk?;?2v(ZNZEdpFKnv{R!=PepO9+iNkpe!GuGkws)Z_u|%>aae#QjB2V zfq%1hl9q;;ytu3oPP}izbZ?V>p^#23xc(!3fr0e*c7AquhnQ?sWfCFRd#UTxbrCTf z7_~q0R6&2M$n5h_!Z&I>?+wpHmF66=K(wo8VOyYQ(?mj{49F=5P~yLmhee-+*oNNN zdQ1yuJ-X^KQhx|1(<;po@+V^d{hJIM_T7o6I$Y%}NmbtH{6CC+S6CE5)9x%e2NB6h z1te!sa!?Tz2_lGsfJ%@oNQNCmlA<6<5RfR6S&^J}2?7$7BpFgkzE>C+!mIcXAEg+g?O-ql8Fo5H=`?9IPbQNTY4D4*Z3^!-Dtdbs zI*P4x9<`^h<}xOEb#+`7IGwmCr^mkMzO_wHD-Zm0x3}2xRp6hpm7j>{gcl2?sM^E> zsAj=v!9(f+qfjXK7VBjQnHDnuN`Pko1*upPH?1t-akMcWz2$fRNiXcH11eo3x@SnT zz9I|kS`!{!Fmd>N0lYKHX5@13=qHSnM$kmqu@H9Q27QScrx`8%rz>RB7ccTB$nfru z#x40G4<;3ybibNisyF0ITwc_=L&YBPDts2v0FBBkT4tk>FdwBgqlXW>>$b9WBKwQY zrJywbw>ep+qPDW1AbALHi)4JdG4`>Z((8xE%w z_L)HSG0>8x<55mDpN6VRW`C<}yZk}lM~psg4Wov@D<+Ut@AQvDlEyx@{1$PwNu0l# zZQJ>HHrO@IzOG^8+U{0E2FFjF>$<9{**Y9YH&Y9qwkS-SvyBk!d}Mz@45$Jj0%XOs z&M?hHXl}VVytFbM@T=I+;9{KwHN4^biRq>XUJgZt;kU#?Z;8HYn|1uI#x(U@d3Z&Y zq!hgbx*BTWD+7*F73%ZtzB55N`TCbb#Z5cv4OB^@! z3c4r@T}dMj_2^#zcJzu804Oz1$V8K9-U{byarRi9gMFn^uah0v|@%=1CI{1s-VHQtmS;aC0c6)>yv zC*ceLp>a5WJe;ZI3>m7TrmIFOA+vqeZy6fqSG%L{mNjfC({W#AI)6hzR`wjk(Wd;p zSC74i?_Uvh!g2N2xLf0J`+beWw#9m1d-M$k?Uq?P?V%7)HLuv*Fc~$r1ssqP5oz(m z@I5jz>BOh6Xt{X0UB7BT3Kb;P-6XxobZ{-xv%qdIq;n1Shg57Rr1Ne=PlK04df~V8 zq*>p8dCIz5rV{$zrcP}%=FlO_XtgwIu|U?KWgrD$D$CL9W3J(ncYSTV~-{HCTXor;dH^D19+LncJ+zgtRLj$=Sgrvu?e=iFP!T<;q=Ayqj_qzOP zr-_Qs20s*S$$HKyZ*WOX4If`Cv#Vun%#1zWj!h6YB=HEoAe2BoS?xN1BU3@+uU$|o zzm|p{R?I;4Yao*&@0@;5r&8{FheAP0C4Xu|AY^^aHE8(KJ=^RHu3(QK;HRJws(y@x zButlto!o}wk)oA#|MmH$xJ$I?$0(#Qpehe{iqvhQ)IkNm{_srpJDc>+%jZY{Gwmy% z?sQBdw7wm}{4RQI*nAm)su9!Nk+TLGDG^?NZk!BryR^?!7(z$o@9632y}y`siS>f zKPS-PxKPD#ele9#oqgxIJh`%9plvR!fhy5}?xMF11ayCb;C9ng=RTbO+;u~sV0fJw zUCIT_BnO`c+>EH(Ls=gf@=)v#=e!E<;=RLlDp!gb0yT)a_DKa9A3)ouD7S zl@8MsNzlIN6Ot3+vLAjYJX!yk4E8ES(=u7kmG!mpxLUh8J-ZPV|6fPN+km<6d72RY z>~Ex0mf9{L??GXDdb;B9>VBWbXmuq%PM3F}ay7*D@)&lq#$6avn!1p;&Upxv5Ea$- z_C91qGkUet`o^v2uEqViL~%oqjl!B+JZpf7`K>T|{O9V4@6quYdJojvAYa=xk_T@c znD?AAjs3{lkiQky?#^;Gc_$BTPbxYit3~Km0i#bWc3Z9BeVNWs-s?CTgu!0@z73&Q zFq^5@HboWtZ_mLXAhE}ICX|qu4GR8G$OyVq`nacpm_iW3ppJ`|jWd~6vXZ1)SV938e0I{R$9rK^h zAt9O$`34jR72EL>>HeENs3Dc~Qde(B&xV+R3~V(k=smAfqj1PXCEj|7K0k|PTX|RT zDKjed0P(@Y06DfAwSMPd8YX8@?o@6kerKh}tr=A+|pZJcwyY#Q5 zntTxXs({P9UV>-)$@W0f_1mN8l9#0{iKWG99(Y>I)gQ{pV@n5Y>J#?$?*8#Rj(2ZT z_>bWW0thE}y|+kSTk=_diD>vvJy)^bDZlu>X z%2;pQWLx3N-mb$mbSe4HqvCU3mB4m}4~O>@!d?~WdQtp92QvL!H>@RuuV?1ft#Hxu zQQYZg%s?tlzgv&GKAU=~{B^nDE-RjljFeLxX-$}K&1Bqc{bKtROr2c(T;xyGfXl(d;b1%joTe{%DL z9)RA|e-4GAxzccRs3m~V*xZ&y#7rAMJn>6#^}j)jk+y-hxq~KKdPfHr__CeS_5aBw zpgf}mJR?T?I7fKy+Ve5?BY!+Zi)<$8udepIyx6+;d7UBHH}EBF<4d~+x|IrNpLhtN zFi3s${}Y4~v}&u1!C?Z|1C#Uf^E-b%2>0sYe;AFB9 z_B;*&G{J6Py$4O=0;6602BVs!7q4Y`Zn{%4*%jYx`t3KWU3V3E3;os0MT`f zatI0QE)T-qj}^GYwlq}Qc~b_&LeHhK%+I~s!R?W}dGW$kF#`e@A#C>l6{0Dt!i5kn zIYlEy@6hM^D6#(hit1U#Ns;4+v*~_B%0Ez}17Xi;nx=kR*AfsV$7se9*nv!FBQxEv zB_pdKHrT79{nfXNuKI@un1nvEgH!Z%Yr5+y0RSM{E@&k5Iw|(Ai)HNKsJ0al3bSr;$wm+zQ{oc2$dd30#Tp+WjB+YGS$Zw%rF^Gy91px6y z&_N(pFGSx0PZ=&~y!o{q zmb}0Aga_E-9wR4q_wrlHw*{u9W+bpjiO6VL?>srIVv{5l%Hj19dtLAHe%YHx;fch0 z=8fP|=IPft-~~W35Fag+lgYW|1a6M)4(!++nl)?56jUf1+f~drw#CTKUB5=3n0P)H zXDLHxBJx)J@T#-7Ci;*ww7^*<@k_NDc7lJM@)ResJgr#(RhGU6ZP)OP_b~!1)~Q$t&VFbi ze$a^b(rAFMRLn|Wqq;-)`hA45=`{{hrchbt_p+bPFSB}@M&%XAMtgj1dF7eFB5Dz6 zh{9v*|B+6P|6K}gG~lZNcXBNy?OORYCKo@2Sx8?|MXe(PM1F<+$lE2eT=Lplzz8jB zI5xn5rMoeaM{TFq25LrN*mGI4;;#}sH7{SvYLm#yeV29VSI87Y!+4bx8!OX6-N5lA zS>`!KdSC}i5%}X~Z&SWO;Q5(*c*`PC&Qk-)*~vHc?xn>QAMnB9iq@BJ#^-;W&pLmP zX+WONeug-%vXA*%bU*~%>IDsyXcFB@E^2F8JiH!PPQKv4YHIWn&_%^Ocxl z&YIdFzwPCwy|)T_{cb8OdwTWHGRaK=nVH}5nYaaE)I);ejxy;Z+n?K-SLqObRE*T4 zB2bd+$~~c=E7gRi3JzbIK4DH*!yLI8Q7*~6ZCDagqCXw6ah~(e zb|9|`8pCtjAEVQS6ZGfiPx+mp+Cm|j*zy}lQ={{-hYGph=y<8w{QYz>=_8H?bAz;C zXHQsB1?$kh`r@(@g|6;Kn;oU@Q_Shm2jAmS_V%0sK&6*6V(%tJ)8}k=RU;QAfdda3 z?c2E_;*XkngfvdN4B=Hc!Y)Mo>`BxUhi0)i#YEAnmPPYCViT8!J&;9Bt#jC;%Ol37 z41dP~2!Wl8DXQ8I0lo33wpEk1c0La_ea6^tw_Yk$!6DrVx`4XNmFZoTzRoo&-H%p% z8TEAt#?af5fXp(Swnp;KtvpNKLPJq7^3E^*&dFzhhyDSnulucjUeYyQh-Uln24 z`~np4c>a4IXhy)Hq z^KVp)U##2ibw}LUCU*4|Ji;mhn#T)Z@HaUjx@?Feyci!$lLJ`zD}PbVc}T0z{p+f< zqKb5h`(>dc@y;XKH?`S)*C0W25xot}lmwYj36lJP_@bXT`t#?ZUO`c@t~MgW@j3O4 zs_C$g5jXj1`rB{jBFh-4>rE3!KfjVx<-YIzx$&IRnTYHauduyl)T(+P19BXf$0=Xo zfd53qWFp{ucgn_=X|fZ9_$A|0-zm?hCy%uk#<@#>+$0kQiGqueacEqv}*4+vV zBOUYaVJ*!z6|G}w*#9EN^?F@+xe>&{I?+$Kh@~!6cD=`|l7#9w)H()F(Z6IQRvFrP zvYEJkcT-fH+jP_>Vw^hyTw3CluJZV%^y1rOn@y33PSBn6@pFMsTT`-mc(IrNBhYwc z?PCYMza*dIP*TZ}IIE$)HcCSQHOj9ut*a(_YC&0*D%-?>b;mK7`B>%dDOGE})g17o zg4Dd7-L}T-=R2v$Uko0O^qCYwQ9q$UOt6;F&>{=1 zD&+7fKJbb?(Ol)Y9&S6Na5;9wMpRI-!{%vB_i|z8(-$u0CB>Y|t1|RLY9mX6?W7$} z6)jGS?q*{yX5g5MB6P*NDvps&mhw(^p}p~&1ktW7s)u&Yay^D{{>&JGSQTn~S zh*KbY*M<{9?>cD>*OUm3k5&w~Z!pFf^$<_7EDe7)G)@dR&Pm=QzD5w8u+$fg6H2+(}v>n$XU|DfNm?;eVR0zl@Y5R+ya-- z(QBO57&`k67dDYv7^ca`3=2-7$4YZu1lwAttM%G@J1#xWdnAZ|@&Ou4#>X037;ToE zS3=h(PCi^xM^A1Q38Pdu)7s*zTV#m$R83OEL@kF6)2vbxomhJXE63Bl=t|8x8@0j7 z65h#lXc86hIjsHA5LuJYI6=PUI@}s;6{EV_uvT1%)(0Um%EURH zQ0L6wI$hMD&r^Zt8-CiEEs#3O+y10J2r_vyW|Es&h4Icr&RqKuQyVhzTJ6TM9+x#G z*L<^{G|s(Z9Owu#A4nP9(1~^Zt+KE^2)EYR(a5$StqcosW+11nnQK~U*?`RHtHIr2 z34t`UlrT;2U^VQ~7CkTqes>za8@ zoi+cCz{`yeYZ5Gv$m9%rsKZRkcF3>or^gkBf#q*ae?9an_5JpuukkZu^MZNDHpo!0 zAO7VzO}G_$?xC8Z#OC=BB)z>CJ7OMK@vgrBI83^_)9!))gtuqAC7&&YIb?ssxih@K zCZ*~oykTne%VktO9C%RU#$*30brHK-w-pQGa>XAPlG9UYBVp-EN zAsy`p9U3T67=W|0*EnmiHr#Lq95^;41^#{tq=u_nT+{;=Plj^$)tp`+4Xf;d$5y-b zUpg~zdl=GsCN(W4GA%N>^^sCipeEbTR?u{3 zVEwrLc9$3e*#T?D>GB>ZAK$3OV7c78&SATxVlzdv$e^}nNoSP=s=)i?O-=-Z0_A%Y z!1PxVnyW=wID8l{bxzxMcwX6RZM>Prn=M*$BZ!yK9i2c_OhUd&xS?T~ttnOb-HS$7 zLe4>LUFWJ)3iDas(PJ{1lM8Y4+w4h;*4LNjR~WAP?PcLI{qCeDNbvUUvjGX^k8*ou z4ovS%BrBGr8?Q~`I`zmtJTNsGEM)2i zDYdjzXwtP37}GVKuZpvONUf(ocb_jD-r`gqV!>alw{*;pKO-9=pGrqqaT5;%Jcd%x zB`>Q_3VuBPH=-(?$ zdSy4*OQ=2M1T<@B6jEtk3t7Ykz%$Q&qm5C4hC_iA3Qq7BgeV^qyZwdmIk3V)1?X!r z70&BwlQS-n=uMN{YU`O@i)p%uo#)cd!H;PKA34O~!9C$K!>SAM5mo%nCOhJ}H}e%W z=j&bxteIu&Jo3T9+%7%%jQ1Q#5lyGGyX#VsyDOoQq;PtS3hiI_f-{1I-|Fihgg8HT z6tRX0QeBftsk(!)->$p!Pq9u9qgnj|o{LAXGrwo)yqmkG%`*ZYlPka)0tyOt8{aFz zxT_B_v`1S~KfaW7eTE7U{Z30qrwDtuza9BbK4uQ+a6KVVF5kw69vsw=pX41(G-*Y?qmDMUMw4!ip zSkiFD%#a|M=_U=?KaC}}sgzRHvB6CGD48)MV)VPVfc)&dh`62n>$<4yqKB{FUV9`G zBFe5wZ|{oqxc11Q%cxcC%c4lf?}^ha#1gl<#N$X6jTD|8XUzj~KVEel_{CoK-D4YF zL>ygt@;Fnr^JnFvSX$j$#UJH1gD|>&hYOcnrk>Yyu23zQk4oJ%wHMm=?oqBcirYEq zP3)N-*-fIl7PPR9B?R{I?5Zdkx}hH84JAdNIAQ&NB0iwq+G^EzgXt&@+dOvUQx&LK zB-`8)nyACB)=ULBSD4Jofv$IMS{+5bV)~2Gbdq-7KS?|1x+;$R9eSKoNb$`Sc4Qy% zfk{mJB6~_Tb*d4q{Cm2BxqcHye$Ef`;Kh^SeO){IdR|$zHp8;?O{BE_0~m%4_~m=U8O$jt<-_z`83y=b@La-KH{~0b@7Oib8t*rxk~b_}_`+7_cZ+2#elMdj*Ov;^`<6E~ge}oVR>RATe8FD7 zZ6b`fXewJue(@ELf^4ppE8yUT4P>gdyB^4r_z-$HEi zO;>#+e@O0X4oGy(16m(%W!R9ib=x?E{NklhsmN{rkzL0ty?tkQ{}#_{+}cU5tlTHZ z74a0xFNl}8m#t>Xs9^8Br^L`8A%7}YrzPo)JmDL1)w9{4`4`hT)Mr8%wRz5y&c33P zrzfbo^GEymCF6Qx5b7keWe?jkRTW1a+b{_4n@4;>iDl8#O2Ahd)Ne^dY3o%{o2BuD zG_i-2%mzN#&^mh3?#i*#tIqnHE2L9O?I*)%%!g7QW?P?M-`^n;FpKvB8EpF#XMqou zSHXv$EFUw2)sF@{UCs5)h}xuSdyCgMf_mrxD!Fh{K$6@eNY2B1jpSfBo%U*2bpwg$ zkJ{IKb&RV&5x$&f9t_#tn$yj1!~s|?Z!|`f~KHCifx75X!YW{V%Ir>dJ}NLLPq@Q zIQ@&0`@(Q-gUxG+Y&^#k+wJq$INl5VMCA%!&SW`T<;2Yf>-T+kEYi;#%P{62DJd(; zf9{wgjZGBsKbJD-xPGzRp^pAWT3=O@7l8Rps?YTJ3nFZuOJms|vFt7zS6bl#o^F}{ za092-sx~tjn=YPuV^s0fEM=y{jFk~tHXA7Er~+@?@IkRZPEE%~nitH&12&|$H^${& z2KQxTuP^$%dC}scrT3ZIjKW1FfJV?;C~-t7s}c!g>%B1E7^nD%0|>kMz9qUd(ypZF zXZP6oPxIbhTVjuxdPgkcGsgq6=)PJW@PRul6!Zj(fgOmcXSjJ(Lt1hqmj<{uN?w*$ zZF8J3u6#SfgP~wbSZKOItaK=LAe-h2vueuTUTtX5k_@Hk0eOY?&<)F zd1_bd-?$9Z2- zxF@znq`86N>UbjP(>&OF_@E+tIRJ<< zllgbxS(iV1ryMukMc(Q{lx0G;(2DZZJD4A5pobg}spS%S7B(ST^F4319T% zCTz>p14`g3NT36nUCJncKY!SR32=wnTw&Rr%qblDhsUbQItQHPQpPFbLBb>cPU>4o zBjvDw2t&ehvlO46($rr4#y)iRO3oL+pm5dibaZ4fW^VuT7Z7IcWRGs+VUS-s{7Id&2nL)H%4~NxwE~PBctL; zp7CsB7CVE?G)ono*F$xKY+I8E)o)zfK`Cfo-Db;ls7Gx+Ju~qKEHJaayb5j0o$lvz zk%P?I?zKucne#8%OxOfVDe>8K$;2uDQFs{thbn`jVub1nc+RADe=Rx)LpFmIVFQs( z=jOMAC_B^)RiG5VsomOnVeV00Ddi(tPmrdBWJ@k&qNH@6v55iTu|qOwUx$M zzf}){XPL0q5I@{>Smx%|KJ-&Mn$6CA@#5WztjQE1IPj{h!h?(v*MUsSQJLt$fM;x7_a{3&S z2&pGk6iOT%K%?#uSEfhYA4~A~-+py&Un8%>m;8@CDf>Q)6Oj4H>PCGG>gw4Fkox}E z?mZ-KOl@+{x_Ok=H1|ptZ^suPFQ(>6_f$gUKHm9 zGB&A9W;xE_D*brM{!UQ_D-6O}g_G0L*1hHv3{`*Q$ho%Hlvt*ZTBD_WS2Tnn(Ttw0 zWhjV^e0ryR{h#;Mz5laUq@>+qPhO?M@o5E5CP(!^AgHvI+b~jnGTQ!`ua{v(VMZy0 zq&cUPu%Mo`e(4~}o%C_Q;_%(3D&-Z7hD)*ccGI&&#S8pmmR&sUr+8DF5Y*vr2~ls({&FWSfZoSW}%x2dE%LK z7FE6D&tnwI^qNHI%n@Yz94;Ck!3J6`JR5vt4gFt~P$wPzH<~nrlUzG<%vyRtM7o-->tlq$+t#LF~rGrj9?b5(vl zmm`--kO0=T4qYLWJNV5P6oBIwrFpG(zU6djjN!>zyq=p~P|28VC+vY4`{F&^%3W0{ zzR%K5k76_9Ynm2>LFv;sZhBxFosUqUPIA!Z%P+1xMIj@963fTE>>EBN(O5&?Mv0*( zNpYdbQ-Fyr`G-MwYOe?n;m?|e77)@>qCn$rRYoGZH=B0t0>Lq?Qq74pi zvJs4fvl(?=R3DjA^Y^^J;eW|&cDwH1$Vbt_`<7mpvHd*;Rg`AmIIxMqnc!2^lfx04 z{*THR+;5+EerOY)AqY50<|8ZS*I7Lvqe;#xM6In=|-EL@>X zId|mB={(5z+JdW}4`YI2^ED^lI5D_IAX!#O=qMbz!f{gH+VRy&?cz7|$twT43l)CW zg*8o9eY#3DZ@XC$bXfmQq8G}>cjfrAxV^=w<#2}eizXpYa7s{*|9%D0RYpSK$01+i zb|$agX$BnGizYbb`Uplrc%VJXGX2`$EFYF<%iuaq+KY){(sdH-=S&99@a=&GHsLHF z6;-H!k$L~ub@Et6iG0rpCP0_|L_9b^FGq`S6RNFc}WJLW4iP z0opII+dI2y-m2xrJXf(9lSu37FWBtgd8qg>@}kQA>}~iSWkseD+w$_ZT`X8#It?z| z-aX->BZQDRb{Ndp;tU$b+j@9ge!Cynx!%r{<|J1+s*CuN#~p*TAG})AdGcb?t=gmO z62^M#@w?B^A){G!K5l=gK0-8yNi!}sFu*0Q&w`T=x<@hr7qDgK>Wz_t~vDzE=R3kiL;RXI^L z2vez`6!O%-^9pcPJ;=SbakCpC>@u}&NAhH#Sk3S|hvoguhyXmech8Xn11UED+niJbX#GxjrjOQ$6!*mYZ+ zS;KAeSI6Dj4hc(S7H?%8NWNH>qVfBi#Z zsdthdU}S+wg5Ld7##rK=t=E4;4?^vN0%u-oo?0VM9k?Op9j!(yyH6*!|tMhPCp)6a@vz@JZTmXlzw1adxl`ggxWcXGV-a$~0@ z&lAdI60dt6H`gfLDTDgMbgAxtw<3^yb7+{znTEZD)~$GOt0UkMj_9-wV3$%qikO54 zExK>~XGggD7;3$=9Mlj)=l|axACLc%JT%)-1ZCMp0$ z&?$43QXi?${L|7Sv*G4Vn^c$JX?1)O(v3z-2gNy0zSHTkI#yAkLzofqySL}APym;} zo?|herR;C#Fav~pbmhSoPMa3Ss6!pO#oU#Ry zC)k7Q({;2_x4J&w9_kjfXzsEM$&3(}%`0^a7JM=n2z$a8_*rc|`Iz(y=5M)Z@b^gc zgE#Y$fw0J?8ogD@kfh&=y)1rf?~9jyIq)r zarRZ`cFSKi^!NK>)*tZ!HVrO*_@=DNl<<3=t%QzRrFe_hz3li?-}@G0PnBX? zgim9#RfXP!%Zfee2e#fnGviJ8(fu^u(yg!v9^OHtI9nt?!d~V({jgHGqbaVJf{s1P z9qgurn&hgLXLWdc_aunBur+@W?@p^8L=sZxAs_wE`h@v0$Z3L$$ zJe{M?ccV(X@rS~K+>|L?T)CO4UZ=G40g6r1LSJXYg&ojGtqB$GfdUe^R$6@OU8J-t zCQqsof9rE3W9E~e{%ZYTK@DZ+%_g<07l1pIN6-rcsx|uFP9H5>xUEybr7!x-P+oeH z_tIfqyvvZ?XY$_1$_y%G@lVkJKHzcRm{YPWCi%{Ah2 z)86i2$6*awiY(~njAA)2yst$4nVGD+|G|kW!@)P{)ATp{FUiCoUaXGKn4_+A>Y6kCyiP_}h$9!{AslpV zX*HYOf5XH`#3Bbz&6V*PE5)J%GqV~JuZeIz0{ni`m7|?bu>~;j`=ub!S@Tm28)l~m zk3B7+=`eTa%{)J0@>Z;@k%LXrvN;a_$fgLEVYUi(Qcdp|ve~}*YG9&Z&BDgV4XtcI$;nq>$oFr|s)~DLVG%{Fq+d$H>GxaA zg5$9IP#WzNS>(;D&}ypaFxwH{V}e*xs%WPIGSHeg+9~G<`!)Skf&4&j{4kn)|3G z68yHd`~>o-PflvHG5({Xb;TJWmv9PAX|JMA3~P(tH=Y`k7iCDEUqdm`(srKwR6cNw z@eG%CF5qe6dTP18DGQhKqosX5)R$s)!8f}+l%DwHe3=_B39vHFP6|DhZT7yWX}(5- zUm}lD={)uKO08dnKoj3GZ-xRmMn|(03@Y2WMO$-W-_2WrUHnduzY(Xf6`Tt9uN-#!k?HCD&LO9Uq~} zZ+5xgm@m$9h*7F7$};gfoe5j$+d@dk)OnrnjS| z-x~(YE*(Pwl)9!sq#dK=16Z4q^&BrZrBE5U2Y0h;8U8L0Iu=sU_Sg0==pSWn50Eo9 zsEy=G!{j{6okxX^R-(b}ww+(eWv-Avn|sL>ay2r-B7j3>7IsPx zy0Xk{VC|v-RaQZ;@ySp;%hjWA%=bOQ2I8!h|3hRH?-E|}-SLSz`OdhEmL626gi z=N|1YGn;8joFHJyNI_I0BDAdg5K^dN2yNDq-oukwDd8Yi&~35XGILh7m;y#SIJ6mVh*@T%$3Pbxk4Ee zeSX0f`^Z4|^@(JCI9uabl~((QxhDr!g+z)9qWj{9rx>fBWunp6sPwizXrn>7i9}8X zXWJ8Do!tE@QmSj!lJ@ia@*cb(ic{$ zb>P%eEp`3qevSbxq3P4S6j)u`Se{ z=+O6zkj?MQS2}G|;+-Bm%y;#%rAvB7L7pupny%C?1!NTm;FJwR9bf03F{{`27^D>v>gwU#I% zZvT6jY#_-|F2tmHbz-5Zq<0ii2x~g}2kHb4+5=4~q%r4UUs1L<`y(#b#csFbCN7=b zY*qSB*8+-hbl=SD-CZ@g*i1L}P@*Qs>dK2=H6AMweu{lQlItF_PkP$KhTTZDn7U=5 zSL+mIdYfPc8M8joR*ZexpnprAur_R;XPQH$lY){KXGL;5d{^@DG`}2tEpeqrBN6_K z`MUYc%%OYly#{(n4B9&IZ(IV7#4qF%`5(>839pIUZH!eH=o@B zTMsrY?yT~Q=4B#jGx(K%F1o87_|ovNY4^b(sr}QMO9$MMvi_>SD>8*B)rPt5 zcw1AW2JhQgTNHdZ&tlm;SC z`^Z~Krp-6)nR6dBa_=%J_>)jpu!H{vE&OK?pt587N2ZHb;M*zZ!O{Eh5_FC}ZDd_w-cg%eW^hy_0(s%rFMD=Fp4UPqq|sHp78VxbO6FLv zi+)7T5WQ9RQKm)+36kvLO+LUlOm8;z{P*GX2bf+T=%eA0f;l%CmE z-QzX>W{{HSuK=9}PPuQ>oZ23tt`jo+y0u{PCOxx)BLk{*qurieGa39gAYe54D@+GB)yXw5&2<)*cQgM z?e!>bfe7d3U#0w(ra?VsY}!W4X@2i5T;R>nkWg-Hb@vKGhm?=W~rK zCAz9^tG+!|8|nJTEs{6yDDWI-X=e-d?p4fCOG>|^8W5eX45cb65Y_sYpPcT~eo($h zA9ugp(ao*t;IhW{9)91(_c+3(ZTnDI^5-1mm5_kJr)3P~uW!Gq6S+#d%YRWg2ou`8 z?lkmfI{s7@JngB`5@(tVTL>WH4;@*aQ8nY9Mjx5aF8{So`?3THnvAf5K-RT_Vo{g) zyIMO3jBStk6|@wM?y($3 zjX)^7D0YWb+gAJCQ!WY=Ws^x^ z>I04mBp&M(UgMQzygxr!#!5F0`+}ccC+VAFXWpmO0K&ng z>b5^glm?33^HlA1%(AENCed|UzG#i@$QlzsI+aOUh*v$5XVAFg4<0bygYe(e*@?d& zMwn5lm^Cmk=8Y*_MiuYL3sz+kkGR2W*1}Gwuui=S}g~$i%_!ImQ+31Kjw}yxUKMw)Ss!n2k%) z3M?I$1c_`OU)MuD7&a^=fcvhiWu0gnno>)}!_=HnP&J-6$JXXu8{YT*6(9uRvm{K~ z{A*tB9k4UXI!S58=Ng;bMr^OccR^`W3Qw)v{nFr5^VM6c<~3bQ%cp21MXcq~FVfq8 z34O0#2G)*Lq515sAM)p;D~S51;eEu$1}Q1v&ox4$^(H}V(YFe0JDFt!lmyX<$gbK# z06Ko6Ez#XquqRlLn-30XemhZ{%*r8BnfejP;qBNykS*|i9yd5$PYxK_%3gZpV7zhh zzywRmS#cJHXXEnWN|q=*a|?4FF)aI}M$=N)pQGYu@AXPu-`ZL2kqV;kUKp1Jgku>4cF1&?t4&8(KZxoGhKGc~`=EUFdXXh}M*Sn}=P2QS{hn&J1A|%Lt=U5k zf&vqdqNf-ym~L)EeNh7W#dkDIF6f6DW&~#RwX;8}yG(#=@53Kxrh;=XK?T&{Y=zh% z+Dr25AbfEqc)a=cxgnHr( z?Pnxg-Iv1sJ`B53in6kMMO3~kg5#md(*8rm?-bDRkn4}o15p%|^RRc1IORhX-8@cat%Cr}ntj?ynZ-$~IFF#2$ZKGS!HJLgmvh!{ zR%U&te;bo7 z!`Wb9MqWTsGehH!9||4((~#h{w%i5vy1OZvJE|NG?bzV(fv+$LfvgYu7X5QfG@uKX zM+zu zJB?qNx?irYAcRP^U1w^EY2h}e=#c;RuZrgE#+7;?NJYuPu7c z<-ELHApMC)m<0AVBkFQeCKP%*vpvbOuY6Xge)C_uljK#xswY=6$`;0u9AFER2cZET zs&J4g&l`BxL0)&e%$Df+ zV;Eo-6yNrE^6)|Os!FUwf3Ib2KYNwO|Ec4vqoVr0crT4~mq-etfGCoJfP|pZQc8*f zN_R6CkrJdk2UG;<4vC?Zl9WamkQlmaV1{`Yf8X`qUvI6Mv+mmKOx$zsIp_1)`?Gg$ z@d7=d-Y_7U=`Jn&-&b!hLC2)yA9y#w^?!lkf4ETbV*c2##%9I-_|-!>5@1K(nFO@- z4SCp0^Sx?GoC-L+yJwV@7Nf<{66hhB6~DePqoOye$i!F^ix*SdXinrR(fyv{kNMY} z|0SICfN|$a1XDhjXUO-LSylT#E}s0olWysZA{}HSnGg;sC?^=X9>FlG)ZXsecD;JtBC%gJ*F-_Wn1W;&pjq z9Ubzi)Wf%>%T+7tyg=rKw204qQppK=D~+6)jT}fdgFUb8MXfw(9BjxF8ORLons9pm zEhRMag|}X^{G)%0aX4nSk8_t@yY(*hkfnoy;y$3P@`G1SjtBr_5q9(xNQd|b!4L+( zDh9jBmtETzUyL_%br6&W)J>#`cYgV+#7jUBauM@%PCY`yhn$w%y3T|F;Jloj+h*9zF(+gAL=nnDb){Fc8G6L9tbuox$g1k{)n(2|^v zKb^}Q`jpNEkw#qU%uhdu#-QJS z4XxWq;5&)4^71l$cE(5n%7OGv@BUc9MzF2^gV~JkxvPM5U%BOp=M=V21!H1PwJFrW z!-ok_#vm42VHQU2ns}f?avfMoY+rLN($a1Dgc%G!O?lhOG*cm9iicB=TcoC)g5)dh5T@-B@o}(dEs9zVATJ_10oyHhta=`4wE*z$eYOSWuqs%c(k2-yh!r@X!@kT8!yjTIDJ_#r*qIqq)a#yWuGi~LO48X;I zpU~q-qEk6+{)3a(8QBGDhV7!cnalkKx|3X$GZ$kRS0#>GU~T-3=hDXGNu)Jgu+QiTxq}n zoGnE1sn`5E(2h`uD-sc-vKZ?xB_0&$5&!8v$ znvQ+{&X{^Tc5%o;JF%=Zq@0>rXx6f!Edt1_cbt%>NIx2UIPiu+1RH=Js5y!)X#E^_-B63%PLN z)!&i_AeZT%?S1lw#l<+*mx4bV2sjlby}|3n$;837N8VNL6D{^xR=;`*O{S)Y^w8#$ z>XfS<$EKO2jkNELTkrtrVz{BJCSC@LS6c`Rd%Lz9O?(%~qU3iAp9p|Gr}7mG?%S{5 zvLZzxMZAFK_}|~w4SAN%ls?36#Mm}}hm9-ElA84d z5wc(tgpl3hsTUVeCm6V|gyg-`Q&ak>jl#hSf2MNzdPJla@Ah`}v7AZkZjyu+Voi-f z#=oBKhE}qIyr04lnjB~Mijq=T%5_QV?>5KRdUNBnRw~X?WgQ)1HvYBO2ju9T+)t@{ zh~aiKcRH*ijIf-MU>b&58Lk8+0R{KpgKwU&ylW8%6?UKpa-0?{GfTE7emZ$lfo-~_ zLpOtq3{Lj*83JztMOTO{l30g+dXly7^C$t16IQ8TA$kI+GL{Y-MfS#9>ZShj#$n;* z0p~LUw=eL{oY5U&`M5C7h&?2(C9>JikSGsPSxF1kvuy84FosqtIOR$Q4>;y%Ia|M} zf+4Q*+%f0Rr;aXXe82IG+cI8o%fN=-EvArz@OGcFqdSI=*R!XeCN!-cY^gma(&d6B*j;1|!3$BX`jN<` zbWq^XJeu_I4JmUo*dvb9T}4Di{-n8Wa>ze{d6tVK(!eiWa{naRu!1DR*0~IyrlqMk zJvqd=D$ldnF*V=Z!{o0^>uqE}#-@vBy658gb^yS9cp3b^#%;9uwG#(^xvyA0sZolq zbG*3X9BdJnVRGO!i#c(PrV(<5{!2*)PI`bgNX79Qm<3L6Zv;Au6)z5qVuD6#qpKVR z)vberm3g32F1B`q#OstScfnV$=q+EJ^NNac3t&-$6PL80rshZCXPzzy1ntaeP_*;Z2Xc@D60(nC%AZKR2xe#F=>xC@VlG|utcVms2 zybS`YLWF{74AgbU?f!l{YYT$=iMFF-#W&|AG^EF zuK9#hxeOjOI9?<(xoM+)KyT1xPjhrU`=P_uTYXGYlB$kL6G2BP*1$8rt$6l)cZ~PZ z3E2ZYzXMih?ut?ee^R2r{70%EB~oiDqxAO}hk{4_;$nS8fSj*QCbzT5$4BtDe~E0h z^t_wNn7>QR{wksg?Sm%bHu`XRdv^#0_ZCoV%%K*1a+n9$cA8>P`E>7)T&bLH0lI67 zwkN^nm%WOH!Iz{4i)g5$xET)W_7nHdfYo9Nk~zQN9IC%5&wNL7qu^Nm+*kt0X&0lP zx*v&|fV1lll=xU?^vSOcu4#hS+NTd9^5@twk4B5b$D#gF9YrtzZ$(Yam@&!{`4BjF;<)N!Y5Iop#s zuO_TazA4YstM%c#cK~6j1(V#}2}A>?D-(Rxc{Xb*2gX&JX@L>(K;2mccoOV-FUHfW#4hwj-q2`$f*pQ>LB z8y?^KR&D>GOl3NPU#yxaaPece6}#eLoa>wEW4JT;NAEyJu(c2!$u3!g@h378mN&;U z=o>T)9NRx&wD|v+>Z>j;AFWF-p8Valyx&a6lL{rDKq_*?aU7=ie9ZeIL}{0{*0SqP z(-yvwn%0~4^Ut|?Hxz4pt5aFBXD6;3tBgZYN9MdFkpKCMCp6=u1P^Yfy{lXiFWQXfhZDREg7e=FhG+Z|hb9I&2NQ%R)VBJ6C2*3zW@mu`}PI6spSBT1y@1Y&9O zwmu@1cHQp2AA=~Ahd9Po7B_XjFI5tDzrJkbK8pr7Hs{I?wWcI-`tHRWvb7r&@bjf? zDjJZjM71N0A5x%bsc0(V4|yM}XGk`2g6|v$Nsk=L*IX zV8JQ|_3TjO4&=fXl1PLc&%6H+qhyCVuLDEbQ6Um{4UW<9%cm%wlRV0(xytmscZ}-N z>m7@a7MW91i*_cJot!VqAg)Trf>y4+*lag_qR{vGRf$qp$bgp8@`|B1iAVR(OS_U$ zkUlO-<0)xe$u$NcC`B!NTQO`UknA##=o>Y-pMd;LsZfi~&W4n8ue?mhH#j-jOE7)c zP#4h^Dfg@WqVM@nqsr#%dRP_5tljcvNu@O9D#XR`11(eV{-*{7_q{m5FoJ@%Vyi1U z_o3rM%G3%Uz;N^FRZyGl7om{#@^NoPir%GTNk%Di02;Ou5dy$2K#4BUky9ZnVNgZq z(|t(Rb(tu+BX^-`sBlG5c$6&X;&^QU@1IigOVCOnow7_?GEIAcbM?s1k>>w&oXRs$ z1mO045Yq0XlvLe`@n8cW3cKn0{iemgtUXjN@We!nREZyC!a%6Ok1{MGb$-)3>JRt- z1egO4-4s4V;zLoV@|p@e0YIa6V1&ml;gY!pt#aw%@!cjP)bBs0cvr`$`!BaoJB})V z@y7os;X`+Z|3VeuLjiRIgXC!qZN~pB4{0J48MQyn#3d#DfUxbF>toS`#KcY@r?^-> z>6He|1FP&@0mJ$d1GTeG;f~a-CwBmgm0xLxzSpOTvWT?YWhyHxStgst8Hp51-)gox zML@1)#|gGP?HMvon0F%8!%LwtA@jyWnavg@nEY<@>gEuQ>_d0n({&ri?0e2k?wAVb zhou+#@5K_|3keDNbkf7g4&(7A71JKblulSI$|GE$evJP{Z(L{PyRdBGDR~U0ZR_Mp zovzDrm#X~seQZjcq*uC*kx_ViyJAzrZ}khV1NydyszqrGiXV=-df2s}ZCjZ@9}jg0 zZ*oLIQ^(TY053h~=MsF9uH9|;@JHz1ds$<{G05yNLkUFth1ikStS71Mnl}p)rAowl3EcjX&|WNWwalrh9Q5o0j&LVea%Oo4bPdK%T%> z)qtswD3*M_^gOBT`>iXSu;7iaUoF6~*vu*Er;=B#%Df@5HzM}Sm+LFi%t@HG#T(%R zBim%F5V0GcsAaa%Y+u}{Ya4yq(IZay6e6+*CNi?U!_h2(;>R55YaJCe@Gv-80p2`EQTffVQ0D>D-2%IMceQlW9+){2yh%f~e(?Hygn}C9GyM z*0z@Ab7o<)=1YAms0InS-f(ijx3)C0dU}ZFJ13Ac@e%)3F-72B1gcDpERwtI2FPiSpp5i%>e`osESV>s-*!>v6@D_wF&W`1jbnQV>+T;x5H(Ze!$H)y^FQMD z192Yd|Hos-+kY3WIfa?{sfsRcjo90uM{YpOC#*c~7?*YsQ?Q^K5 zk@#XGrAcXSqf?OcapeupClQxep=@+^OM6E zlek)&lKh}=i6Zx7#R?`q0&(xBJ$qM3xI@Z_A+#u~tHma;91nce(7S{nzU-B^J`Tw{ zQ8g6dTd(b=_fPgp1HTKzPf&&%1|}&N<8OX?0YexOO{%>2H+%owPRQ|tr%*Kzl3x^; zJVX$}7!3z9PhuKiT@|t=n;$CFUYyOU##b+nOUcx&o;Tb3jOqAK3sUA%thR;xozc4B zeR{ey)p#gtXlMJHKIPB`^h?S1@)<}>tm^EXbA8))fx0Yz!3xlnlT8p-J{eFA}05H$k!s~|Nqk1UuAIws(fP8?4)G=4;XleAb|al!+B z=g-Ygx40bCRfY|rRByl|BO>T#kB4y4{Az2yZuzX#xkDacj~*GAqf0;eeD}umEYj)wWS z(5_N8#e{hKV%aVi{85p4O7&j!E^CmpX4=!WpN~{ruX0GWo_(&FPD`Dv)UAnFn3!9;~=`b6tU z|04s5%b`T=@7t8yuHAFbyYlUdP~dI5#mTZA<)_mi0g;8ijv#O;iVIDGv*OJ|CBS)H zD_L2(9=e6_`pZrJrGTTZ;sIKj2xeeN%P<*pHdfX*!Y}7<%Se{P>XctT9QL)(A?W5%MkoU`6eBz$&$!BF_!`C+8g-ufG^-GyiMj>BMFLfSn)M$>Ke7t@Ri z`Nt#IMb7*iU8FNeWp8q{Gv%QyZACOH!7n8Thw_rNyL+P|FA%0MT=T6HTL_MWt?_xjQEJ#fa-WH^Y58T=JG z0$T|CQiYRtJ+~Va&pkGw{}_-Sm&rf{sBM1!v4A}i&1eh-Ckx)N&zbKm8x~SNIfrUQ z_mr45r&F>^4cTSba4n~pzc>~$C^PF{lH)a_N_LbGm46oC+VXplSmGIJQiP|W!mMJB zDrx*Zj5k_Eu{?8Ouup_8Xc?qHn8D&`ir?TMBi*1pHRo-lTut9;FJHoJdp=!T0;H{+ z&fpjPd+xLT7FBdRjS|V)7s|^dKs-;8W$=pN$x81G@kP}0&Fk!dG)B&K5U*c`u$8r? z_r=VoaNKuja+hCvQpw)Bp7GT9B(4wf+E%pA{oqA%*p&3+HzgO4WM^d|`dDDEO=|CK zZn9;$$xiC@&bsNw($b!nR@H}zlL5TIE#rYk{K;cs6yx4O_z|un|EHHR0&x$C#YPK7 z=>QV~F(gl-DhcWFDBBuCxNP{;w|i3x%xQv>DC8k#`e7Hf%p7dN*It%_GxInTxo&Lp z_-D^flw+Uhfl3q@Dh!t;CZYRT-+m)y^r{H!;NQE4R<7CMoe4P;ZHHsrZ$5S8exM=% zCO3>tPL{ts{ne&7Q}&l#z2*LUa{!7Zbgr3CbM1T(z|fp_ZWwF9GBR9lX3zR79CObz z?_BE^p0$77^LRnJy%oLiY?1MZpj+oN4zpO~fx&CdbfpA91;evfjpODY!=v`qJw9Rt zMSJPg31#0!MUr~?k5D?#G5lQSY?pSlMU%)l*`k^6b!iCWL`%1%+eACUH2DPKfb&h} zZ8G>Dnw{L6(r@3?DrO8{O<%ne%&*#Rh78*6v!qRDUrS}ab&q<$CAj!Y)^^>iqVZB+ z=jcse5qU&5cmn39oLqh9jX<4Q>`i3bwL_2FWFvxV86_kjZ_~DpS(Iu*m{lYMdgID< zhFK(Ty>O8S43SBj^2n2p^Nj$sTjqhXm5SlnXF+HD=-sJnK{w`4aRgF|1-rGYh-kYl zvJ>w6TCGT;vMZDhcmOJ#9^!t0kZ$caQ`3VQ4S-2S6JrQYW;Rna|^4%tIux6EL>=>clE!mAkCOmSnsKH zs;k@OMx#XNb_Y#UTn&f&=2UZPJ3%7fQ~L8aIgCHK` zr!R0-7DbOddCRlWtK|mPsDu<{7jVwFH&7QNXlHZ_6)t1<+1x&$dZ>`VM9RG zVB3CzGYGk6gCfNV9GVa(rm?x*rE>=Q{|j8=9pX7_uC3Ffvo2mIVJ8X~4X@trxqHY* z0XKn@N1#c5ZoCv{Qi7%mG=K_iB^&|l@2cAwxb1)~T{i`vOr>EAyShS)z%U#_J_ zgyy)!?n^i5IBYJ=u2TJB@wwPjwHxE5LFl)xpmOUK1$!5F3uvPyOEYnO3g-j5DdfVl zo=MEzrLgto%aDoQBkG0-n?UCmW+0te@QSLdGYo6&;z*9Z& zZWDHqml37D3W{9a!Eo*GQgg1sTw@de8HMGw4B3KC4sYBD>5~&%w~_2qw%^amiU1rf79zP-|L09$U*bou0fe4(vmMohZ^D4UmJZTJLlFmtSJxrJ^LG zZq0NTm3z^JkIK({_|1?r4stvo(|6rn7zcDpEyt`_o2-9lX-S8Pr^+1>8?GLDWN9~q z?@T?LIX1i2;YPJ84}ad+E8Wi*W{&FI5tVmJq`5KA?Hxq=$T6zQ%?m7#D7gkUbNPd{ z#DmBSJ8=&6t0mnuPi;%$X3jut>f)Era|L&vzlMsAxu;3zn9kqN4CH0t-*OL->WQAd zz#-?*9b$|sFEMsHPkzTM6p4R)W647=D)qLYlV$c#V8}Z{23F^nLusq6oq;?wB+M3X z-QNiO45nj~AiY+YP#)XGxn&oXI#MVLhPj$^#p|MTPc16=TsIL z1__bWmKH*+54MY8`gW=WQLh^4vLLw8pUJl6Ac1ug&^5Oct*Of@76QehfB)hw=-!j+ zrIj`R_%+EM>CrNnQhUUQOczk^Ar?E`(#8*DGu##*WZ@X8t8GcvF4VN$6XyY|Q)0cV z31l4`95>9KYp)P*DwB8bc#c&4G8{UbBpBCpzs4*(Q)!m{J$FoxM31bS+m)b7seutsV(6s~FY)1ifzaLc zZYEh~Yko_34^E8q=>&D-@j%MF^)GCOj#&ZtY@~UuKY-Ylnxi8dyg)6#D<1uQ!JaMY zhAYIC-*$L@-RMAhT0UF3heu44(IHKjm?)F_uA5!^Ywnm$K&nvKLGcEGG<|{a`vXz% z(@~m)b0so99}iU`FC!DFcHMQ8_|VkZ%m}K>Nmse4@V@BuDvnkZz5+gr$793}U0E|W zHjgZ*B8>O6+J48Wv@?MRWMyg57@4imDVBAiT-){is9K#I(|K&#KzA!YuA{1<3@o~yIaiacn%VGPX$T;*zm6*D7 z24i}3E{ArI6yLiqrmSG2PE6ou#;rQnbD5D_W>2)e=YmVe#BNO{Ex5_hPKUV;`dCbH z3>5{;1{iEUWV}nBT`qyn_MF&paB#@|{JG<>Ds`BE?N~%3hLA5W7X5nFNi}M`SoGmt z^&1r-9WRG%xWWs$W2=jF*kncuzYqTQ57qTpXZ7DU*|nL02Y<5xEk1KahKOYxsn}Ts zcu?GMUG@rK62K18T8|)+W$qpxc-_fMtoAWmTAG@!Xk3Qcecc$gk+0V|nIqJ1G0B=g zp=n0$h;+OyVitu8H)XPw(2jI;VDu_m(rhf`!_n1atVjIo^vZdAmW!x`-+iTp(ec*_ zo)9N;h11>ner?_g^uMK#+`N~`-<|&JhRb-G+Wiq%S*pf<1HS@+w9k*#R$|&j@kDc8 z|0`G(RN$NqPHCM~BiRW8_oyQ~-g`O4;J41?bq`euZWrFmeXY>*KXs}OQB(4upsQ?Y o=>szn4qur5azA2>a@E{#hk?ApQ513&0Kj7vP32MoMT?;S1Lp6ww*UYD From 2c7c66fc89d4cc2c8a3608822dda0bcc820cd7a5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 24 Oct 2019 18:38:15 -0700 Subject: [PATCH 4/7] Merge pull request #9589 from Ghommie/Ghommie-cit259 Porting GetComponent macros removal, and few other updates. --- code/__DEFINES/components.dm | 4 -- code/_onclick/item_attack.dm | 2 +- code/datums/components/infective.dm | 22 +++++++--- code/datums/components/ntnet_interface.dm | 2 +- code/datums/components/rotation.dm | 6 +-- code/datums/components/storage/storage.dm | 2 +- code/datums/components/swarming.dm | 4 +- code/datums/traits/good.dm | 4 +- code/game/atoms.dm | 2 +- .../game/gamemodes/clown_ops/clown_weapons.dm | 20 ++++----- code/game/machinery/autolathe.dm | 18 ++++---- .../machinery/computer/telecrystalconsoles.dm | 10 ++--- code/game/machinery/droneDispenser.dm | 4 +- code/game/machinery/recycler.dm | 8 ++-- .../mecha/equipment/tools/mining_tools.dm | 6 +-- code/game/mecha/mech_fabricator.dm | 2 +- code/game/mecha/working/ripley.dm | 2 +- .../effects/decals/cleanable/aliens.dm | 10 ++--- .../objects/effects/decals/cleanable/gibs.dm | 10 ++--- code/game/objects/items/control_wand.dm | 2 +- .../objects/items/devices/PDA/virus_cart.dm | 4 +- .../objects/items/devices/chameleonproj.dm | 2 +- .../objects/items/implants/implant_storage.dm | 2 +- code/game/objects/items/melee/transforming.dm | 2 +- code/game/objects/items/religion.dm | 2 +- code/game/objects/items/stacks/telecrystal.dm | 9 ++-- code/game/objects/items/storage/backpack.dm | 18 ++++---- code/game/objects/items/storage/bags.dm | 36 ++++++++-------- code/game/objects/items/storage/belt.dm | 42 +++++++++---------- code/game/objects/items/storage/book.dm | 2 +- code/game/objects/items/storage/briefcase.dm | 4 +- code/game/objects/items/storage/dakis.dm | 2 +- code/game/objects/items/storage/fancy.dm | 16 +++---- code/game/objects/items/storage/firstaid.dm | 6 +-- code/game/objects/items/storage/lockbox.dm | 4 +- code/game/objects/items/storage/secure.dm | 8 ++-- code/game/objects/items/storage/toolbox.dm | 8 ++-- .../game/objects/items/storage/uplink_kits.dm | 4 +- code/game/objects/items/storage/wallets.dm | 2 +- code/game/objects/items/twohanded.dm | 2 +- code/game/turfs/change_turf.dm | 2 +- code/modules/NTNet/services/_service.dm | 4 +- .../antagonists/wizard/equipment/artefact.dm | 2 +- code/modules/clothing/chameleon.dm | 2 +- code/modules/clothing/clothing.dm | 2 +- code/modules/clothing/shoes/bananashoes.dm | 6 +-- code/modules/clothing/under/accessories.dm | 2 +- code/modules/events/wizard/rpgloot.dm | 2 +- .../food_and_drinks/food/snacks_pastry.dm | 4 +- code/modules/holiday/easter.dm | 2 +- code/modules/hydroponics/seed_extractor.dm | 2 +- .../integrated_electronics/subtypes/input.dm | 4 +- .../subtypes/manipulation.dm | 12 +++--- code/modules/library/lib_items.dm | 2 +- code/modules/mining/machine_processing.dm | 12 +++--- code/modules/mining/machine_silo.dm | 8 ++-- code/modules/mining/mint.dm | 6 +-- code/modules/mining/money_bag.dm | 2 +- code/modules/mob/emote.dm | 6 +-- code/modules/mob/living/carbon/carbon.dm | 4 +- .../mob/living/carbon/carbon_defense.dm | 4 +- code/modules/mob/living/carbon/examine.dm | 2 +- .../mob/living/carbon/human/examine.dm | 2 +- .../mob/living/carbon/human/species.dm | 4 +- code/modules/mob/living/living.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 2 +- .../friendly/drone/extra_drone_types.dm | 4 +- .../mob/living/simple_animal/simple_animal.dm | 4 +- code/modules/paperwork/pen.dm | 2 +- code/modules/photography/photos/album.dm | 2 +- .../chemistry/machinery/chem_master.dm | 4 +- .../chemistry/reagents/drug_reagents.dm | 8 ++-- .../chemistry/reagents/medicine_reagents.dm | 2 +- code/modules/recycling/disposal/bin.dm | 2 +- .../recycling/disposal/construction.dm | 2 +- code/modules/research/experimentor.dm | 2 +- .../xenobiology/crossbreeding/_misc.dm | 4 +- code/modules/shuttle/on_move.dm | 2 +- code/modules/surgery/organs/vocal_cords.dm | 2 +- code/modules/uplink/uplink_devices.dm | 8 ++-- hyperstation/code/gamemode/traitor_lewd.dm | 2 +- hyperstation/code/mobs/hugbot.dm | 2 +- .../code/game/machinery/toylathe.dm | 16 +++---- .../game/objects/items/storage/firstaid.dm | 4 +- .../living/silicon/robot/dogborg_equipment.dm | 2 +- .../chemistry/reagents/fermi_reagents.dm | 4 +- .../code/modules/vehicles/secway.dm | 2 +- 87 files changed, 248 insertions(+), 249 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 91cc89ce..1c05b2e2 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -2,10 +2,6 @@ #define SEND_GLOBAL_SIGNAL(sigtype, arguments...) ( SEND_SIGNAL(SSdcs, sigtype, ##arguments) ) -//shorthand -#define GET_COMPONENT_FROM(varname, path, target) var##path/##varname = ##target.GetComponent(##path) -#define GET_COMPONENT(varname, path) GET_COMPONENT_FROM(varname, path, src) - #define COMPONENT_INCOMPATIBLE 1 #define COMPONENT_NOTRANSFER 2 diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 6fb20a93..a7ff5668 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -40,7 +40,7 @@ return TRUE user.changeNext_move(CLICK_CD_MELEE) if(user.a_intent == INTENT_HARM && stat == DEAD && (butcher_results || guaranteed_butcher_results)) //can we butcher it? - GET_COMPONENT_FROM(butchering, /datum/component/butchering, I) + var/datum/component/butchering/butchering = I.GetComponent(/datum/component/butchering) if(butchering && butchering.butchering_enabled) to_chat(user, "You begin to butcher [src]...") playsound(loc, butchering.butcher_sound, 50, TRUE, -1) diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index cd5df822..ad2b7ded 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -6,21 +6,28 @@ /datum/component/infective/Initialize(list/datum/disease/_diseases, expire_in) if(islist(_diseases)) - diseases = diseases + diseases = _diseases else diseases = list(_diseases) if(expire_in) expire_time = world.time + expire_in QDEL_IN(src, expire_in) + + if(!ismovableatom(parent)) + return COMPONENT_INCOMPATIBLE + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle) RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/try_infect_collide) RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/try_infect_crossed) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/try_infect_attack) - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped) RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE, .proc/try_infect_impact_zone) - RegisterSignal(parent, COMSIG_FOOD_EATEN, .proc/try_infect_eat) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) + if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/try_infect_attack) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped) + if(istype(parent, /obj/item/reagent_containers/food/snacks)) + RegisterSignal(parent, COMSIG_FOOD_EATEN, .proc/try_infect_eat) + else if(istype(parent, /obj/effect/decal/cleanable/blood/gibs)) + RegisterSignal(parent, COMSIG_GIBS_STREAK, .proc/try_infect_streak) /datum/component/infective/proc/try_infect_eat(datum/source, mob/living/eater, mob/living/feeder) for(var/V in diseases) @@ -73,6 +80,9 @@ if(isliving(M)) try_infect(M, BODY_ZONE_PRECISE_L_FOOT) +/datum/component/infective/proc/try_infect_streak(datum/source, list/directions, list/output_diseases) + output_diseases |= diseases + /datum/component/infective/proc/try_infect(mob/living/L, target_zone) for(var/V in diseases) L.ContactContractDisease(V, target_zone) diff --git a/code/datums/components/ntnet_interface.dm b/code/datums/components/ntnet_interface.dm index 62fc19ad..6159c7c2 100644 --- a/code/datums/components/ntnet_interface.dm +++ b/code/datums/components/ntnet_interface.dm @@ -6,7 +6,7 @@ return /datum/proc/ntnet_send(datum/netdata/data, netid) - GET_COMPONENT(NIC, /datum/component/ntnet_interface) + var/datum/component/ntnet_interface/NIC = GetComponent(/datum/component/ntnet_interface) if(!NIC) return FALSE return NIC.__network_send(data, netid) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index 112915a2..4194d6a7 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -143,7 +143,7 @@ set name = "Rotate Clockwise" set category = "Object" set src in oview(1) - GET_COMPONENT(rotcomp,/datum/component/simple_rotation) + var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) rotcomp.HandRot(usr,ROTATION_CLOCKWISE) @@ -151,7 +151,7 @@ set name = "Rotate Counter-Clockwise" set category = "Object" set src in oview(1) - GET_COMPONENT(rotcomp,/datum/component/simple_rotation) + var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) rotcomp.HandRot(usr,ROTATION_COUNTERCLOCKWISE) @@ -159,6 +159,6 @@ set name = "Flip" set category = "Object" set src in oview(1) - GET_COMPONENT(rotcomp,/datum/component/simple_rotation) + var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) rotcomp.HandRot(usr,ROTATION_FLIP) diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index 04c8f5e3..98af707e 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -587,7 +587,7 @@ return FALSE if(isitem(host)) var/obj/item/IP = host - GET_COMPONENT_FROM(STR_I, /datum/component/storage, I) + var/datum/component/storage/STR_I = I.GetComponent(/datum/component/storage) if((I.w_class >= IP.w_class) && STR_I && !allow_big_nesting) if(!stop_messages) to_chat(M, "[IP] cannot hold [I] as it's a storage item of the same size!") diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm index 17b2178d..64844c4c 100644 --- a/code/datums/components/swarming.dm +++ b/code/datums/components/swarming.dm @@ -12,7 +12,7 @@ RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/leave_swarm) /datum/component/swarming/proc/join_swarm(datum/source, atom/movable/AM) - GET_COMPONENT_FROM(other_swarm, /datum/component/swarming, AM) + var/datum/component/swarming/other_swarm = AM.GetComponent(/datum/component/swarming) if(!other_swarm) return swarm() @@ -21,7 +21,7 @@ other_swarm.swarm_members |= src /datum/component/swarming/proc/leave_swarm(datum/source, atom/movable/AM) - GET_COMPONENT_FROM(other_swarm, /datum/component/swarming, AM) + var/datum/component/swarming/other_swarm = AM.GetComponent(/datum/component/swarming) if(!other_swarm || !(other_swarm in swarm_members)) return swarm_members -= other_swarm diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index 74276f17..e4aa0d9b 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -16,13 +16,13 @@ mood_quirk = TRUE /datum/quirk/apathetic/add() - GET_COMPONENT_FROM(mood, /datum/component/mood, quirk_holder) + var/datum/component/mood/mood = quirk_holder.GetComponent(/datum/component/mood) if(mood) mood.mood_modifier = 0.8 /datum/quirk/apathetic/remove() if(quirk_holder) - GET_COMPONENT_FROM(mood, /datum/component/mood, quirk_holder) + var/datum/component/mood/mood = quirk_holder.GetComponent(/datum/component/mood) if(mood) mood.mood_modifier = 1 //Change this once/if species get their own mood modifiers. diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f9ed7a31..7e63ccb3 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -554,7 +554,7 @@ /atom/proc/component_storage_contents_dump_act(datum/component/storage/src_object, mob/user) var/list/things = src_object.contents() var/datum/progressbar/progress = new(user, things.len, src) - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress))) stoplag(1) qdel(progress) diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 60ae5685..6e409951 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -39,12 +39,12 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/Initialize() . = ..() - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) bananium.insert_amount(max_recharge, MAT_BANANIUM) START_PROCESSING(SSobj, src) /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/process() - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) var/bananium_amount = bananium.amount(MAT_BANANIUM) if(bananium_amount < max_recharge) bananium.insert_amount(min(recharge_rate, max_recharge - bananium_amount), MAT_BANANIUM) @@ -73,19 +73,19 @@ /obj/item/melee/transforming/energy/sword/bananium/Initialize() . = ..() AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP) - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.signal_enabled = active /obj/item/melee/transforming/energy/sword/bananium/attack(mob/living/M, mob/living/user) ..() if(active) - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(M) /obj/item/melee/transforming/energy/sword/bananium/throw_impact(atom/hit_atom, throwingdatum) . = ..() if(active) - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(hit_atom) /obj/item/melee/transforming/energy/sword/bananium/attackby(obj/item/I, mob/living/user, params) @@ -98,7 +98,7 @@ /obj/item/melee/transforming/energy/sword/bananium/transform_weapon(mob/living/user, supress_message_text) ..() - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.signal_enabled = active /obj/item/melee/transforming/energy/sword/bananium/ignition_effect(atom/A, mob/user) @@ -108,7 +108,7 @@ if(!active) transform_weapon(user, TRUE) user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku, but the blade slips off of [user.p_them()] harmlessly!") - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(user) return SHAME @@ -130,12 +130,12 @@ /obj/item/shield/energy/bananium/Initialize() . = ..() AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP) - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.signal_enabled = active /obj/item/shield/energy/bananium/attack_self(mob/living/carbon/human/user) ..() - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.signal_enabled = active /obj/item/shield/energy/bananium/throw_at(atom/target, range, speed, mob/thrower, spin=1) @@ -149,7 +149,7 @@ if(active) var/caught = hit_atom.hitby(src, FALSE, FALSE, throwingdatum=throwingdatum) if(iscarbon(hit_atom) && !caught)//if they are a carbon and they didn't catch it - GET_COMPONENT(slipper, /datum/component/slippery) + var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(hit_atom) if(thrownby && !caught) throw_at(thrownby, throw_range+2, throw_speed, null, 1) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 1cbbdfda..29faa1f7 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -80,7 +80,7 @@ popup.open() /obj/machinery/autolathe/on_deconstruction() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() /obj/machinery/autolathe/attackby(obj/item/O, mob/user, params) @@ -164,7 +164,7 @@ var/power = max(2000, (metal_cost+glass_cost)*multiplier/5) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff)) busy = TRUE use_power(power) @@ -188,7 +188,7 @@ return /obj/machinery/autolathe/proc/make_item(power, metal_cost, glass_cost, multiplier, coeff, is_stack) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/atom/A = drop_location() use_power(power) var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier) @@ -213,7 +213,7 @@ var/T = 0 for(var/obj/item/stock_parts/matter_bin/MB in component_parts) T += MB.rating*75000 - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.max_amount = T T=1.2 for(var/obj/item/stock_parts/manipulator/M in component_parts) @@ -262,7 +262,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -294,7 +294,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -309,7 +309,7 @@ return dat /obj/machinery/autolathe/proc/materials_printout() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] @@ -322,7 +322,7 @@ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount))) return FALSE if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount))) @@ -380,4 +380,4 @@ //Called when the object is constructed by an autolathe //Has a reference to the autolathe so you can do !!FUN!! things with hacked lathes /obj/item/proc/autolathe_crafted(obj/machinery/autolathe/A) - return \ No newline at end of file + return diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 1f015d35..f3af0f9b 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -33,7 +33,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E if(uplinkholder) to_chat(user, "[src] already has an uplink in it.") return - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + var/datum/component/uplink/hidden_uplink = I.GetComponent(/datum/component/uplink) if(hidden_uplink) if(!user.transferItemToLoc(I, src)) return @@ -57,7 +57,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/uplinker/proc/donateTC(amt, addLog = 1) if(uplinkholder && linkedboss) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) + var/datum/component/uplink/hidden_uplink = uplinkholder.GetComponent(/datum/component/uplink) if(amt < 0) linkedboss.storedcrystals += hidden_uplink.telecrystals if(addLog) @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/uplinker/proc/giveTC(amt, addLog = 1) if(uplinkholder && linkedboss) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) + var/datum/component/uplink/hidden_uplink = uplinkholder.GetComponent(/datum/component/uplink) if(amt < 0) hidden_uplink.telecrystals += linkedboss.storedcrystals if(addLog) @@ -94,7 +94,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E dat += "No linked management consoles detected. Scan for uplink stations using the management console.

" if(uplinkholder) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) + var/datum/component/uplink/hidden_uplink = uplinkholder.GetComponent(/datum/component/uplink) dat += "[hidden_uplink.telecrystals] telecrystals remain in this uplink.
" if(linkedboss) dat += "Donate TC: 1 | 5 | All" @@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E for(var/obj/machinery/computer/telecrystals/uplinker/A in TCstations) dat += "[A.name] | " if(A.uplinkholder) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, A.uplinkholder) + var/datum/component/uplink/hidden_uplink = A.uplinkholder.GetComponent(/datum/component/uplink) dat += "[hidden_uplink.telecrystals] telecrystals." if(storedcrystals) dat+= "
Add TC: 1 | 5 | 10 | All" diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 3e2a6183..96ac8981 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -146,7 +146,7 @@ if((stat & (NOPOWER|BROKEN)) || !anchored) return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(!materials.has_materials(using_materials)) return // We require more minerals @@ -211,7 +211,7 @@ /obj/machinery/droneDispenser/attackby(obj/item/I, mob/living/user) if(istype(I, /obj/item/crowbar)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() I.play_tool_sound(src) to_chat(user, "You retrieve the materials from [src].") diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index d6c73ce5..684988a5 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -32,10 +32,10 @@ mat_mod *= 50000 for(var/obj/item/stock_parts/manipulator/M in component_parts) amt_made = 12.5 * M.rating //% of materials salvaged - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.max_amount = mat_mod amount_produced = min(50, amt_made) + 50 - GET_COMPONENT(butchering, /datum/component/butchering) + var/datum/component/butchering/butchering = GetComponent(/datum/component/butchering) butchering.effectiveness = amount_produced butchering.bonus_modifier = amount_produced/5 @@ -142,7 +142,7 @@ qdel(L) return else - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/material_amount = materials.get_item_material_amount(I) if(!material_amount) qdel(I) @@ -193,7 +193,7 @@ L.Unconscious(100) L.adjustBruteLoss(crush_damage) if(L.stat == DEAD && (L.butcher_results || L.guaranteed_butcher_results)) - GET_COMPONENT(butchering, /datum/component/butchering) + var/datum/component/butchering/butchering = GetComponent(/datum/component/butchering) butchering.Butcher(src,L) /obj/machinery/recycler/deathtrap diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index d539e0a9..94440eb2 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -98,12 +98,12 @@ /obj/item/mecha_parts/mecha_equipment/drill/attach(obj/mecha/M) ..() - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = TRUE /obj/item/mecha_parts/mecha_equipment/drill/detach(atom/moveto) ..() - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = FALSE /obj/item/mecha_parts/mecha_equipment/drill/proc/drill_mob(mob/living/target, mob/user) @@ -113,7 +113,7 @@ if(target.stat == DEAD && target.getBruteLoss() >= 200) log_combat(user, target, "gibbed", name) if(LAZYLEN(target.butcher_results) || LAZYLEN(target.guaranteed_butcher_results)) - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.Butcher(chassis, target) else target.gib() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 46beb3a6..1824308a 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -454,4 +454,4 @@ return TRUE /obj/machinery/mecha_part_fabricator/maint - link_on_init = FALSE \ No newline at end of file + link_on_init = FALSE diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 6b89c920..3c9b0231 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -51,7 +51,7 @@ /obj/mecha/working/ripley/update_icon() ..() - GET_COMPONENT(C,/datum/component/armor_plate) + var/datum/component/armor_plate/C = GetComponent(/datum/component/armor_plate) if (C.amount) cut_overlays() if(C.amount < 3) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 4301709f..022cc0ba 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -26,15 +26,13 @@ add_overlay(flesh) /obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions) - set waitfor = 0 + set waitfor = FALSE + var/list/diseases = list() + SEND_SIGNAL(src, COMSIG_GIBS_STREAK, directions, diseases) var/direction = pick(directions) - for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + for(var/i in 0 to pick(0, 200; 1, 150; 2, 50)) sleep(2) if(i > 0) - var/list/datum/disease/diseases - GET_COMPONENT(infective, /datum/component/infective) - if(infective) - diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases) splat.transfer_blood_dna(blood_DNA, diseases) if(!step_to(src, get_step(src, direction), 0)) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index dc621f17..287bbd88 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -41,15 +41,13 @@ . = ..() /obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions) - set waitfor = 0 + set waitfor = FALSE + var/list/diseases = list() + SEND_SIGNAL(src, COMSIG_GIBS_STREAK, directions, diseases) var/direction = pick(directions) - for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++) + for(var/i in 0 to pick(0, 200; 1, 150; 2, 50)) sleep(2) if(i > 0) - var/list/datum/disease/diseases - GET_COMPONENT(infective, /datum/component/infective) - if(infective) - diseases = infective.diseases var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases) splat.transfer_blood_dna(blood_DNA, diseases) if(!step_to(src, get_step(src, direction), 0)) diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm index fa452452..c98484b8 100644 --- a/code/game/objects/items/control_wand.dm +++ b/code/game/objects/items/control_wand.dm @@ -33,7 +33,7 @@ // Airlock remote works by sending NTNet packets to whatever it's pointed at. /obj/item/door_remote/afterattack(atom/A, mob/user) . = ..() - GET_COMPONENT_FROM(target_interface, /datum/component/ntnet_interface, A) + var/datum/component/ntnet_interface/target_interface = A.GetComponent(/datum/component/ntnet_interface) if(!target_interface) return diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index d85c5d72..28bc559b 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -70,7 +70,7 @@ difficulty++ //if cartridge has manifest access it has extra snowflake difficulty else difficulty += 2 - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, target) + var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink)) U.show_message("An error flashes on your [src].", 1) else @@ -95,7 +95,7 @@ charges-- var/lock_code = "[rand(100,999)] [pick(GLOB.phonetic_alphabet)]" to_chat(U, "Virus Sent! The unlock code to the target is: [lock_code]") - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, target) + var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) if(!hidden_uplink) hidden_uplink = target.AddComponent(/datum/component/uplink) hidden_uplink.unlock_code = lock_code diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index f39d2ba0..dffbb46c 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -116,7 +116,7 @@ appearance = saved_appearance if(istype(M.buckled, /obj/vehicle)) var/obj/vehicle/V = M.buckled - GET_COMPONENT_FROM(VRD, /datum/component/riding, V) + var/datum/component/riding/VRD = V.GetComponent(/datum/component/riding) if(VRD) VRD.force_dismount(M) else diff --git a/code/game/objects/items/implants/implant_storage.dm b/code/game/objects/items/implants/implant_storage.dm index ec6b4d64..2a224e9c 100644 --- a/code/game/objects/items/implants/implant_storage.dm +++ b/code/game/objects/items/implants/implant_storage.dm @@ -19,7 +19,7 @@ for(var/X in target.implants) if(istype(X, type)) var/obj/item/implant/storage/imp_e = X - GET_COMPONENT_FROM(STR, /datum/component/storage, imp_e) + var/datum/component/storage/STR = imp_e.GetComponent(/datum/component/storage) if(!STR || (STR && STR.max_items < max_slot_stacking)) imp_e.AddComponent(/datum/component/storage/concrete/implant) qdel(src) diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index aabb930b..850810bd 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -69,7 +69,7 @@ var/datum/component/butchering/BT = LoadComponent(/datum/component/butchering) BT.butchering_enabled = TRUE else - GET_COMPONENT(BT, /datum/component/butchering) + var/datum/component/butchering/BT = GetComponent(/datum/component/butchering) if(BT) BT.butchering_enabled = FALSE transform_messages(user, supress_message_text) diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index c9dee6d6..a32e826d 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -216,7 +216,7 @@ /obj/item/storage/backpack/bannerpack/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 27 //6 more then normal, for the tradeoff of declaring yourself an antag at all times. /obj/item/storage/backpack/bannerpack/red diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm index c1fb3965..9b5ca2b0 100644 --- a/code/game/objects/items/stacks/telecrystal.dm +++ b/code/game/objects/items/stacks/telecrystal.dm @@ -9,10 +9,11 @@ item_flags = NOBLUDGEON /obj/item/stack/telecrystal/attack(mob/target, mob/user) - if(target == user) //You can't go around smacking people with crystals to find out if they have an uplink or not. - for(var/obj/item/implant/uplink/I in target) - if(I && I.imp_in) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + if(target == user && isliving(user)) //You can't go around smacking people with crystals to find out if they have an uplink or not. + var/mob/living/L = user + for(var/obj/item/implant/uplink/I in L.implants) + if(I?.imp_in) + var/datum/component/uplink/hidden_uplink = I.GetComponent(/datum/component/uplink) if(hidden_uplink) hidden_uplink.telecrystals += amount use(amount) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 30e0c7df..95f3abbd 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -23,7 +23,7 @@ /obj/item/storage/backpack/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 21 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_items = 21 @@ -34,7 +34,7 @@ /obj/item/storage/backpack/old/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 12 /obj/item/storage/backpack/holding @@ -56,7 +56,7 @@ /obj/item/storage/backpack/holding/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.allow_big_nesting = TRUE STR.max_w_class = WEIGHT_CLASS_GIGANTIC STR.max_combined_w_class = 35 @@ -84,7 +84,7 @@ /obj/item/storage/backpack/santabag/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 60 @@ -252,7 +252,7 @@ /obj/item/storage/backpack/satchel/bone/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 20 STR.max_items = 15 @@ -276,7 +276,7 @@ /obj/item/storage/backpack/satchel/flat/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 6 STR.cant_hold = typecacheof(list(/obj/item/storage/backpack/satchel/flat)) //muh recursive backpacks @@ -328,7 +328,7 @@ /obj/item/storage/backpack/duffelbag/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 30 /obj/item/storage/backpack/duffelbag/captain @@ -430,7 +430,7 @@ /obj/item/storage/backpack/duffelbag/syndie/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.silent = TRUE /obj/item/storage/backpack/duffelbag/syndie/hitman @@ -582,7 +582,7 @@ // For ClownOps. /obj/item/storage/backpack/duffelbag/clown/syndie/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) slowdown = 0 STR.silent = TRUE diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index c95e93ec..948b9577 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -21,7 +21,7 @@ /obj/item/storage/bag/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.allow_quick_gather = TRUE STR.allow_quick_empty = TRUE STR.display_numerical_stacking = TRUE @@ -44,7 +44,7 @@ /obj/item/storage/bag/trash/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL STR.max_combined_w_class = 30 STR.max_items = 30 @@ -84,7 +84,7 @@ /obj/item/storage/bag/trash/bluespace/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 60 STR.max_items = 60 @@ -108,7 +108,7 @@ /obj/item/storage/bag/ore/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/ore)) STR.max_w_class = WEIGHT_CLASS_HUGE @@ -134,7 +134,7 @@ return if (istype(user.pulling, /obj/structure/ore_box)) box = user.pulling - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) if(STR) for(var/A in tile) if (!is_type_in_typecache(A, STR.can_hold)) @@ -164,7 +164,7 @@ /obj/item/storage/bag/ore/cyborg/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/ore)) STR.max_w_class = WEIGHT_CLASS_HUGE @@ -176,7 +176,7 @@ /obj/item/storage/bag/ore/large/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/ore)) STR.max_w_class = WEIGHT_CLASS_HUGE @@ -189,7 +189,7 @@ /obj/item/storage/bag/ore/holding/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.max_items = INFINITY STR.max_combined_w_class = INFINITY STR.max_combined_stack_amount = INFINITY @@ -207,7 +207,7 @@ /obj/item/storage/bag/plants/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 100 STR.max_items = 100 @@ -247,7 +247,7 @@ /obj/item/storage/bag/sheetsnatcher/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/sheet)) STR.cant_hold = typecacheof(list(/obj/item/stack/sheet/mineral/sandstone, /obj/item/stack/sheet/mineral/wood)) @@ -264,7 +264,7 @@ /obj/item/storage/bag/sheetsnatcher/borg/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage/concrete/stack) + var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.max_combined_stack_amount = 500 // ----------------------------- @@ -281,7 +281,7 @@ /obj/item/storage/bag/books/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 21 STR.max_items = 7 @@ -306,14 +306,14 @@ /obj/item/storage/bag/tray/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.insert_preposition = "on" /obj/item/storage/bag/tray/attack(mob/living/M, mob/living/user) . = ..() // Drop all the things. All of them. var/list/obj/item/oldContents = contents.Copy() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.quick_empty() // Make each item scatter a bit for(var/obj/item/I in oldContents) @@ -360,7 +360,7 @@ /obj/item/storage/bag/chemistry/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 200 STR.max_items = 50 STR.insert_preposition = "in" @@ -380,7 +380,7 @@ /obj/item/storage/bag/bio/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 200 STR.max_items = 25 STR.insert_preposition = "in" @@ -394,7 +394,7 @@ /obj/item/storage/bag/bio/holding/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = INFINITY STR.max_items = 100 @@ -417,4 +417,4 @@ STR.max_items = 50 STR.max_w_class = WEIGHT_CLASS_SMALL STR.insert_preposition = "in" - STR.can_hold = typecacheof(list(/obj/item/stack/ore/bluespace_crystal, /obj/item/assembly, /obj/item/stock_parts, /obj/item/reagent_containers/glass/beaker, /obj/item/stack/cable_coil, /obj/item/circuitboard, /obj/item/electronics)) \ No newline at end of file + STR.can_hold = typecacheof(list(/obj/item/stack/ore/bluespace_crystal, /obj/item/assembly, /obj/item/stock_parts, /obj/item/reagent_containers/glass/beaker, /obj/item/stack/cable_coil, /obj/item/circuitboard, /obj/item/electronics)) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 6397d599..1c3efc23 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -43,7 +43,7 @@ /obj/item/storage/belt/utility/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) var/static/list/can_hold = typecacheof(list( /obj/item/crowbar, /obj/item/screwdriver, @@ -127,7 +127,7 @@ /obj/item/storage/belt/medical/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_BULKY STR.can_hold = typecacheof(list( /obj/item/healthanalyzer, @@ -200,7 +200,7 @@ /obj/item/storage/belt/security/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.can_hold = typecacheof(list( @@ -238,7 +238,7 @@ obj/item/storage/belt/slut/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.can_hold = typecacheof(list( @@ -271,7 +271,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/mining/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.max_w_class = WEIGHT_CLASS_BULKY STR.max_combined_w_class = 20 @@ -328,7 +328,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/mining/primitive/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 /obj/item/storage/belt/soulstone @@ -339,7 +339,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/soulstone/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list( /obj/item/soulstone @@ -362,7 +362,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/champion/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 1 STR.can_hold = list( /obj/item/clothing/mask/luchador @@ -376,7 +376,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/military/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL /obj/item/storage/belt/military/snack @@ -389,7 +389,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/military/snack/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.max_w_class = WEIGHT_CLASS_SMALL STR.can_hold = typecacheof(list( @@ -457,7 +457,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/military/assault/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 /obj/item/storage/belt/durathread @@ -571,7 +571,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/grenade/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 30 STR.display_numerical_stacking = TRUE STR.max_combined_w_class = 60 @@ -623,7 +623,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/wands/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list( /obj/item/gun/magic/wand @@ -649,7 +649,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/janitor/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.max_w_class = WEIGHT_CLASS_BULKY // Set to this so the light replacer can fit. STR.can_hold = typecacheof(list( @@ -676,7 +676,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/bandolier/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 18 STR.display_numerical_stacking = TRUE STR.can_hold = typecacheof(list( @@ -692,7 +692,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/bandolier/durathread/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 32 STR.display_numerical_stacking = TRUE STR.can_hold = typecacheof(list( @@ -707,7 +707,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/medolier/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 15 STR.display_numerical_stacking = FALSE STR.can_hold = typecacheof(list( @@ -727,7 +727,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/holster/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 3 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.can_hold = typecacheof(list( @@ -751,7 +751,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/fannypack/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 3 STR.max_w_class = WEIGHT_CLASS_SMALL @@ -818,7 +818,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/sabre/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 1 STR.rustle_sound = FALSE STR.max_w_class = WEIGHT_CLASS_BULKY @@ -875,7 +875,7 @@ obj/item/storage/belt/slut/ComponentInitialize() /obj/item/storage/belt/botany/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 8 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.can_hold = typecacheof(list( diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 85a06f0c..c658eee3 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -11,7 +11,7 @@ /obj/item/storage/book/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 1 /obj/item/storage/book/attack_self(mob/user) diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index 81a3d224..a0ec1c23 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -17,7 +17,7 @@ /obj/item/storage/briefcase/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 21 @@ -48,7 +48,7 @@ /obj/item/storage/briefcase/lawyer/family/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 14 diff --git a/code/game/objects/items/storage/dakis.dm b/code/game/objects/items/storage/dakis.dm index 08748bf3..2703581a 100644 --- a/code/game/objects/items/storage/dakis.dm +++ b/code/game/objects/items/storage/dakis.dm @@ -13,7 +13,7 @@ /obj/item/storage/daki/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL STR.max_combined_w_class = 21 STR.max_items = 3 diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 408d8d55..94d12789 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -26,7 +26,7 @@ var/fancy_open = FALSE /obj/item/storage/fancy/PopulateContents() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) for(var/i = 1 to STR.max_items) new spawn_type(src) @@ -73,7 +73,7 @@ /obj/item/storage/fancy/donut_box/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donut)) @@ -94,7 +94,7 @@ /obj/item/storage/fancy/egg_box/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 12 STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/egg)) @@ -116,7 +116,7 @@ /obj/item/storage/fancy/candle_box/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 /obj/item/storage/fancy/candle_box/attack_self(mob_user) @@ -139,7 +139,7 @@ /obj/item/storage/fancy/cigarettes/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list(/obj/item/clothing/mask/cigarette, /obj/item/lighter)) @@ -277,7 +277,7 @@ /obj/item/storage/fancy/rollingpapers/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 10 STR.can_hold = typecacheof(list(/obj/item/rollingpaper)) @@ -301,7 +301,7 @@ /obj/item/storage/fancy/cigarettes/cigars/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 STR.can_hold = typecacheof(list(/obj/item/clothing/mask/cigarette/cigar)) @@ -348,7 +348,7 @@ /obj/item/storage/fancy/heart_box/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 8 STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/tinychocolate)) diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 0a866266..dc048e3e 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -171,7 +171,7 @@ /obj/item/storage/firstaid/tactical/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL /obj/item/storage/firstaid/tactical/PopulateContents() @@ -201,7 +201,7 @@ /obj/item/storage/pill_bottle/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.allow_quick_gather = TRUE STR.click_gather = TRUE STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/dice)) @@ -364,7 +364,7 @@ /obj/item/storage/belt/organbox/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 16 STR.max_w_class = WEIGHT_CLASS_BULKY STR.max_combined_w_class = 20 diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index b14cd852..bd0a34b5 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -15,7 +15,7 @@ /obj/item/storage/lockbox/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 14 STR.max_items = 4 @@ -99,7 +99,7 @@ /obj/item/storage/lockbox/medal/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL STR.max_items = 10 STR.max_combined_w_class = 20 diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 20e9f0d3..e177a9f9 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -26,7 +26,7 @@ /obj/item/storage/secure/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL STR.max_combined_w_class = 14 @@ -136,7 +136,7 @@ /obj/item/storage/secure/briefcase/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 21 STR.max_w_class = WEIGHT_CLASS_NORMAL @@ -146,7 +146,7 @@ /obj/item/storage/secure/briefcase/syndie/PopulateContents() ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) for(var/i = 0, i < STR.max_items - 2, i++) new /obj/item/stack/spacecash/c1000(src) @@ -170,7 +170,7 @@ /obj/item/storage/secure/safe/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.cant_hold = typecacheof(list(/obj/item/storage/secure/briefcase)) STR.max_w_class = 8 //?? diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 55f5e061..8f77095d 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -123,7 +123,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/syndicate/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.silent = TRUE /obj/item/storage/toolbox/syndicate/PopulateContents() @@ -164,7 +164,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/brass/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 28 STR.max_items = 28 @@ -219,7 +219,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/artistic/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 20 STR.max_items = 10 @@ -257,7 +257,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) /obj/item/storage/toolbox/gold_real/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 40 STR.max_items = 12 diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 414dec5a..2bdb7590 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -221,7 +221,7 @@ /obj/item/storage/box/syndie_kit/space/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.can_hold = typecacheof(list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate)) @@ -245,7 +245,7 @@ /obj/item/storage/box/syndie_kit/chemical/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 14 /obj/item/storage/box/syndie_kit/chemical/PopulateContents() diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index c263c266..0adf4604 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -11,7 +11,7 @@ /obj/item/storage/wallet/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 4 STR.cant_hold = typecacheof(list(/obj/item/screwdriver/power)) STR.can_hold = typecacheof(list( diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 360e9943..af08ac44 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -615,7 +615,7 @@ force = on ? force_on : initial(force) throwforce = on ? force_on : initial(force) icon_state = "chainsaw_[on ? "on" : "off"]" - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = on if(on) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index fdaecd51..6a055bbd 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -41,7 +41,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( /turf/open/copyTurf(turf/T, copy_air = FALSE) . = ..() if (isopenturf(T)) - GET_COMPONENT(slip, /datum/component/wet_floor) + var/datum/component/wet_floor/slip = GetComponent(/datum/component/wet_floor) if(slip) var/datum/component/wet_floor/WF = T.AddComponent(/datum/component/wet_floor) WF.InheritComponent(slip) diff --git a/code/modules/NTNet/services/_service.dm b/code/modules/NTNet/services/_service.dm index ca623a8c..75059d99 100644 --- a/code/modules/NTNet/services/_service.dm +++ b/code/modules/NTNet/services/_service.dm @@ -17,7 +17,7 @@ /datum/ntnet_service/proc/connect(datum/ntnet/net) if(!istype(net)) return FALSE - GET_COMPONENT(interface, /datum/component/ntnet_interface) + var/datum/component/ntnet_interface/interface = GetComponent(/datum/component/ntnet_interface) if(!interface.register_connection(net)) return FALSE if(!net.register_service(src)) @@ -29,7 +29,7 @@ /datum/ntnet_service/proc/disconnect(datum/ntnet/net, force = FALSE) if(!istype(net) || (!net.unregister_service(src) && !force)) return FALSE - GET_COMPONENT(interface, /datum/component/ntnet_interface) + var/datum/component/ntnet_interface/interface = GetComponent(/datum/component/ntnet_interface) interface.unregister_connection(net) networks_by_id -= net.network_id return TRUE diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 13a332de..09496339 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -122,7 +122,7 @@ /obj/singularity/wizard/attack_tk(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user - GET_COMPONENT_FROM(insaneinthemembrane, /datum/component/mood, C) + var/datum/component/mood/insaneinthemembrane = C.GetComponent(/datum/component/mood) if(insaneinthemembrane.sanity < 15) return //they've already seen it and are about to die, or are just too insane to care to_chat(C, "OH GOD! NONE OF IT IS REAL! NONE OF IT IS REEEEEEEEEEEEEEEEEEEEEEEEAL!") diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 33a83487..8b2a34a0 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -561,7 +561,7 @@ /obj/item/storage/belt/chameleon/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.silent = TRUE /obj/item/storage/belt/chameleon/emp_act(severity) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 0706f77e..30d705bd 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -139,7 +139,7 @@ . = ..() if(damaged_clothes) . += "It looks damaged!" - GET_COMPONENT(pockets, /datum/component/storage) + var/datum/component/storage/pockets = GetComponent(/datum/component/storage) if(pockets) var/list/how_cool_are_your_threads = list("") if(pockets.attack_hand_interact) diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index 979db7e0..c4d06ea1 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -17,7 +17,7 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() . = ..() - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) if(on) if(bananium.amount(MAT_BANANIUM) < 100) on = !on @@ -30,7 +30,7 @@ bananium.use_amount_type(100, MAT_BANANIUM) /obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) var/sheet_amount = bananium.retrieve_all() if(sheet_amount) to_chat(user, "You retrieve [sheet_amount] sheets of bananium from the prototype shoes.") @@ -42,7 +42,7 @@ . += "The shoes are [on ? "enabled" : "disabled"]." /obj/item/clothing/shoes/clown_shoes/banana_shoes/ui_action_click(mob/user) - GET_COMPONENT(bananium, /datum/component/material_container) + var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) if(bananium.amount(MAT_BANANIUM)) on = !on update_icon() diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index dc5372cf..c019cda8 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -12,7 +12,7 @@ var/datum/component/storage/detached_pockets /obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user) - GET_COMPONENT(storage, /datum/component/storage) + var/datum/component/storage/storage = GetComponent(/datum/component/storage) if(storage) if(SEND_SIGNAL(U, COMSIG_CONTAINS_STORAGE)) return FALSE diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index 420582dd..3d560aef 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -13,7 +13,7 @@ if(istype(I, /obj/item/storage)) var/obj/item/storage/S = I - GET_COMPONENT_FROM(STR, /datum/component/storage, S) + var/datum/component/storage/STR = S.GetComponent(/datum/component/storage) if(prob(upgrade_scroll_chance) && S.contents.len < STR.max_items && !S.invisibility) var/obj/item/upgradescroll/scroll = new SEND_SIGNAL(S, COMSIG_TRY_STORAGE_INSERT, scroll, null, TRUE, TRUE) diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index b8797783..c3fc942b 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -38,9 +38,7 @@ if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM) && !HAS_TRAIT(H, TRAIT_AGEUSIA)) to_chat(H,"I love this taste!") H.adjust_disgust(-5 + -2.5 * fraction) - GET_COMPONENT_FROM(mood, /datum/component/mood, H) - if(mood) - mood.add_event(null, "fav_food", /datum/mood_event/favorite_food) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "fav_food", /datum/mood_event/favorite_food) last_check_time = world.time return ..() diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index d6d4ed2a..4dfe2f33 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -68,7 +68,7 @@ /obj/item/storage/bag/easterbasket/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/egg, /obj/item/reagent_containers/food/snacks/chocolateegg, /obj/item/reagent_containers/food/snacks/boiledegg)) /obj/item/storage/bag/easterbasket/proc/countEggs() diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 29a26067..5af19b84 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -174,7 +174,7 @@ to_chat(usr, "\The [src] is full.") return FALSE - GET_COMPONENT_FROM(STR, /datum/component/storage, O.loc) + var/datum/component/storage/STR = O.loc.GetComponent(/datum/component/storage) if(STR) if(!STR.remove_from_storage(O,src)) return FALSE diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index b258a159..b7feedd3 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -893,7 +893,7 @@ return FALSE var/ignore_bags = get_pin_data(IC_INPUT, 1) if(ignore_bags) - GET_COMPONENT_FROM(STR, /datum/component/storage, A) + var/datum/component/storage/STR = A.GetComponent(/datum/component/storage) if(STR) return FALSE set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) @@ -1104,7 +1104,7 @@ /obj/item/integrated_circuit/input/matscan/do_work() var/atom/movable/H = get_pin_data_as_type(IC_INPUT, 1, /atom/movable) var/turf/T = get_turf(src) - GET_COMPONENT_FROM(mt, /datum/component/material_container, H) + var/datum/component/material_container/mt = H.GetComponent(/datum/component/material_container) if(!mt) //Invalid input return if(H in view(T)) // This is a camera. It can't examine thngs,that it can't see. diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 83efa6ca..f4456eaf 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -411,7 +411,7 @@ .=..() /obj/item/integrated_circuit/manipulation/matman/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) set_pin_data(IC_OUTPUT, 2, materials.total_amount) for(var/I in 1 to mtypes.len) var/datum/material/M = materials.materials[mtypes[I]] @@ -423,7 +423,7 @@ return TRUE /obj/item/integrated_circuit/manipulation/matman/do_work(ord) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/atom/movable/H = get_pin_data_as_type(IC_INPUT, 1, /atom/movable) if(!check_target(H)) activate_pin(4) @@ -441,7 +441,7 @@ else activate_pin(4) if(2) - GET_COMPONENT_FROM(mt, /datum/component/material_container, H) + var/datum/component/material_container/mt = H.GetComponent(/datum/component/material_container) var/suc for(var/I in 1 to mtypes.len) var/datum/material/M = materials.materials[mtypes[I]] @@ -467,7 +467,7 @@ activate_pin(6) /obj/item/integrated_circuit/manipulation/matman/Destroy() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() .=..() @@ -509,14 +509,14 @@ if(!container || !istype(container,/obj/item/storage) || !Adjacent(container)) return - GET_COMPONENT_FROM(STR, /datum/component/storage, container) + var/datum/component/storage/STR = container.GetComponent(/datum/component/storage) if(!STR) return STR.attackby(src, target_obj) else - GET_COMPONENT_FROM(STR, /datum/component/storage, target_obj.loc) + var/datum/component/storage/STR = target_obj.loc.GetComponent(/datum/component/storage) if(!STR) return diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index e67ce367..892bab04 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -78,7 +78,7 @@ state = 0 if(2) - GET_COMPONENT_FROM(STR, /datum/component/storage, I) + var/datum/component/storage/STR = I.GetComponent(/datum/component/storage) if(is_type_in_list(I, allowed_books)) if(!user.transferItemToLoc(I, src)) return diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 07224d45..4dc2e248 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -95,7 +95,7 @@ process_ore(AM) /obj/machinery/mineral/processing_unit/proc/process_ore(obj/item/stack/ore/O) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/material_amount = materials.get_item_material_amount(O) if(!materials.has_space(material_amount)) unload_mineral(O) @@ -107,7 +107,7 @@ /obj/machinery/mineral/processing_unit/proc/get_machine_data() var/dat = "Smelter control console

" - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] dat += "[M.name]: [M.amount] cm³" @@ -152,7 +152,7 @@ CONSOLE.updateUsrDialog() /obj/machinery/mineral/processing_unit/proc/smelt_ore() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/datum/material/mat = materials.materials[selected_material] if(mat) var/sheets_to_remove = (mat.amount >= (MINERAL_MATERIAL_AMOUNT * SMELT_AMOUNT) ) ? SMELT_AMOUNT : round(mat.amount / MINERAL_MATERIAL_AMOUNT) @@ -175,7 +175,7 @@ on = FALSE return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.use_amount(alloy.materials, amount) generate_mineral(alloy.build_path) @@ -186,7 +186,7 @@ var/build_amount = SMELT_AMOUNT - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/mat_id in D.materials) var/M = D.materials[mat_id] @@ -204,7 +204,7 @@ unload_mineral(O) /obj/machinery/mineral/processing_unit/on_deconstruction() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() ..() diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm index 65cac24d..e0a8b9b5 100644 --- a/code/modules/mining/machine_silo.dm +++ b/code/modules/mining/machine_silo.dm @@ -34,13 +34,13 @@ GLOBAL_LIST_EMPTY(silo_access_logs) var/datum/component/remote_materials/mats = C mats.disconnect_from(src) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() return ..() /obj/machinery/ore_silo/proc/remote_attackby(obj/machinery/M, mob/user, obj/item/stack/I) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) // stolen from /datum/component/material_container/proc/OnAttackBy if(user.a_intent != INTENT_HELP) return @@ -71,7 +71,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) popup.open() /obj/machinery/ore_silo/proc/generate_ui() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/list/ui = list("Ore Silo

Stored Material:

") var/any = FALSE for(var/M in materials.materials) @@ -149,7 +149,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) return TRUE else if(href_list["ejectsheet"]) var/eject_sheet = href_list["ejectsheet"] - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/count = materials.retrieve_sheets(text2num(href_list["eject_amt"]), eject_sheet, drop_location()) var/list/matlist = list() matlist[eject_sheet] = MINERAL_MATERIAL_AMOUNT diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index e7645bd4..f32afb28 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -22,7 +22,7 @@ if(!T) return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/obj/item/stack/sheet/O in T) materials.insert_stack(O, O.amount) @@ -32,7 +32,7 @@ return var/dat = "Coin Press
" - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] if(!M.amount && chosen != mat_id) @@ -65,7 +65,7 @@ if(processing==1) to_chat(usr, "The machine is processing.") return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(href_list["choose"]) if(materials.materials[href_list["choose"]]) chosen = href_list["choose"] diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index f567bd1d..fd5997d3 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -11,7 +11,7 @@ /obj/item/storage/bag/money/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_items = 40 STR.max_combined_w_class = 40 diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index d9ffb88b..4b04c3f2 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -40,7 +40,7 @@ if(iscyborg(user) && user.has_buckled_mobs()) var/mob/living/silicon/robot/R = user - GET_COMPONENT_FROM(riding_datum, /datum/component/riding, R) + var/datum/component/riding/riding_datum = R.GetComponent(/datum/component/riding) if(riding_datum) for(var/mob/M in R.buckled_mobs) riding_datum.force_dismount(M) @@ -61,7 +61,7 @@ if(iscyborg(user) && user.has_buckled_mobs()) var/mob/living/silicon/robot/R = user - GET_COMPONENT_FROM(riding_datum, /datum/component/riding, R) + var/datum/component/riding/riding_datum = R.GetComponent(/datum/component/riding) if(riding_datum) for(var/mob/M in R.buckled_mobs) riding_datum.force_dismount(M) @@ -74,4 +74,4 @@ return user.nextsoundemote = world.time + 7 playsound(user, 'modular_citadel/sound/voice/speen.ogg', 50, 1, -1) - . = ..() \ No newline at end of file + . = ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ef2d7d1e..e08d93fe 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -928,7 +928,7 @@ /mob/living/carbon/do_after_coefficent() . = ..() - GET_COMPONENT_FROM(mood, /datum/component/mood, src) //Currently, only carbons or higher use mood, move this once that changes. + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) //Currently, only carbons or higher use mood, move this once that changes. if(mood) switch(mood.sanity) //Alters do_after delay based on how sane you are if(SANITY_INSANE to SANITY_DISTURBED) @@ -970,7 +970,7 @@ return TRUE if(HAS_TRAIT(src, TRAIT_DUMB)) return TRUE - GET_COMPONENT_FROM(mood, /datum/component/mood, src) + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) if(mood) if(mood.sanity < SANITY_UNSTABLE) return TRUE diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 50ebba9a..fa6cc85f 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -297,7 +297,7 @@ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat) if(HAS_TRAIT(M, TRAIT_FRIENDLY)) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) if (mood.sanity >= SANITY_GREAT) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M) else if (mood.sanity >= SANITY_DISTURBED) @@ -366,7 +366,7 @@ "You hug [src] to make [p_them()] feel better!") SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug) if(HAS_TRAIT(M, TRAIT_FRIENDLY)) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) if (mood.sanity >= SANITY_GREAT) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M) else if (mood.sanity >= SANITY_DISTURBED) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index bef8895e..14ea50a2 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -94,7 +94,7 @@ if(combatmode) . += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]" - GET_COMPONENT_FROM(mood, /datum/component/mood, src) + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) if(mood) switch(mood.shown_mood) if(-INFINITY to MOOD_LEVEL_SAD4) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 415218c4..980d8aeb 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -292,7 +292,7 @@ msg += "[t_He] seem[p_s()] winded.\n" if (getToxLoss() >= 10) msg += "[t_He] seem[p_s()] sickly.\n" - GET_COMPONENT_FROM(mood, /datum/component/mood, src) + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) if(mood.sanity <= SANITY_DISTURBED) msg += "[t_He] seem[p_s()] distressed.\n" SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "empath", /datum/mood_event/sad_empath, src) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index fef4c127..d0f017a4 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1238,7 +1238,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER)) // THEY HUNGER var/hunger_rate = HUNGER_FACTOR - GET_COMPONENT_FROM(mood, /datum/component/mood, H) + var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) if(mood && mood.sanity > SANITY_DISTURBED) hunger_rate *= max(0.5, 1 - 0.002 * mood.sanity) //0.85 to 0.75 @@ -1396,7 +1396,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/grav_force = min(gravity - STANDARD_GRAVITY,3) . += 1 + grav_force - GET_COMPONENT_FROM(mood, /datum/component/mood, H) + var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) if(mood && !flight) //How can depression slow you down if you can just fly away from your problems? switch(mood.sanity) if(SANITY_INSANE to SANITY_CRAZY) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 26015c60..a61f86b6 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -524,7 +524,7 @@ fire_stacks = 0 confused = 0 update_canmove() - GET_COMPONENT(mood, /datum/component/mood) + var/datum/component/mood/mood = GetComponent(/datum/component/mood) if (mood) QDEL_LIST_ASSOC_VAL(mood.mood_events) mood.sanity = SANITY_GREAT diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index f066bdf1..f9cb5102 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1220,7 +1220,7 @@ /mob/living/silicon/robot/unbuckle_mob(mob/user, force=FALSE) if(iscarbon(user)) - GET_COMPONENT(riding_datum, /datum/component/riding) + var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding) if(istype(riding_datum)) riding_datum.unequip_buckle_inhands(user) riding_datum.restore_position(user) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 23ac527b..fdb709fc 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -33,7 +33,7 @@ /mob/living/simple_animal/drone/syndrone/Initialize() . = ..() - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage) + var/datum/component/uplink/hidden_uplink = internal_storage.GetComponent(/datum/component/uplink) hidden_uplink.telecrystals = 10 /mob/living/simple_animal/drone/syndrone/Login() @@ -47,7 +47,7 @@ /mob/living/simple_animal/drone/syndrone/badass/Initialize() . = ..() - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage) + var/datum/component/uplink/hidden_uplink = internal_storage.GetComponent(/datum/component/uplink) hidden_uplink.telecrystals = 30 var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(src) W.implant(src) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 534aacae..689cb51f 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -536,7 +536,7 @@ //ANIMAL RIDING /mob/living/simple_animal/user_buckle_mob(mob/living/M, mob/user) - GET_COMPONENT(riding_datum, /datum/component/riding) + var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding) if(riding_datum) if(user.incapacitated()) return @@ -547,7 +547,7 @@ return ..() /mob/living/simple_animal/relaymove(mob/user, direction) - GET_COMPONENT(riding_datum, /datum/component/riding) + var/datum/component/riding/riding_datum = GetComponent(/datum/component/riding) if(tame && riding_datum) riding_datum.handle_ride(user, direction) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 1d733354..0372f8b9 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -201,7 +201,7 @@ throwforce = 35 playsound(user, 'sound/weapons/saberon.ogg', 5, 1) to_chat(user, "[src] is now active.") - GET_COMPONENT_FROM(butchering, /datum/component/butchering, src) + var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = on update_icon() diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm index b29a9f2a..8361accb 100644 --- a/code/modules/photography/photos/album.dm +++ b/code/modules/photography/photos/album.dm @@ -13,7 +13,7 @@ /obj/item/storage/photo_album/Initialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.can_hold = typecacheof(list(/obj/item/photo)) STR.max_combined_w_class = 42 STR.max_items = 21 diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 567c1873..9c47b62b 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -175,7 +175,7 @@ data["chosenPillStyle"] = chosenPillStyle data["isPillBottleLoaded"] = bottle ? 1 : 0 if(bottle) - GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle) + var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage) data["pillBotContent"] = bottle.contents.len data["pillBotMaxContent"] = STRB.max_items @@ -263,7 +263,7 @@ var/target_loc = bottle ? bottle : drop_location() var/drop_threshold = INFINITY if(bottle) - GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle) + var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage) if(STRB) drop_threshold = STRB.max_items - bottle.contents.len diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index f3df72cd..1475f94f 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -423,7 +423,7 @@ . = 1 /datum/reagent/drug/happiness/addiction_act_stage1(mob/living/M)// all work and no play makes jack a dull boy - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) mood.setSanity(min(mood.sanity, SANITY_DISTURBED)) M.Jitter(5) if(prob(20)) @@ -431,7 +431,7 @@ ..() /datum/reagent/drug/happiness/addiction_act_stage2(mob/living/M) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) mood.setSanity(min(mood.sanity, SANITY_UNSTABLE)) M.Jitter(10) if(prob(30)) @@ -439,7 +439,7 @@ ..() /datum/reagent/drug/happiness/addiction_act_stage3(mob/living/M) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) mood.setSanity(min(mood.sanity, SANITY_CRAZY)) M.Jitter(15) if(prob(40)) @@ -447,7 +447,7 @@ ..() /datum/reagent/drug/happiness/addiction_act_stage4(mob/living/carbon/human/M) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) mood.setSanity(SANITY_INSANE) M.Jitter(20) if(prob(50)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 88b0fe4e..538eb868 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1444,7 +1444,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) M.dizziness = max(0, M.dizziness-6) M.confused = max(0, M.confused-6) M.disgust = max(0, M.disgust-6) - GET_COMPONENT_FROM(mood, /datum/component/mood, M) + var/datum/component/mood/mood = M.GetComponent(/datum/component/mood) if(mood.sanity <= SANITY_NEUTRAL) // only take effect if in negative sanity and then... mood.setSanity(min(mood.sanity+5, SANITY_NEUTRAL)) // set minimum to prevent unwanted spiking over neutral ..() diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index a7d95ba7..145d85cf 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -277,7 +277,7 @@ /obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type. var/obj/item/storage/bag/trash/T = I - GET_COMPONENT_FROM(STR, /datum/component/storage, T) + var/datum/component/storage/STR = T.GetComponent(/datum/component/storage) to_chat(user, "You empty the bag.") for(var/obj/item/O in T.contents) STR.remove_from_storage(O,src) diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm index 624d5e0e..348e687e 100644 --- a/code/modules/recycling/disposal/construction.dm +++ b/code/modules/recycling/disposal/construction.dm @@ -29,7 +29,7 @@ pipename = initial(pipe_type.name) if(flip) - GET_COMPONENT(rotcomp,/datum/component/simple_rotation) + var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) rotcomp.BaseRot(null,ROTATION_FLIP) update_icon() diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 9b039695..c5bc78dd 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -422,7 +422,7 @@ if(exp == SCANTYPE_OBLITERATE) visible_message("[exp_on] activates the crushing mechanism, [exp_on] is destroyed!") if(linked_console.linked_lathe) - GET_COMPONENT_FROM(linked_materials, /datum/component/material_container, linked_console.linked_lathe) + var/datum/component/material_container/linked_materials = linked_console.linked_lathe.GetComponent(/datum/component/material_container) for(var/material in exp_on.materials) linked_materials.insert_amount( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.materials[material])), material) if(prob(EFFECT_PROB_LOW) && criticalReaction) diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index b28f1676..0099fe14 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -58,9 +58,7 @@ var/mob/living/carbon/human/H = M if(H.mind && !HAS_TRAIT(H, TRAIT_AGEUSIA)) to_chat(H,"That didn't taste very good...") //No disgust, though. It's just not good tasting. - GET_COMPONENT_FROM(mood, /datum/component/mood, H) - if(mood) - mood.add_event(null,"gross_food", /datum/mood_event/gross_food) + SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "gross_food", /datum/mood_event/gross_food) last_check_time = world.time return ..() diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 91243e04..beaaa51a 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -290,7 +290,7 @@ All ShuttleMove procs go here // ignores the movement of the shuttle from the staging area on CentCom to // the station as it is loaded in. if (oldT && !is_centcom_level(oldT.z)) - GET_COMPONENT(STR, /datum/component/storage/concrete/emergency) + var/datum/component/storage/concrete/emergency/STR = GetComponent(/datum/component/storage/concrete/emergency) STR?.unlock_me() /************************************Mob move procs************************************/ diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index df8ce65b..6117767e 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -917,7 +917,7 @@ speaktrigger += "[(H.client?.prefs.lewdchem?"You are my whole world and all of my being belongs to you, ":"I cannot think of anything else but aiding your cause, ")] "//Redflags!! //mood - GET_COMPONENT_FROM(mood, /datum/component/mood, H) + var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) switch(mood.sanity) if(SANITY_GREAT to INFINITY) speaktrigger += "I'm beyond elated!! " //did you mean byond elated? hohoho diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm index 95a3745c..2bcfb40c 100644 --- a/code/modules/uplink/uplink_devices.dm +++ b/code/modules/uplink/uplink_devices.dm @@ -25,18 +25,18 @@ /obj/item/uplink/nuclear/Initialize() . = ..() - GET_COMPONENT(hidden_uplink, /datum/component/uplink) + var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) hidden_uplink.set_gamemode(/datum/game_mode/nuclear) /obj/item/uplink/nuclear_restricted/Initialize() . = ..() - GET_COMPONENT(hidden_uplink, /datum/component/uplink) + var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) hidden_uplink.allow_restricted = FALSE hidden_uplink.set_gamemode(/datum/game_mode/nuclear) /obj/item/uplink/clownop/Initialize() . = ..() - GET_COMPONENT(hidden_uplink, /datum/component/uplink) + var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) hidden_uplink.set_gamemode(/datum/game_mode/nuclear/clown_ops) /obj/item/uplink/old @@ -45,7 +45,7 @@ /obj/item/uplink/old/Initialize(mapload, owner, tc_amount = 10) . = ..() - GET_COMPONENT(hidden_uplink, /datum/component/uplink) + var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) hidden_uplink.name = "dusty radio" // Multitool uplink diff --git a/hyperstation/code/gamemode/traitor_lewd.dm b/hyperstation/code/gamemode/traitor_lewd.dm index 5b1c1f78..4906e4b4 100644 --- a/hyperstation/code/gamemode/traitor_lewd.dm +++ b/hyperstation/code/gamemode/traitor_lewd.dm @@ -190,7 +190,7 @@ GLOBAL_LIST_INIT(hyper_special_roles, list( if(should_equip) equip(silent) for(var/obj/I in owner.current.GetAllContents()) - GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + var/datum/component/uplink/hidden_uplink = I.GetComponent(/datum/component/uplink) if(hidden_uplink) lewd_uplink_list = get_custom_uplink_items(lewd_uplink_list_raw, /datum/game_mode/traitor/lewd, TRUE, FALSE) hidden_uplink.uplink_items = lewd_uplink_list diff --git a/hyperstation/code/mobs/hugbot.dm b/hyperstation/code/mobs/hugbot.dm index 89d7acbe..26665662 100644 --- a/hyperstation/code/mobs/hugbot.dm +++ b/hyperstation/code/mobs/hugbot.dm @@ -123,7 +123,7 @@ if(ishuman(C)) var/mob/living/carbon/human/H = C - GET_COMPONENT_FROM(mood, /datum/component/mood, H) + var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) if(emagged != 2) // EVERYONE GETS HUGS! for(var/datum/mood_event/i in mood.mood_events) if (i.description == "Hugs are nice.\n" ) diff --git a/modular_citadel/code/game/machinery/toylathe.dm b/modular_citadel/code/game/machinery/toylathe.dm index 903235c7..aa8b8cd1 100644 --- a/modular_citadel/code/game/machinery/toylathe.dm +++ b/modular_citadel/code/game/machinery/toylathe.dm @@ -69,7 +69,7 @@ popup.open() /obj/machinery/autoylathe/on_deconstruction() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() /obj/machinery/autoylathe/attackby(obj/item/O, mob/user, params) @@ -157,7 +157,7 @@ var/plastic_cost = being_built.materials[MAT_PLASTIC] var/power = max(2000, (metal_cost+glass_cost+plastic_cost)*multiplier/5) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff) && (materials.amount(MAT_PLASTIC) >= plastic_cost*multiplier*coeff)) busy = TRUE use_power(power) @@ -181,7 +181,7 @@ return /obj/machinery/autoylathe/proc/make_item(power, metal_cost, glass_cost, plastic_cost, multiplier, coeff, is_stack) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/atom/A = drop_location() use_power(power) var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier, MAT_PLASTIC=plastic_cost*coeff*multiplier) @@ -205,7 +205,7 @@ var/T = 0 for(var/obj/item/stock_parts/matter_bin/MB in component_parts) T += MB.rating*75000 - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.max_amount = T T=1.2 for(var/obj/item/stock_parts/manipulator/M in component_parts) @@ -254,7 +254,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -286,7 +286,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -301,7 +301,7 @@ return dat /obj/machinery/autoylathe/proc/materials_printout() - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] @@ -314,7 +314,7 @@ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount))) return FALSE if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount))) diff --git a/modular_citadel/code/game/objects/items/storage/firstaid.dm b/modular_citadel/code/game/objects/items/storage/firstaid.dm index 125330a9..95c88ecc 100644 --- a/modular_citadel/code/game/objects/items/storage/firstaid.dm +++ b/modular_citadel/code/game/objects/items/storage/firstaid.dm @@ -49,7 +49,7 @@ /obj/item/storage/hypospraykit/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 12 STR.can_hold = typecacheof(list( /obj/item/hypospray/mkii, @@ -151,7 +151,7 @@ /obj/item/storage/hypospraykit/cmo/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list( /obj/item/hypospray/mkii, diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index a2792f0c..66c43f2b 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -142,7 +142,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! /obj/item/storage/bag/borgdelivery/ComponentInitialize() . = ..() - GET_COMPONENT(STR, /datum/component/storage) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_BULKY STR.max_combined_w_class = 5 STR.max_items = 1 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index 4cb8ea0c..5435552a 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -182,7 +182,7 @@ /datum/reagent/fermi/nanite_b_gone/on_mob_life(mob/living/carbon/C) //var/component/nanites/N = M.GetComponent(/datum/component/nanites) - GET_COMPONENT_FROM(N, /datum/component/nanites, C) + var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites) if(isnull(N)) return ..() N.nanite_volume = -purity//0.5 seems to be the default to me, so it'll neuter them. @@ -190,7 +190,7 @@ /datum/reagent/fermi/nanite_b_gone/overdose_process(mob/living/carbon/C) //var/component/nanites/N = M.GetComponent(/datum/component/nanites) - GET_COMPONENT_FROM(N, /datum/component/nanites, C) + var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites) if(prob(5)) to_chat(C, "The residual voltage from the nanites causes you to seize up!
") C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) diff --git a/modular_citadel/code/modules/vehicles/secway.dm b/modular_citadel/code/modules/vehicles/secway.dm index 85c1de15..9320da6d 100644 --- a/modular_citadel/code/modules/vehicles/secway.dm +++ b/modular_citadel/code/modules/vehicles/secway.dm @@ -24,7 +24,7 @@ if(H.sprinting && charge) charge-- new_speed = chargespeed - GET_COMPONENT(D, /datum/component/riding) + var/datum/component/riding/D = GetComponent(/datum/component/riding) D.vehicle_move_delay = new_speed for(var/i in progressbars_by_rider) var/datum/progressbar/B = progressbars_by_rider[i] From e7f549b57e1156f7c3df8039c968793a1abc5295 Mon Sep 17 00:00:00 2001 From: Dip Date: Tue, 27 Oct 2020 15:50:24 -0300 Subject: [PATCH 5/7] A proper alert for ghost role character appearance loading --- hyperstation/code/modules/mob/mob_helpers.dm | 41 ++++++++++---------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/hyperstation/code/modules/mob/mob_helpers.dm b/hyperstation/code/modules/mob/mob_helpers.dm index 5c5229ab..a02975fc 100644 --- a/hyperstation/code/modules/mob/mob_helpers.dm +++ b/hyperstation/code/modules/mob/mob_helpers.dm @@ -5,23 +5,24 @@ mob/proc/checkloadappearance() SEND_SOUND(H, 'sound/misc/server-ready.ogg') to_chat(H, "This ghost role allows you to select your loaded character's appearance. Make sure you have your ID in your ID slot, if you have one.") if(alert(H, "Would you like to load your currently loaded character's appearance?", "This can only be done up until 90s after you spawn.", "Yes", "No") == "Yes" && world.time <= (H.time_initialized + 900)) - H.client.prefs.copy_to(H) - if (H.custom_body_size) //Do they have a custom size set? - H.resize(H.custom_body_size * 0.01) - H.real_name = H.client.prefs.real_name - H.mind.name = H.real_name //Makes sure to change their mind name to their real name. - SSquirks.AssignQuirks(H, H.client, TRUE, FALSE, H.job, FALSE)//This Assigns the selected character's quirks - H.dna.update_dna_identity() //This makes sure their DNA is updated. - var/obj/item/card/id/idCard = H.get_idcard() //Time to change their ID card as well if they have one. - if (idCard != null) - idCard.update_label(H.real_name, idCard.assignment) - idCard.registered_name = H.real_name - H.mirrorcanloadappearance = FALSE //Prevents them from using the mirror again. - SEND_SOUND(H, 'sound/magic/charge.ogg') //Fluff - to_chat(H, "Your head aches for a second. You feel like this is how things should have been.") - log_game("[key_name(H)] has loaded their default appearance for a ghost role.") - message_admins("[ADMIN_LOOKUPFLW(H)] has loaded their default appearance for a ghost role.") - return - else - to_chat(H, "You either took too long or chose not to change. Alrighty. Remember, you have 90 seconds from spawn to get to a mirror and still do it if you wish.") - return + if(alert(H, "You should only load a character that has not currently died in the round. Do you accept this?", "Warning", "Yes", "No") == "Yes" && world.time <= (H.time_initialized + 900)) + H.client.prefs.copy_to(H) + if (H.custom_body_size) //Do they have a custom size set? + H.resize(H.custom_body_size * 0.01) + H.real_name = H.client.prefs.real_name + H.mind.name = H.real_name //Makes sure to change their mind name to their real name. + SSquirks.AssignQuirks(H, H.client, TRUE, FALSE, H.job, FALSE)//This Assigns the selected character's quirks + H.dna.update_dna_identity() //This makes sure their DNA is updated. + var/obj/item/card/id/idCard = H.get_idcard() //Time to change their ID card as well if they have one. + if (idCard != null) + idCard.update_label(H.real_name, idCard.assignment) + idCard.registered_name = H.real_name + H.mirrorcanloadappearance = FALSE //Prevents them from using the mirror again. + SEND_SOUND(H, 'sound/magic/charge.ogg') //Fluff + to_chat(H, "Your head aches for a second. You feel like this is how things should have been.") + log_game("[key_name(H)] has loaded their default appearance for a ghost role.") + message_admins("[ADMIN_LOOKUPFLW(H)] has loaded their default appearance for a ghost role.") + return + else + to_chat(H, "You either took too long or chose not to change. Alrighty. Remember, you have 90 seconds from spawn to get to a mirror and still do it if you wish.") + return From 2ae2449f4b64572e0210b180e14123dfc4239d13 Mon Sep 17 00:00:00 2001 From: Dip Date: Tue, 27 Oct 2020 16:34:53 -0300 Subject: [PATCH 6/7] the pipening --- .../unary_devices/outlet_injector.dm | 6 +- .../machinery/pipes/layermanifold.dm | 4 +- .../atmospherics/machinery/pipes/manifold.dm | 4 +- .../machinery/pipes/manifold4w.dm | 4 +- .../atmospherics/machinery/pipes/pipes.dm | 8 + .../atmospherics/machinery/pipes/simple.dm | 373 ------------------ 6 files changed, 19 insertions(+), 380 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 87ab4fa6..73f32957 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -190,7 +190,7 @@ icon_state = "inje_map-1" /obj/machinery/atmospherics/components/unary/outlet_injector/layer3 - piping_layer = 2 + piping_layer = 3 icon_state = "inje_map-2" /obj/machinery/atmospherics/components/unary/outlet_injector/on @@ -201,7 +201,7 @@ icon_state = "inje_map-1" /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3 - piping_layer = 2 + piping_layer = 3 icon_state = "inje_map-2" /obj/machinery/atmospherics/components/unary/outlet_injector/atmos @@ -241,4 +241,4 @@ id = ATMOS_GAS_MONITOR_INPUT_INCINERATOR /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input name = "toxins mixing input injector" - id = ATMOS_GAS_MONITOR_INPUT_TOXINS_LAB \ No newline at end of file + id = ATMOS_GAS_MONITOR_INPUT_TOXINS_LAB diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index b9809858..33092f53 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -128,7 +128,7 @@ if(initialize_directions & dir) return ..() if((NORTH|EAST) & dir) - user.ventcrawl_layer = CLAMP(user.ventcrawl_layer + 1, PIPING_LAYER_MIN, PIPING_LAYER_MAX) + user.ventcrawl_layer = clamp(user.ventcrawl_layer + 1, PIPING_LAYER_MIN, PIPING_LAYER_MAX) if((SOUTH|WEST) & dir) - user.ventcrawl_layer = CLAMP(user.ventcrawl_layer - 1, PIPING_LAYER_MIN, PIPING_LAYER_MAX) + user.ventcrawl_layer = clamp(user.ventcrawl_layer - 1, PIPING_LAYER_MIN, PIPING_LAYER_MAX) to_chat(user, "You align yourself with the [user.ventcrawl_layer]\th output.") diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm index 77452fd6..3f061e37 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold.dm @@ -28,6 +28,8 @@ /obj/machinery/atmospherics/pipe/manifold/update_icon() cut_overlays() + if(!center) + center = mutable_appearance(icon, "manifold_center") PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) add_overlay(center) @@ -36,4 +38,4 @@ if(nodes[i]) add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) update_layer() - update_alpha() \ No newline at end of file + update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm index 1bcca8d5..bbceff56 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm @@ -26,6 +26,8 @@ /obj/machinery/atmospherics/pipe/manifold4w/update_icon() cut_overlays() + if(!center) + center = mutable_appearance(icon, "manifold_center") PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) add_overlay(center) @@ -34,4 +36,4 @@ if(nodes[i]) add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) update_layer() - update_alpha() \ No newline at end of file + update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index 1e513b84..15615b8e 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -64,6 +64,7 @@ /obj/machinery/atmospherics/pipe/analyzer_act(mob/living/user, obj/item/I) atmosanalyzer_scan(parent.air, user, src) + return TRUE /obj/machinery/atmospherics/pipe/returnPipenet() return parent @@ -111,3 +112,10 @@ pipe_color = paint_color update_node_icon() return TRUE + +/obj/machinery/atmospherics/pipe/attack_ghost(mob/dead/observer/O) + . = ..() + if(parent) + atmosanalyzer_scan(parent.air, O, src, FALSE) + else + to_chat(O, "[src] doesn't have a pipenet, which is probably a bug.") diff --git a/code/modules/atmospherics/machinery/pipes/simple.dm b/code/modules/atmospherics/machinery/pipes/simple.dm index 34df0628..40afb39e 100644 --- a/code/modules/atmospherics/machinery/pipes/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/simple.dm @@ -27,379 +27,6 @@ if(EAST, WEST) initialize_directions = EAST|WEST -//Colored pipes, use these for mapping -/obj/machinery/atmospherics/pipe/simple/general - -/obj/machinery/atmospherics/pipe/simple/general/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/general/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/general/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers - name="scrubbers pipe" - pipe_color=rgb(255,0,0) - color=rgb(255,0,0) - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply - name="air supply pipe" - pipe_color=rgb(0,0,255) - color=rgb(0,0,255) - -/obj/machinery/atmospherics/pipe/simple/supply/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain - name="main air supply pipe" - pipe_color=rgb(130,43,255) - color=rgb(130,43,255) - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow - pipe_color=rgb(255,198,0) - color=rgb(255,198,0) - -/obj/machinery/atmospherics/pipe/simple/yellow/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan - pipe_color=rgb(0,255,249) - color=rgb(0,255,249) - -/obj/machinery/atmospherics/pipe/simple/cyan/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green - pipe_color=rgb(30,255,0) - color=rgb(30,255,0) - -/obj/machinery/atmospherics/pipe/simple/green/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/green/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange - pipe_color=rgb(255,129,25) - color=rgb(255,129,25) - -/obj/machinery/atmospherics/pipe/simple/orange/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple - pipe_color=rgb(128,0,182) - color=rgb(128,0,182) - -/obj/machinery/atmospherics/pipe/simple/purple/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark - pipe_color=rgb(69,69,69) - color=rgb(69,69,69) - -/obj/machinery/atmospherics/pipe/simple/dark/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet - pipe_color=rgb(64,0,128) - color=rgb(64,0,128) - -/obj/machinery/atmospherics/pipe/simple/violet/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/violet/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown - pipe_color=rgb(178,100,56) - color=rgb(178,100,56) - -/obj/machinery/atmospherics/pipe/simple/brown/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y /obj/machinery/atmospherics/pipe/simple/update_icon() icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" update_layer() From fb7f3be4e4c66996b6d1d9bf6835f7ff54c00b13 Mon Sep 17 00:00:00 2001 From: Dip Date: Tue, 27 Oct 2020 16:58:33 -0300 Subject: [PATCH 7/7] icon layer --- .../machinery/components/unary_devices/outlet_injector.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 73f32957..856cf659 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -191,7 +191,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/layer3 piping_layer = 3 - icon_state = "inje_map-2" + icon_state = "inje_map-3" /obj/machinery/atmospherics/components/unary/outlet_injector/on on = TRUE @@ -202,7 +202,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3 piping_layer = 3 - icon_state = "inje_map-2" + icon_state = "inje_map-3" /obj/machinery/atmospherics/components/unary/outlet_injector/atmos frequency = FREQ_ATMOS_STORAGE