From f78800a248123da7b45bdecd664b5e8f46f333ff Mon Sep 17 00:00:00 2001 From: Nanai Date: Mon, 30 Sep 2013 02:02:49 -0400 Subject: [PATCH 001/178] Minor Food Fix: Made basic salad nonhallucinogenic, uses 2 cabbage 1 tomato 1 carrot 1 apple for recipe. Moved Valid Salad's Doctor's Delight to the Aesir Salad. --- code/modules/food/recipes_microwave.dm | 15 ++++++--------- .../reagents/reagent_containers/food/snacks.dm | 10 +++++----- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 4260c13da9..ec4ccf50f5 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -1107,18 +1107,15 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/appletart -/datum/recipe/herbsalad +/datum/recipe/tossedsalad items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, + /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, + /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, /obj/item/weapon/reagent_containers/food/snacks/grown/apple, ) - result = /obj/item/weapon/reagent_containers/food/snacks/herbsalad - make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/herbsalad/being_cooked = ..(container) - being_cooked.reagents.del_reagent("toxin") - return being_cooked + result = /obj/item/weapon/reagent_containers/food/snacks/tossedsalad /datum/recipe/aesirsalad items = list( diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index c6817a2830..814567f879 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -258,6 +258,7 @@ New() ..() reagents.add_reagent("nutriment", 8) + reagents.add_reagent("doctorsdelight", 8) reagents.add_reagent("tricordrazine", 8) bitesize = 3 @@ -1812,9 +1813,9 @@ reagents.add_reagent("nutriment", 8) bitesize = 2 -/obj/item/weapon/reagent_containers/food/snacks/herbsalad - name = "herb salad" - desc = "A tasty salad with apples on top." +/obj/item/weapon/reagent_containers/food/snacks/tossedsalad + name = "tossed salad" + desc = "A proper salad, basic and simple, with little bits of carrot, tomato and apple intermingled. Vegan!" icon_state = "herbsalad" trash = /obj/item/trash/snack_bowl New() @@ -1824,13 +1825,12 @@ /obj/item/weapon/reagent_containers/food/snacks/validsalad name = "valid salad" - desc = "It's just an herb salad with meatballs and fried potato slices. Nothing suspicious about it." + desc = "It's just a salad of questionable 'herbs' with meatballs and fried potato slices. Nothing suspicious about it." icon_state = "validsalad" trash = /obj/item/trash/snack_bowl New() ..() reagents.add_reagent("nutriment", 8) - reagents.add_reagent("doctorsdelight", 5) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/appletart From f3028d3edd7f09da3d850d51831cdd79829db7c9 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 16 Oct 2013 11:28:41 +0400 Subject: [PATCH 002/178] Attempted fix #3769 Var is fine in one line, null in next one. Cannot feasibly prevent that without slapping nullcheck before EVERY mention on that var, so going to just add some sanity checks and call it a day --- baystation12.int | 1 + code/game/objects/structures/tables_racks.dm | 1 + 2 files changed, 2 insertions(+) diff --git a/baystation12.int b/baystation12.int index 29f9e64646..b82874fded 100644 --- a/baystation12.int +++ b/baystation12.int @@ -1,5 +1,6 @@ // BEGIN_INTERNALS /* +MAP_ICON_TYPE: 0 AUTO_FILE_DIR: OFF */ // END_INTERNALS diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 84bb23a574..58ed13b9d9 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -348,6 +348,7 @@ /obj/structure/table/attackby(obj/item/W as obj, mob/user as mob) + if (!W) return if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2) var/obj/item/weapon/grab/G = W if (istype(G.affecting, /mob/living)) From 55ea60a7858a56bbc726981baf6b27c2ce89383c Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 16 Oct 2013 12:50:40 +0400 Subject: [PATCH 003/178] Fixed derpy type of psych couch --- code/game/objects/structures/stool_bed_chair_nest/bed.dm | 3 +-- maps/tgstation2.dmm | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 7339c88646..f18b944b60 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -13,11 +13,10 @@ icon_state = "bed" var/mob/living/buckled_mob -/obj/structure/stool/psychbed +/obj/structure/stool/bed/psych name = "psych bed" desc = "For prime comfort during psychiatric evaluations." icon_state = "psychbed" - var/mob/living/buckled_mob /obj/structure/stool/bed/alien name = "resting contraption" diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 5689964c3a..ebcf115218 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -3874,7 +3874,7 @@ "bwz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bwA" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bwB" = (/obj/machinery/vending/wallmed1{pixel_y = 28},/turf/simulated/floor{icon_state = "bcarpet02"},/area/medical/medbay{name = "Psychiatric Office"}) -"bwC" = (/obj/structure/noticeboard{pixel_y = 28},/obj/structure/stool/psychbed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor{icon_state = "bcarpet02"},/area/medical/medbay{name = "Psychiatric Office"}) +"bwC" = (/obj/structure/noticeboard{pixel_y = 28},/obj/structure/stool/bed/psych,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor{icon_state = "bcarpet02"},/area/medical/medbay{name = "Psychiatric Office"}) "bwD" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Medical_Psychiatry"; name = "Privacy Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay{name = "Psychiatric Office"}) "bwE" = (/obj/machinery/alarm{pixel_y = 24},/obj/structure/stool/bed/chair/comfy/brown,/turf/simulated/floor{icon_state = "bcarpet01"},/area/medical/medbay{name = "Psychiatric Office"}) "bwF" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) From 930a30cfd0b8acd3ff67347aeabb14535ff3ef78 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 16 Oct 2013 12:51:30 +0400 Subject: [PATCH 004/178] Moved stuff from /structure to /obj/structure because I am tired of accidently going inside of it for unused file and empty file --- code/game/objects/structures/flora.dm | 51 ++++--- code/game/structure/flora.dm | 196 -------------------------- code/game/structure/structure.dm | 0 3 files changed, 28 insertions(+), 219 deletions(-) delete mode 100644 code/game/structure/flora.dm delete mode 100644 code/game/structure/structure.dm diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 23d1e593dd..94f875f194 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -12,8 +12,8 @@ icon_state = "pine_1" /obj/structure/flora/tree/pine/New() - ..() icon_state = "pine_[rand(1, 3)]" + ..() /obj/structure/flora/tree/pine/xmas name = "xmas tree" @@ -29,8 +29,8 @@ icon_state = "tree_1" /obj/structure/flora/tree/dead/New() - ..() icon_state = "tree_[rand(1, 6)]" + ..() //grass @@ -43,23 +43,23 @@ icon_state = "snowgrass1bb" /obj/structure/flora/grass/brown/New() - ..() icon_state = "snowgrass[rand(1, 3)]bb" + ..() /obj/structure/flora/grass/green icon_state = "snowgrass1gb" /obj/structure/flora/grass/green/New() - ..() icon_state = "snowgrass[rand(1, 3)]gb" + ..() /obj/structure/flora/grass/both icon_state = "snowgrassall1" /obj/structure/flora/grass/both/New() - ..() icon_state = "snowgrassall[rand(1, 3)]" + ..() //bushes @@ -70,8 +70,13 @@ anchored = 1 /obj/structure/flora/bush/New() - ..() icon_state = "snowbush[rand(1, 6)]" + ..() + +/obj/structure/flora/pottedplant + name = "potted plant" + icon = 'icons/obj/plants.dmi' + icon_state = "plant-26" //newbushes @@ -82,110 +87,110 @@ anchored = 1 /obj/structure/flora/ausbushes/New() - ..() icon_state = "firstbush_[rand(1, 4)]" + ..() /obj/structure/flora/ausbushes/reedbush icon_state = "reedbush_1" /obj/structure/flora/ausbushes/reedbush/New() - ..() icon_state = "reedbush_[rand(1, 4)]" + ..() /obj/structure/flora/ausbushes/leafybush icon_state = "leafybush_1" /obj/structure/flora/ausbushes/leafybush/New() - ..() icon_state = "leafybush_[rand(1, 3)]" + ..() /obj/structure/flora/ausbushes/palebush icon_state = "palebush_1" /obj/structure/flora/ausbushes/palebush/New() - ..() icon_state = "palebush_[rand(1, 4)]" + ..() /obj/structure/flora/ausbushes/stalkybush icon_state = "stalkybush_1" /obj/structure/flora/ausbushes/stalkybush/New() - ..() icon_state = "stalkybush_[rand(1, 3)]" + ..() /obj/structure/flora/ausbushes/grassybush icon_state = "grassybush_1" /obj/structure/flora/ausbushes/grassybush/New() - ..() icon_state = "grassybush_[rand(1, 4)]" + ..() /obj/structure/flora/ausbushes/fernybush icon_state = "fernybush_1" /obj/structure/flora/ausbushes/fernybush/New() - ..() icon_state = "fernybush_[rand(1, 3)]" + ..() /obj/structure/flora/ausbushes/sunnybush icon_state = "sunnybush_1" /obj/structure/flora/ausbushes/sunnybush/New() - ..() icon_state = "sunnybush_[rand(1, 3)]" + ..() /obj/structure/flora/ausbushes/genericbush icon_state = "genericbush_1" /obj/structure/flora/ausbushes/genericbush/New() - ..() icon_state = "genericbush_[rand(1, 4)]" + ..() /obj/structure/flora/ausbushes/pointybush icon_state = "pointybush_1" /obj/structure/flora/ausbushes/pointybush/New() - ..() icon_state = "pointybush_[rand(1, 4)]" + ..() /obj/structure/flora/ausbushes/lavendergrass icon_state = "lavendergrass_1" /obj/structure/flora/ausbushes/lavendergrass/New() - ..() icon_state = "lavendergrass_[rand(1, 4)]" + ..() /obj/structure/flora/ausbushes/ywflowers icon_state = "ywflowers_1" /obj/structure/flora/ausbushes/ywflowers/New() - ..() icon_state = "ywflowers_[rand(1, 3)]" + ..() /obj/structure/flora/ausbushes/brflowers icon_state = "brflowers_1" /obj/structure/flora/ausbushes/brflowers/New() - ..() icon_state = "brflowers_[rand(1, 3)]" + ..() /obj/structure/flora/ausbushes/ppflowers icon_state = "ppflowers_1" /obj/structure/flora/ausbushes/ppflowers/New() - ..() icon_state = "ppflowers_[rand(1, 4)]" + ..() /obj/structure/flora/ausbushes/sparsegrass icon_state = "sparsegrass_1" /obj/structure/flora/ausbushes/sparsegrass/New() - ..() icon_state = "sparsegrass_[rand(1, 3)]" + ..() /obj/structure/flora/ausbushes/fullgrass icon_state = "fullgrass_1" /obj/structure/flora/ausbushes/fullgrass/New() - ..() - icon_state = "fullgrass_[rand(1, 3)]" \ No newline at end of file + icon_state = "fullgrass_[rand(1, 3)]" + ..() \ No newline at end of file diff --git a/code/game/structure/flora.dm b/code/game/structure/flora.dm deleted file mode 100644 index 92aadd4529..0000000000 --- a/code/game/structure/flora.dm +++ /dev/null @@ -1,196 +0,0 @@ -//trees -/obj/structure/flora/tree - name = "tree" - anchored = 1 - density = 1 - pixel_x = -16 - layer = 9 - -/obj/structure/flora/tree/pine - name = "pine tree" - icon = 'icons/obj/flora/pinetrees.dmi' - icon_state = "pine_1" - -/obj/structure/flora/tree/pine/New() - icon_state = "pine_[rand(1, 3)]" - ..() - -/obj/structure/flora/tree/pine/xmas - name = "xmas tree" - icon = 'icons/obj/flora/pinetrees.dmi' - icon_state = "pine_c" - -/obj/structure/flora/tree/pine/xmas/New() - ..() - icon_state = "pine_c" - -/obj/structure/flora/tree/dead - icon = 'icons/obj/flora/deadtrees.dmi' - icon_state = "tree_1" - -/obj/structure/flora/tree/dead/New() - icon_state = "tree_[rand(1, 6)]" - ..() - - -//grass -/obj/structure/flora/grass - name = "grass" - icon = 'icons/obj/flora/snowflora.dmi' - anchored = 1 - -/obj/structure/flora/grass/brown - icon_state = "snowgrass1bb" - -/obj/structure/flora/grass/brown/New() - icon_state = "snowgrass[rand(1, 3)]bb" - ..() - - -/obj/structure/flora/grass/green - icon_state = "snowgrass1gb" - -/obj/structure/flora/grass/green/New() - icon_state = "snowgrass[rand(1, 3)]gb" - ..() - -/obj/structure/flora/grass/both - icon_state = "snowgrassall1" - -/obj/structure/flora/grass/both/New() - icon_state = "snowgrassall[rand(1, 3)]" - ..() - - -//bushes -/obj/structure/flora/bush - name = "bush" - icon = 'icons/obj/flora/snowflora.dmi' - icon_state = "snowbush1" - anchored = 1 - -/obj/structure/flora/bush/New() - icon_state = "snowbush[rand(1, 6)]" - ..() - -/obj/structure/flora/pottedplant - name = "potted plant" - icon = 'icons/obj/plants.dmi' - icon_state = "plant-26" - -//newbushes - -/obj/structure/flora/ausbushes - name = "bush" - icon = 'icons/obj/flora/ausflora.dmi' - icon_state = "firstbush_1" - anchored = 1 - -/obj/structure/flora/ausbushes/New() - icon_state = "firstbush_[rand(1, 4)]" - ..() - -/obj/structure/flora/ausbushes/reedbush - icon_state = "reedbush_1" - -/obj/structure/flora/ausbushes/reedbush/New() - icon_state = "reedbush_[rand(1, 4)]" - ..() - -/obj/structure/flora/ausbushes/leafybush - icon_state = "leafybush_1" - -/obj/structure/flora/ausbushes/leafybush/New() - icon_state = "leafybush_[rand(1, 3)]" - ..() - -/obj/structure/flora/ausbushes/palebush - icon_state = "palebush_1" - -/obj/structure/flora/ausbushes/palebush/New() - icon_state = "palebush_[rand(1, 4)]" - ..() - -/obj/structure/flora/ausbushes/stalkybush - icon_state = "stalkybush_1" - -/obj/structure/flora/ausbushes/stalkybush/New() - icon_state = "stalkybush_[rand(1, 3)]" - ..() - -/obj/structure/flora/ausbushes/grassybush - icon_state = "grassybush_1" - -/obj/structure/flora/ausbushes/grassybush/New() - icon_state = "grassybush_[rand(1, 4)]" - ..() - -/obj/structure/flora/ausbushes/fernybush - icon_state = "fernybush_1" - -/obj/structure/flora/ausbushes/fernybush/New() - icon_state = "fernybush_[rand(1, 3)]" - ..() - -/obj/structure/flora/ausbushes/sunnybush - icon_state = "sunnybush_1" - -/obj/structure/flora/ausbushes/sunnybush/New() - icon_state = "sunnybush_[rand(1, 3)]" - ..() - -/obj/structure/flora/ausbushes/genericbush - icon_state = "genericbush_1" - -/obj/structure/flora/ausbushes/genericbush/New() - icon_state = "genericbush_[rand(1, 4)]" - ..() - -/obj/structure/flora/ausbushes/pointybush - icon_state = "pointybush_1" - -/obj/structure/flora/ausbushes/pointybush/New() - icon_state = "pointybush_[rand(1, 4)]" - ..() - -/obj/structure/flora/ausbushes/lavendergrass - icon_state = "lavendergrass_1" - -/obj/structure/flora/ausbushes/lavendergrass/New() - icon_state = "lavendergrass_[rand(1, 4)]" - ..() - -/obj/structure/flora/ausbushes/ywflowers - icon_state = "ywflowers_1" - -/obj/structure/flora/ausbushes/ywflowers/New() - icon_state = "ywflowers_[rand(1, 3)]" - ..() - -/obj/structure/flora/ausbushes/brflowers - icon_state = "brflowers_1" - -/obj/structure/flora/ausbushes/brflowers/New() - icon_state = "brflowers_[rand(1, 3)]" - ..() - -/obj/structure/flora/ausbushes/ppflowers - icon_state = "ppflowers_1" - -/obj/structure/flora/ausbushes/ppflowers/New() - icon_state = "ppflowers_[rand(1, 4)]" - ..() - -/obj/structure/flora/ausbushes/sparsegrass - icon_state = "sparsegrass_1" - -/obj/structure/flora/ausbushes/sparsegrass/New() - icon_state = "sparsegrass_[rand(1, 3)]" - ..() - -/obj/structure/flora/ausbushes/fullgrass - icon_state = "fullgrass_1" - -/obj/structure/flora/ausbushes/fullgrass/New() - icon_state = "fullgrass_[rand(1, 3)]" - ..() \ No newline at end of file diff --git a/code/game/structure/structure.dm b/code/game/structure/structure.dm deleted file mode 100644 index e69de29bb2..0000000000 From dcde181bee62a26396adba87b4ce9e17caf089fd Mon Sep 17 00:00:00 2001 From: Chinsky Date: Wed, 16 Oct 2013 17:14:09 +0400 Subject: [PATCH 005/178] SOMEONE did not put surgery things on new clickcode, so I done that. --- code/_onclick/item_attack.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index aad1cb91b0..821f42ee1b 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -26,7 +26,9 @@ if (!istype(M)) // not sure if this is the right thing... return var/messagesource = M - + if (can_operate(M)) //Checks if mob is lying down on table for surgery + if (do_surgery(M,user,src)) + return if (istype(M,/mob/living/carbon/brain)) messagesource = M:container if (hitsound) From 183c44c4c8ccf853201c69c88098deeb576d4b49 Mon Sep 17 00:00:00 2001 From: Segrain Date: Fri, 18 Oct 2013 08:38:14 +0300 Subject: [PATCH 006/178] Smallfix. --- code/game/objects/effects/decals/contraband.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index d7ac2baa6f..077780119b 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -149,11 +149,11 @@ obj/structure/sign/poster/attackby(obj/item/weapon/W as obj, mob/user as mob) if("No") return -/obj/structure/sign/poster/proc/roll_and_drop(turf/loc) +/obj/structure/sign/poster/proc/roll_and_drop(turf/newloc) var/obj/item/weapon/contraband/poster/P = new(src, serial_number) P.resulting_poster = src - P.loc = loc - loc = P + P.loc = newloc + src.loc = P //seperated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby() From ace205b3239ee59fdecf5428e0c70f4ea1661a81 Mon Sep 17 00:00:00 2001 From: Segrain Date: Fri, 18 Oct 2013 08:40:45 +0300 Subject: [PATCH 007/178] Code cleanup. --- .../objects/items/stacks/sheets/mineral.dm | 2 +- .../structures/crates_lockers/crates.dm | 726 +++++++++--------- 2 files changed, 355 insertions(+), 373 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 120a6ffa70..a47b091da9 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -126,7 +126,7 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \ perunit = 2000 var/global/list/datum/stack_recipe/plastic_recipes = list ( \ - new/datum/stack_recipe("plastic crate", /obj/structure/closet/pcrate, 10, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("plastic ashtray", /obj/item/ashtray/plastic, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("plastic fork", /obj/item/weapon/kitchen/utensil/pfork, 1, on_floor = 1), \ new/datum/stack_recipe("plastic spoon", /obj/item/weapon/kitchen/utensil/pspoon, 1, on_floor = 1), \ diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 61b1750a82..ccace6a8f0 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -5,392 +5,62 @@ desc = "A rectangular steel crate." icon = 'icons/obj/storage.dmi' icon_state = "crate" - density = 1 icon_opened = "crateopen" icon_closed = "crate" - req_access = null - opened = 0 - flags = FPRINT // mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? var/rigged = 0 -/obj/structure/closet/pcrate - name = "plastic crate" - desc = "A rectangular plastic crate." - icon = 'icons/obj/storage.dmi' - icon_state = "plasticcrate" - density = 1 - icon_opened = "plasticcrateopen" - icon_closed = "plasticcrate" - req_access = null - opened = 0 - flags = FPRINT -// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? - var/rigged = 0 +/obj/structure/closet/crate/can_open() + return 1 -/obj/structure/closet/crate/internals - desc = "A internals crate." - name = "Internals crate" - icon = 'icons/obj/storage.dmi' - icon_state = "o2crate" - density = 1 - icon_opened = "o2crateopen" - icon_closed = "o2crate" - -/obj/structure/closet/crate/trashcart - desc = "A heavy, metal trashcart with wheels." - name = "Trash Cart" - icon = 'icons/obj/storage.dmi' - icon_state = "trashcart" - density = 1 - icon_opened = "trashcartopen" - icon_closed = "trashcart" - -/*these aren't needed anymore -/obj/structure/closet/crate/hat - desc = "A crate filled with Valuable Collector's Hats!." - name = "Hat Crate" - icon = 'icons/obj/storage.dmi' - icon_state = "crate" - density = 1 - icon_opened = "crateopen" - icon_closed = "crate" - -/obj/structure/closet/crate/contraband - name = "Poster crate" - desc = "A random assortment of posters manufactured by providers NOT listed under Nanotrasen's whitelist." - icon = 'icons/obj/storage.dmi' - icon_state = "crate" - density = 1 - icon_opened = "crateopen" - icon_closed = "crate" -*/ - -/obj/structure/closet/crate/medical - desc = "A medical crate." - name = "Medical crate" - icon = 'icons/obj/storage.dmi' - icon_state = "medicalcrate" - density = 1 - icon_opened = "medicalcrateopen" - icon_closed = "medicalcrate" - -/obj/structure/closet/crate/rcd - desc = "A crate for the storage of the RCD." - name = "RCD crate" - icon = 'icons/obj/storage.dmi' - icon_state = "crate" - density = 1 - icon_opened = "crateopen" - icon_closed = "crate" - -/obj/structure/closet/crate/freezer - desc = "A freezer." - name = "Freezer" - icon = 'icons/obj/storage.dmi' - icon_state = "freezer" - density = 1 - icon_opened = "freezeropen" - icon_closed = "freezer" - var/target_temp = T0C - 40 - var/cooling_power = 40 - - return_air() - var/datum/gas_mixture/gas = (..()) - if(!gas) return null - var/datum/gas_mixture/newgas = new/datum/gas_mixture() - newgas.oxygen = gas.oxygen - newgas.carbon_dioxide = gas.carbon_dioxide - newgas.nitrogen = gas.nitrogen - newgas.toxins = gas.toxins - newgas.volume = gas.volume - newgas.temperature = gas.temperature - if(newgas.temperature <= target_temp) return - - if((newgas.temperature - cooling_power) > target_temp) - newgas.temperature -= cooling_power - else - newgas.temperature = target_temp - return newgas - - -/obj/structure/closet/crate/bin - desc = "A large bin." - name = "Large bin" - icon = 'icons/obj/storage.dmi' - icon_state = "largebin" - density = 1 - icon_opened = "largebinopen" - icon_closed = "largebin" - -/obj/structure/closet/crate/radiation - desc = "A crate with a radiation sign on it." - name = "Radioactive gear crate" - icon = 'icons/obj/storage.dmi' - icon_state = "radiation" - density = 1 - icon_opened = "radiationopen" - icon_closed = "radiation" - -/obj/structure/closet/crate/secure/weapon - desc = "A secure weapons crate." - name = "Weapons crate" - icon = 'icons/obj/storage.dmi' - icon_state = "weaponcrate" - density = 1 - icon_opened = "weaponcrateopen" - icon_closed = "weaponcrate" - -/obj/structure/closet/crate/secure/plasma - desc = "A secure plasma crate." - name = "Plasma crate" - icon = 'icons/obj/storage.dmi' - icon_state = "plasmacrate" - density = 1 - icon_opened = "plasmacrateopen" - icon_closed = "plasmacrate" - -/obj/structure/closet/crate/secure/gear - desc = "A secure gear crate." - name = "Gear crate" - icon = 'icons/obj/storage.dmi' - icon_state = "secgearcrate" - density = 1 - icon_opened = "secgearcrateopen" - icon_closed = "secgearcrate" - -/obj/structure/closet/crate/secure/hydrosec - desc = "A crate with a lock on it, painted in the scheme of the station's botanists." - name = "secure hydroponics crate" - icon = 'icons/obj/storage.dmi' - icon_state = "hydrosecurecrate" - density = 1 - icon_opened = "hydrosecurecrateopen" - icon_closed = "hydrosecurecrate" - -/obj/structure/closet/crate/secure/bin - desc = "A secure bin." - name = "Secure bin" - icon_state = "largebins" - icon_opened = "largebinsopen" - icon_closed = "largebins" - redlight = "largebinr" - greenlight = "largebing" - sparks = "largebinsparks" - emag = "largebinemag" - -/obj/structure/closet/crate/secure/large - name = "large crate" - desc = "A hefty metal crate with an electronic locking system." - icon = 'icons/obj/storage.dmi' - icon_state = "largemetal" - icon_opened = "largemetalopen" - icon_closed = "largemetal" - redlight = "largemetalr" - greenlight = "largemetalg" - -/obj/structure/closet/crate/secure/large/close() - //we can hold up to one large item - var/found = 0 - for(var/obj/structure/S in src.loc) - if(S == src) - continue - if(!S.anchored) - found = 1 - S.loc = src - break - if(!found) - for(var/obj/machinery/M in src.loc) - if(!M.anchored) - M.loc = src - break - ..() - -//fluff variant -/obj/structure/closet/crate/secure/large/reinforced - desc = "A hefty, reinforced metal crate with an electronic locking system." - icon_state = "largermetal" - icon_opened = "largermetalopen" - icon_closed = "largermetal" - -/obj/structure/closet/crate/secure - desc = "A secure crate." - name = "Secure crate" - icon_state = "securecrate" - icon_opened = "securecrateopen" - icon_closed = "securecrate" - var/redlight = "securecrater" - var/greenlight = "securecrateg" - var/sparks = "securecratesparks" - var/emag = "securecrateemag" - var/broken = 0 - var/locked = 1 - -/obj/structure/closet/crate/large - name = "large crate" - desc = "A hefty metal crate." - icon = 'icons/obj/storage.dmi' - icon_state = "largemetal" - icon_opened = "largemetalopen" - icon_closed = "largemetal" - -/obj/structure/closet/crate/large/close() - //we can hold up to one large item - var/found = 0 - for(var/obj/structure/S in src.loc) - if(S == src) - continue - if(!S.anchored) - found = 1 - S.loc = src - break - if(!found) - for(var/obj/machinery/M in src.loc) - if(!M.anchored) - M.loc = src - break - ..() - -/obj/structure/closet/crate/hydroponics - name = "Hydroponics crate" - desc = "All you need to destroy those pesky weeds and pests." - icon = 'icons/obj/storage.dmi' - icon_state = "hydrocrate" - icon_opened = "hydrocrateopen" - icon_closed = "hydrocrate" - density = 1 - -/obj/structure/closet/crate/hydroponics/prespawned - //This exists so the prespawned hydro crates spawn with their contents. -/* name = "Hydroponics crate" - desc = "All you need to destroy those pesky weeds and pests." - icon = 'icons/obj/storage.dmi' - icon_state = "hydrocrate" - icon_opened = "hydrocrateopen" - icon_closed = "hydrocrate" - density = 1*/ - New() - ..() - new /obj/item/weapon/reagent_containers/spray/plantbgone(src) - new /obj/item/weapon/reagent_containers/spray/plantbgone(src) - new /obj/item/weapon/minihoe(src) -// new /obj/item/weapon/weedspray(src) -// new /obj/item/weapon/weedspray(src) -// new /obj/item/weapon/pestspray(src) -// new /obj/item/weapon/pestspray(src) -// new /obj/item/weapon/pestspray(src) - - -/obj/structure/closet/crate/secure/New() - ..() - if(locked) - overlays.Cut() - overlays += redlight - else - overlays.Cut() - overlays += greenlight - -/obj/structure/closet/crate/rcd/New() - ..() - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd(src) - -/obj/structure/closet/crate/radiation/New() - ..() - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) +/obj/structure/closet/crate/can_close() + return 1 /obj/structure/closet/crate/open() - playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) + if(src.opened) + return 0 + if(!src.can_open()) + return 0 + if(rigged && locate(/obj/item/device/radio/electropack) in src) + if(isliving(usr)) + var/mob/living/L = usr + if(L.electrocute_act(17, src)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + return 2 + + playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) for(var/obj/O in src) O.loc = get_turf(src) - icon_state = icon_opened src.opened = 1 + return 1 /obj/structure/closet/crate/close() + if(!src.opened) + return 0 + if(!src.can_close()) + return 0 + playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) - var/itemcount = 0 - for(var/obj/O in get_turf(src)) if(itemcount >= storage_capacity) break - if(O.density || O.anchored || istype(O,/obj/structure/closet)) continue - if(istype(O, /obj/structure/stool/bed)) //This is only necessary because of rollerbeds and swivel chairs. var/obj/structure/stool/bed/B = O if(B.buckled_mob) continue - O.loc = src itemcount++ icon_state = icon_closed src.opened = 0 - -/obj/structure/closet/crate/attack_hand(mob/user as mob) - if(opened) - close() - else - if(rigged && locate(/obj/item/device/radio/electropack) in src) - if(isliving(user)) - var/mob/living/L = user - if(L.electrocute_act(17, src)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - return - open() - return - -/obj/structure/closet/crate/secure/attack_hand(mob/user as mob) - if(locked && !broken) - if (allowed(user)) - user << "You unlock [src]." - src.locked = 0 - overlays.Cut() - overlays += greenlight - return - else - user << "[src] is locked." - return - else - ..() - -/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken) - user << "You lock \the [src]." - src.locked = 1 - overlays.Cut() - overlays += redlight - return - else if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && locked &&!broken) - overlays.Cut() - overlays += emag - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, "sparks", 60, 1) - src.locked = 0 - src.broken = 1 - user << "You unlock \the [src]." - return - - return ..() - -/obj/structure/closet/crate/attack_paw(mob/user as mob) - return attack_hand(user) + return 1 /obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob) if(opened) @@ -424,6 +94,107 @@ return else return attack_hand(user) +/obj/structure/closet/crate/ex_act(severity) + switch(severity) + if(1.0) + for(var/obj/O in src.contents) + del(O) + del(src) + return + if(2.0) + for(var/obj/O in src.contents) + if(prob(50)) + del(O) + del(src) + return + if(3.0) + if (prob(50)) + del(src) + return + else + return + +/obj/structure/closet/crate/secure + desc = "A secure crate." + name = "Secure crate" + icon_state = "securecrate" + icon_opened = "securecrateopen" + icon_closed = "securecrate" + var/redlight = "securecrater" + var/greenlight = "securecrateg" + var/sparks = "securecratesparks" + var/emag = "securecrateemag" + var/broken = 0 + var/locked = 1 + +/obj/structure/closet/crate/secure/New() + ..() + if(locked) + overlays.Cut() + overlays += redlight + else + overlays.Cut() + overlays += greenlight + +/obj/structure/closet/crate/secure/can_open() + return !locked + +/obj/structure/closet/crate/secure/proc/togglelock(mob/user as mob) + if(src.opened) + user << "Close the crate first." + return + if(src.broken) + user << "The crate appears to be broken." + return + if(src.allowed(user)) + src.locked = !src.locked + for(var/mob/O in viewers(user, 3)) + if((O.client && !( O.blinded ))) + O << "The crate has been [locked ? null : "un"]locked by [user]." + overlays.Cut() + overlays += locked ? redlight : greenlight + else + user << "Access Denied" + +/obj/structure/closet/crate/secure/verb/verb_togglelock() + set src in oview(1) // One square distance + set category = "Object" + set name = "Toggle Lock" + + if(!usr.canmove || usr.stat || usr.restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain + return + + if(ishuman(usr)) + src.add_fingerprint(usr) + src.togglelock(usr) + else + usr << "This mob type can't use this verb." + +/obj/structure/closet/crate/secure/attack_hand(mob/user as mob) + src.add_fingerprint(user) + if(locked) + src.togglelock(user) + else + src.toggle(user) + +/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(is_type_in_list(W, list(/obj/item/weapon/packageWrap, /obj/item/weapon/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters))) + return ..() + if(locked && (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade))) + overlays.Cut() + overlays += emag + overlays += sparks + spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* + playsound(src.loc, "sparks", 60, 1) + src.locked = 0 + src.broken = 1 + user << "You unlock \the [src]." + return + if(!opened) + src.togglelock(user) + return + return ..() + /obj/structure/closet/crate/secure/emp_act(severity) for(var/obj/O in src) O.emp_act(severity) @@ -447,23 +218,234 @@ src.req_access += pick(get_all_accesses()) ..() +/obj/structure/closet/crate/plastic + name = "plastic crate" + desc = "A rectangular plastic crate." + icon_state = "plasticcrate" + icon_opened = "plasticcrateopen" + icon_closed = "plasticcrate" -/obj/structure/closet/crate/ex_act(severity) - switch(severity) - if(1.0) - for(var/obj/O in src.contents) - del(O) - del(src) - return - if(2.0) - for(var/obj/O in src.contents) - if(prob(50)) - del(O) - del(src) - return - if(3.0) - if (prob(50)) - del(src) - return +/obj/structure/closet/crate/internals + desc = "A internals crate." + name = "Internals crate" + icon_state = "o2crate" + icon_opened = "o2crateopen" + icon_closed = "o2crate" + +/obj/structure/closet/crate/trashcart + desc = "A heavy, metal trashcart with wheels." + name = "Trash Cart" + icon_state = "trashcart" + icon_opened = "trashcartopen" + icon_closed = "trashcart" + +/*these aren't needed anymore +/obj/structure/closet/crate/hat + desc = "A crate filled with Valuable Collector's Hats!." + name = "Hat Crate" + icon_state = "crate" + icon_opened = "crateopen" + icon_closed = "crate" + +/obj/structure/closet/crate/contraband + name = "Poster crate" + desc = "A random assortment of posters manufactured by providers NOT listed under Nanotrasen's whitelist." + icon_state = "crate" + icon_opened = "crateopen" + icon_closed = "crate" +*/ + +/obj/structure/closet/crate/medical + desc = "A medical crate." + name = "Medical crate" + icon_state = "medicalcrate" + icon_opened = "medicalcrateopen" + icon_closed = "medicalcrate" + +/obj/structure/closet/crate/rcd + desc = "A crate for the storage of the RCD." + name = "RCD crate" + icon_state = "crate" + icon_opened = "crateopen" + icon_closed = "crate" + +/obj/structure/closet/crate/rcd/New() + ..() + new /obj/item/weapon/rcd_ammo(src) + new /obj/item/weapon/rcd_ammo(src) + new /obj/item/weapon/rcd_ammo(src) + new /obj/item/weapon/rcd(src) + +/obj/structure/closet/crate/freezer + desc = "A freezer." + name = "Freezer" + icon_state = "freezer" + icon_opened = "freezeropen" + icon_closed = "freezer" + var/target_temp = T0C - 40 + var/cooling_power = 40 + + return_air() + var/datum/gas_mixture/gas = (..()) + if(!gas) return null + var/datum/gas_mixture/newgas = new/datum/gas_mixture() + newgas.oxygen = gas.oxygen + newgas.carbon_dioxide = gas.carbon_dioxide + newgas.nitrogen = gas.nitrogen + newgas.toxins = gas.toxins + newgas.volume = gas.volume + newgas.temperature = gas.temperature + if(newgas.temperature <= target_temp) return + + if((newgas.temperature - cooling_power) > target_temp) + newgas.temperature -= cooling_power else + newgas.temperature = target_temp + return newgas + + +/obj/structure/closet/crate/bin + desc = "A large bin." + name = "Large bin" + icon_state = "largebin" + icon_opened = "largebinopen" + icon_closed = "largebin" + +/obj/structure/closet/crate/radiation + desc = "A crate with a radiation sign on it." + name = "Radioactive gear crate" + icon_state = "radiation" + icon_opened = "radiationopen" + icon_closed = "radiation" + +/obj/structure/closet/crate/radiation/New() + ..() + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + +/obj/structure/closet/crate/secure/weapon + desc = "A secure weapons crate." + name = "Weapons crate" + icon_state = "weaponcrate" + icon_opened = "weaponcrateopen" + icon_closed = "weaponcrate" + +/obj/structure/closet/crate/secure/plasma + desc = "A secure plasma crate." + name = "Plasma crate" + icon_state = "plasmacrate" + icon_opened = "plasmacrateopen" + icon_closed = "plasmacrate" + +/obj/structure/closet/crate/secure/gear + desc = "A secure gear crate." + name = "Gear crate" + icon_state = "secgearcrate" + icon_opened = "secgearcrateopen" + icon_closed = "secgearcrate" + +/obj/structure/closet/crate/secure/hydrosec + desc = "A crate with a lock on it, painted in the scheme of the station's botanists." + name = "secure hydroponics crate" + icon_state = "hydrosecurecrate" + icon_opened = "hydrosecurecrateopen" + icon_closed = "hydrosecurecrate" + +/obj/structure/closet/crate/secure/bin + desc = "A secure bin." + name = "Secure bin" + icon_state = "largebins" + icon_opened = "largebinsopen" + icon_closed = "largebins" + redlight = "largebinr" + greenlight = "largebing" + sparks = "largebinsparks" + emag = "largebinemag" + +/obj/structure/closet/crate/large + name = "large crate" + desc = "A hefty metal crate." + icon = 'icons/obj/storage.dmi' + icon_state = "largemetal" + icon_opened = "largemetalopen" + icon_closed = "largemetal" + +/obj/structure/closet/crate/large/close() + . = ..() + if (.)//we can hold up to one large item + var/found = 0 + for(var/obj/structure/S in src.loc) + if(S == src) + continue + if(!S.anchored) + found = 1 + S.loc = src + break + if(!found) + for(var/obj/machinery/M in src.loc) + if(!M.anchored) + M.loc = src + break return + +/obj/structure/closet/crate/secure/large + name = "large crate" + desc = "A hefty metal crate with an electronic locking system." + icon = 'icons/obj/storage.dmi' + icon_state = "largemetal" + icon_opened = "largemetalopen" + icon_closed = "largemetal" + redlight = "largemetalr" + greenlight = "largemetalg" + +/obj/structure/closet/crate/secure/large/close() + . = ..() + if (.)//we can hold up to one large item + var/found = 0 + for(var/obj/structure/S in src.loc) + if(S == src) + continue + if(!S.anchored) + found = 1 + S.loc = src + break + if(!found) + for(var/obj/machinery/M in src.loc) + if(!M.anchored) + M.loc = src + break + return + +//fluff variant +/obj/structure/closet/crate/secure/large/reinforced + desc = "A hefty, reinforced metal crate with an electronic locking system." + icon_state = "largermetal" + icon_opened = "largermetalopen" + icon_closed = "largermetal" + +/obj/structure/closet/crate/hydroponics + name = "Hydroponics crate" + desc = "All you need to destroy those pesky weeds and pests." + icon_state = "hydrocrate" + icon_opened = "hydrocrateopen" + icon_closed = "hydrocrate" + +/obj/structure/closet/crate/hydroponics/prespawned + //This exists so the prespawned hydro crates spawn with their contents. + + New() + ..() + new /obj/item/weapon/reagent_containers/spray/plantbgone(src) + new /obj/item/weapon/reagent_containers/spray/plantbgone(src) + new /obj/item/weapon/minihoe(src) +// new /obj/item/weapon/weedspray(src) +// new /obj/item/weapon/weedspray(src) +// new /obj/item/weapon/pestspray(src) +// new /obj/item/weapon/pestspray(src) +// new /obj/item/weapon/pestspray(src) \ No newline at end of file From fb613b76097288c85756ae7f55920ea1dfbe8089 Mon Sep 17 00:00:00 2001 From: Nanai Date: Sat, 19 Oct 2013 16:52:34 -0400 Subject: [PATCH 008/178] Added additional drink sprites for: melon liquor, blue curacao, mixed drink: sui dream, lemonade, lemon juice. --- icons/obj/drinks.dmi | Bin 60012 -> 60569 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 89e27c1919ca84e4712497c43f9c0817af30d905..97b259bfb079c5754ac8c3d1897271091724ce20 100644 GIT binary patch delta 42937 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 LYI5bzjYIwq10wl^ delta 42362 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 From 0df64f898c41a8f0ec54f471e307cf45611368df Mon Sep 17 00:00:00 2001 From: ZekeSulastin Date: Fri, 18 Oct 2013 21:33:36 -0400 Subject: [PATCH 009/178] Added dialysis to sleepers Rapidly removes reagents from patient at the cost of blood. Ported from Jamini's NEV Unity codebase. --- code/game/machinery/Sleeper.dm | 61 ++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index c1be061f53..587ceed561 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -11,7 +11,6 @@ density = 1 var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r" - /obj/machinery/sleep_console/ex_act(severity) switch(severity) if(1.0) @@ -73,6 +72,11 @@ for(var/chemical in connected.available_chemicals) dat += "[connected.available_chemicals[chemical]]: [occupant.reagents.get_reagent_amount(chemical)] units
" dat += "
Refresh meter readings each second
" + if(src.connected.beaker) + if(src.connected.filtering) + dat += "
Stop Dialysis
" + else + dat += "
Start Dialysis
" for(var/chemical in connected.available_chemicals) dat += "Inject [connected.available_chemicals[chemical]]: " for(var/amount in connected.amounts) @@ -101,6 +105,9 @@ usr << "\red \b This person is not in good enough condition for sleepers to be effective! Use another means of treatment, such as cryogenics!" if (href_list["refresh"]) src.updateUsrDialog() + if (href_list["togglefilter"]) + src.connected.toggle_filter() + src.updateUsrDialog() src.add_fingerprint(usr) return @@ -131,13 +138,16 @@ density = 1 anchored = 1 var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r" - var/mob/living/occupant = null + var/mob/living/carbon/human/occupant = null var/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "dermaline" = "Dermaline", "bicaridine" = "Bicaridine", "dexalin" = "Dexalin") var/amounts = list(5, 10) - + var/obj/item/weapon/reagent_containers/glass/beaker = null + var/filtering = 0 New() ..() + beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large() + beaker.volume = 1000000 spawn( 5 ) if(orient == "RIGHT") icon_state = "sleeper_0-r" @@ -150,6 +160,14 @@ process() + if(filtering > 0) + if(beaker) + if(beaker.reagents.total_volume < beaker.reagents.maximum_volume) + src.occupant.vessel.trans_to(beaker, 1) + for(var/datum/reagent/x in src.occupant.reagents.reagent_list) +// world << "FILTERING CHEMS" + src.occupant.reagents.trans_to(beaker, 3) + src.occupant.vessel.trans_to(beaker, 1) src.updateDialog() return @@ -162,7 +180,15 @@ del(src) return - +/* attackby(obj/item/weapon/reagent_containers/glass/beaker/O as obj, mob/user as mob) + if(istype(O, /obj/item/weapon/reagent_containers/glass)) + if(!beaker) + user.before_take_item(O) + O.loc = src + beaker = O + else + user << "\red The sleeper has a beaker already." +*/ attackby(obj/item/weapon/grab/G as obj, mob/user as mob) if((!( istype(G, /obj/item/weapon/grab)) || !( ismob(G.affecting)))) return @@ -203,6 +229,8 @@ ex_act(severity) + if(filtering) + toggle_filter() switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) @@ -226,6 +254,8 @@ return return emp_act(severity) + if(filtering) + toggle_filter() if(stat & (BROKEN|NOPOWER)) ..(severity) return @@ -250,9 +280,15 @@ if (M:reagents.get_reagent_amount("inaprovaline") < 5) M:reagents.add_reagent("inaprovaline", 5) return - + proc/toggle_filter() + if(filtering) + filtering = 0 + else + filtering = 1 proc/go_out() + if(filtering) + toggle_filter() if(!src.occupant) return for(var/obj/O in src) @@ -315,7 +351,18 @@ add_fingerprint(usr) return - +/* verb/remove_beaker() + set name = "Remove Beaker" + set category = "Object" + set src in oview(1) + if(usr.stat != 0) + return + if(beaker) + beaker.loc = usr.loc + beaker = null + add_fingerprint(usr) + return +*/ verb/move_inside() set name = "Enter Sleeper" set category = "Object" @@ -350,4 +397,4 @@ del(O) src.add_fingerprint(usr) return - return \ No newline at end of file + return From 3455bf7cc148dc17aebba8241e8cdc069571466b Mon Sep 17 00:00:00 2001 From: ZekeSulastin Date: Sat, 19 Oct 2013 14:55:48 -0400 Subject: [PATCH 010/178] Add/remove beaker from sleeper for dialysis Redoes the sleeper attackby() prompt to match cryo's style. Also removes the millionbeaker in favor of a standard large. --- code/game/machinery/Sleeper.dm | 77 +++++++++---------- .../reagents/reagent_containers/glass.dm | 3 +- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 587ceed561..f97a1047c2 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -147,7 +147,6 @@ New() ..() beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large() - beaker.volume = 1000000 spawn( 5 ) if(orient == "RIGHT") icon_state = "sleeper_0-r" @@ -180,50 +179,52 @@ del(src) return -/* attackby(obj/item/weapon/reagent_containers/glass/beaker/O as obj, mob/user as mob) - if(istype(O, /obj/item/weapon/reagent_containers/glass)) + attackby(var/obj/item/weapon/G as obj, var/mob/user as mob) + if(istype(G, /obj/item/weapon/reagent_containers/glass)) if(!beaker) - user.before_take_item(O) - O.loc = src - beaker = O + beaker = G + user.drop_item() + G.loc = src + user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!") + return else user << "\red The sleeper has a beaker already." -*/ - attackby(obj/item/weapon/grab/G as obj, mob/user as mob) - if((!( istype(G, /obj/item/weapon/grab)) || !( ismob(G.affecting)))) - return - if(src.occupant) - user << "\blue The sleeper is already occupied!" - return - - for(var/mob/living/carbon/slime/M in range(1,G.affecting)) - if(M.Victim == G.affecting) - usr << "[G.affecting.name] will not fit into the sleeper because they have a slime latched onto their head." return - visible_message("[user] starts putting [G.affecting.name] into the sleeper.", 3) + else if(istype(G, /obj/item/weapon/grab)) + if(!ismob(G:affecting)) + return - if(do_after(user, 20)) if(src.occupant) user << "\blue The sleeper is already occupied!" return - if(!G || !G.affecting) return - var/mob/M = G.affecting - if(M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - M.loc = src - src.occupant = M - src.icon_state = "sleeper_1" - if(orient == "RIGHT") - icon_state = "sleeper_1-r" - M << "\blue You feel cool air surround you. You go numb as your senses turn inward." - - for(var/obj/O in src) - O.loc = src.loc - src.add_fingerprint(user) - del(G) + for(var/mob/living/carbon/slime/M in range(1,G:affecting)) + if(M.Victim == G:affecting) + usr << "[G:affecting.name] will not fit into the sleeper because they have a slime latched onto their head." + return + + visible_message("[user] starts putting [G:affecting:name] into the sleeper.", 3) + + if(do_after(user, 20)) + if(src.occupant) + user << "\blue The sleeper is already occupied!" + return + if(!G || !G:affecting) return + var/mob/M = G:affecting + if(M.client) + M.client.perspective = EYE_PERSPECTIVE + M.client.eye = src + M.loc = src + src.occupant = M + src.icon_state = "sleeper_1" + if(orient == "RIGHT") + icon_state = "sleeper_1-r" + + M << "\blue You feel cool air surround you. You go numb as your senses turn inward." + + src.add_fingerprint(user) + del(G) return return @@ -291,8 +292,6 @@ toggle_filter() if(!src.occupant) return - for(var/obj/O in src) - O.loc = src.loc if(src.occupant.client) src.occupant.client.eye = src.occupant.client.mob src.occupant.client.perspective = MOB_PERSPECTIVE @@ -351,7 +350,7 @@ add_fingerprint(usr) return -/* verb/remove_beaker() + verb/remove_beaker() set name = "Remove Beaker" set category = "Object" set src in oview(1) @@ -362,7 +361,7 @@ beaker = null add_fingerprint(usr) return -*/ + verb/move_inside() set name = "Enter Sleeper" set category = "Object" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index b2cc535ba3..ad68c27b67 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -36,7 +36,8 @@ /obj/machinery/apiary, /mob/living/simple_animal/cow, /mob/living/simple_animal/hostile/retaliate/goat, - /obj/machinery/computer/centrifuge ) + /obj/machinery/computer/centrifuge, + /obj/machinery/sleeper ) New() ..() From 28d546f2b1b8d74fb1eac74190dae7f7e2a417de Mon Sep 17 00:00:00 2001 From: ZekeSulastin Date: Sat, 19 Oct 2013 15:53:55 -0400 Subject: [PATCH 011/178] Added dialysis volume. Also numbness message for entering. --- code/game/machinery/Sleeper.dm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index f97a1047c2..93d87635da 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -75,8 +75,13 @@ if(src.connected.beaker) if(src.connected.filtering) dat += "
Stop Dialysis
" + dat += text("Output Beaker has [] units of free space remaining

", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume) else - dat += "
Start Dialysis
" + dat += "
Start Dialysis
" + dat += text("Output Beaker has [] units of free space remaining

", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume) + else + dat += "
No Dialysis Output Beaker is present.

" + for(var/chemical in connected.available_chemicals) dat += "Inject [connected.available_chemicals[chemical]]: " for(var/amount in connected.amounts) @@ -332,6 +337,10 @@ user << text("[]\t -Burn Severity %: []", (src.occupant.getFireLoss() < 60 ? "\blue " : "\red "), src.occupant.getFireLoss()) user << "\blue Expected time till occupant can safely awake: (note: If health is below 20% these times are inaccurate)" user << text("\blue \t [] second\s (if around 1 or 2 the sleeper is keeping them asleep.)", src.occupant.paralysis / 5) + if(src.beaker) + user << text("\blue \t Dialysis Output Beaker has [] of free space remaining.", src.beaker.reagents.maximum_volume - src.beaker.reagents.total_volume) + else + user << "\blue No Dialysis Output Beaker loaded." else user << "\blue There is no one inside!" return @@ -357,6 +366,7 @@ if(usr.stat != 0) return if(beaker) + filtering = 0 beaker.loc = usr.loc beaker = null add_fingerprint(usr) @@ -392,6 +402,8 @@ if(orient == "RIGHT") icon_state = "sleeper_1-r" + usr << "\blue You feel cool air surround you. You go numb as your senses turn inward." + for(var/obj/O in src) del(O) src.add_fingerprint(usr) From a315696c4f12f34b0ddc842b09ed69db88d2d53e Mon Sep 17 00:00:00 2001 From: Nanai Date: Sat, 19 Oct 2013 17:05:06 -0400 Subject: [PATCH 012/178] Fix for the RD's welding goggles- On equip sprites were invisible and mislabelled as old custom item. --- icons/mob/eyes.dmi | Bin 8782 -> 8778 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index 99d62141ef1a8f1cdca737c28b135808b7e5c375..f14b24fbb501b655c7b91eb6c09f08550371962c 100644 GIT binary patch delta 452 zcmV;#0XzQAM9M^vB!8@WR9JLGWpiV4X>fFDZ*Bkpc$}4#!EVAZ42I9`Q$%pxrnTeR z%LJM@z$;XtHBDHWM0PU7o_+@k14I?~Sn12xKX&Z7_*{Lhw_>?j=Rbg?ofVZ>yuIhy zQMW;fN_>=gra*TpoIfbY0HPAJ&PXDlIw);tdDdzqQHe#K?SE1BK%x@GbGZDci{~^& z%hO)Kw6X_sX1f^p7VP8qcg`tV4!-=E4VcCPo9zsrQSRtcjfFDZ*Bkpc$}4#&u+pn42RF{Q$%pxrondY zWdcnc;1#OSnkFoDsyG>9Prn2ID=NFkN?*SI?8Kg`ujTh@qZaE`{tJPuM^&iLxA#0d z*g6_jsE>J`8L*9srw@ucf-2OcaheFIjK<<5&uSY;73wq3c7H*)K&nu)=kWYS&z{qi zP^P_rys`!IysriF0$DT=TJ2cfnG>Yb5rP#MFCeenI*awryP9=gNkLAJzH(4Xv}bny z2oH$i2%V0Vk+sxgH}A(UK=C}cuWzAlAM z5buPE7p`qPr!n%^-s1(gZ##+*O6j}m@%#_=fCNZJ*8=-JEZFq6p@h=p4>T`7fU7Mw zuMI1{k|U(4lWSAQi_;(AL6>BSf-Yy{R%Gw+$Yp6YmOPbr?a*JJqJsKwFkk+?n5T8v yCoC)DyP(+^_psnedjC^yAs_@nKOX2o`BW`83$<9U@_(X?B7C%Ap^mfJ0dXKlrs1Ce From 461794c6628a89530247e295ba83dbfeef8f1071 Mon Sep 17 00:00:00 2001 From: Nanai Date: Sun, 20 Oct 2013 17:07:02 -0400 Subject: [PATCH 013/178] Cloning pod altered to hold 3 clones worth of biomass at roundstart. --- code/game/machinery/cloning.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index c43d02029b..fcc3fb3d60 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -20,7 +20,7 @@ var/mess = 0 //Need to clean out it if it's full of exploded clone. var/attempting = 0 //One clone attempt at a time thanks var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk - var/biomass = CLONE_BIOMASS + var/biomass = 450 //At the time of writing, used to make 3 clones. //The return of data disks?? Just for transferring between genetics machine/cloning machine. //TO-DO: Make the genetics machine accept them. From 137cbba8e4db6275233f138d38df13cd20d6f349 Mon Sep 17 00:00:00 2001 From: Nanai Date: Sun, 20 Oct 2013 17:38:26 -0400 Subject: [PATCH 014/178] Cloning pod altered to hold 3 clones worth of biomass at roundstart. --- code/game/machinery/cloning.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index fcc3fb3d60..406e5aab98 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -20,7 +20,7 @@ var/mess = 0 //Need to clean out it if it's full of exploded clone. var/attempting = 0 //One clone attempt at a time thanks var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk - var/biomass = 450 //At the time of writing, used to make 3 clones. + var/biomass = CLONE_BIOMASS * 3 //The return of data disks?? Just for transferring between genetics machine/cloning machine. //TO-DO: Make the genetics machine accept them. From 088ff405a6a5af0db8a8a85e3629dbf3f8d0d6ed Mon Sep 17 00:00:00 2001 From: Segrain Date: Mon, 21 Oct 2013 04:44:15 +0300 Subject: [PATCH 015/178] Proper mapmerge. --- maps/tgstation2.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index ebcf115218..fbc7e0f633 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -6570,6 +6570,7 @@ "cwr" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cws" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cwt" = (/obj/machinery/computer/syndicate_station{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"cwu" = (/obj/structure/rack,/obj/item/weapon/gun/dartgun/vox/raider,/obj/item/weapon/gun/dartgun/vox/medical,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cwv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/centcom/evac) "cww" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) "cwx" = (/obj/structure/stool/bed/chair{dir = 4; name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) @@ -7876,7 +7877,6 @@ "cVy" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVz" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVA" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cVB" = (/obj/structure/rack,/obj/item/weapon/gun/dartgun/vox/raider,/obj/item/weapon/gun/dartgun/vox/medical,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVC" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/carapace,/obj/item/clothing/head/helmet/space/vox/carapace,/obj/item/clothing/mask/breath/vox,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVD" = (/obj/structure/rack,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVE" = (/obj/structure/rack,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) @@ -10742,7 +10742,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTjcTjcTjcTjcTjcTjcTjcT aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUgcVdcVccVbcVbcVbcVbcVbcVbcTMcVbcTMcVbcVbcVbcVbcVbcVbcVccVdcUgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUgcVLcVKcVNcVMcVScVTcTMcUWcTMcUWcTMcUWcTMcVQcVOcVPcVRcVKcVLcUgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUgcVocVKcUGcUGcUGcUGcTMcUGcUGcUGcUGcUGcTMcUGcUGcVUcUGcVKcVocUgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTVcTMcVxcVGcVFcVDcVEcTMcVCcUGcUGcUGcVBcTMcVAcVycVzcVwcVxcTMcTQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTVcTMcVxcVGcVFcVDcVEcTMcVCcUGcUGcUGcwucTMcVAcVycVzcVwcVxcTMcTQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcTMcVHcVHcTMcTMcTMcTMcVJcUGcUGcUGcVIcTMcTMcTMcTMcVHcVHcTMcULaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUJcUJcULaaaaaacTMcUMcUGcUGcUGcUNcTMaaaaaacUKcUJcUJcULaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTMcUOcUGcUGcUGcUNcTMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 8bd055357ad9f7cd9fc5c1f7fbec3c48ecf04d38 Mon Sep 17 00:00:00 2001 From: Segrain Date: Mon, 21 Oct 2013 04:48:07 +0300 Subject: [PATCH 016/178] Same fix again. --- code/game/objects/structures/flora.dm | 46 +++++++++++++-------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 94f875f194..85de4b62f5 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -12,8 +12,8 @@ icon_state = "pine_1" /obj/structure/flora/tree/pine/New() - icon_state = "pine_[rand(1, 3)]" ..() + icon_state = "pine_[rand(1, 3)]" /obj/structure/flora/tree/pine/xmas name = "xmas tree" @@ -29,8 +29,8 @@ icon_state = "tree_1" /obj/structure/flora/tree/dead/New() - icon_state = "tree_[rand(1, 6)]" ..() + icon_state = "tree_[rand(1, 6)]" //grass @@ -43,23 +43,23 @@ icon_state = "snowgrass1bb" /obj/structure/flora/grass/brown/New() - icon_state = "snowgrass[rand(1, 3)]bb" ..() + icon_state = "snowgrass[rand(1, 3)]bb" /obj/structure/flora/grass/green icon_state = "snowgrass1gb" /obj/structure/flora/grass/green/New() - icon_state = "snowgrass[rand(1, 3)]gb" ..() + icon_state = "snowgrass[rand(1, 3)]gb" /obj/structure/flora/grass/both icon_state = "snowgrassall1" /obj/structure/flora/grass/both/New() - icon_state = "snowgrassall[rand(1, 3)]" ..() + icon_state = "snowgrassall[rand(1, 3)]" //bushes @@ -70,8 +70,8 @@ anchored = 1 /obj/structure/flora/bush/New() - icon_state = "snowbush[rand(1, 6)]" ..() + icon_state = "snowbush[rand(1, 6)]" /obj/structure/flora/pottedplant name = "potted plant" @@ -87,110 +87,110 @@ anchored = 1 /obj/structure/flora/ausbushes/New() - icon_state = "firstbush_[rand(1, 4)]" ..() + icon_state = "firstbush_[rand(1, 4)]" /obj/structure/flora/ausbushes/reedbush icon_state = "reedbush_1" /obj/structure/flora/ausbushes/reedbush/New() - icon_state = "reedbush_[rand(1, 4)]" ..() + icon_state = "reedbush_[rand(1, 4)]" /obj/structure/flora/ausbushes/leafybush icon_state = "leafybush_1" /obj/structure/flora/ausbushes/leafybush/New() - icon_state = "leafybush_[rand(1, 3)]" ..() + icon_state = "leafybush_[rand(1, 3)]" /obj/structure/flora/ausbushes/palebush icon_state = "palebush_1" /obj/structure/flora/ausbushes/palebush/New() - icon_state = "palebush_[rand(1, 4)]" ..() + icon_state = "palebush_[rand(1, 4)]" /obj/structure/flora/ausbushes/stalkybush icon_state = "stalkybush_1" /obj/structure/flora/ausbushes/stalkybush/New() - icon_state = "stalkybush_[rand(1, 3)]" ..() + icon_state = "stalkybush_[rand(1, 3)]" /obj/structure/flora/ausbushes/grassybush icon_state = "grassybush_1" /obj/structure/flora/ausbushes/grassybush/New() - icon_state = "grassybush_[rand(1, 4)]" ..() + icon_state = "grassybush_[rand(1, 4)]" /obj/structure/flora/ausbushes/fernybush icon_state = "fernybush_1" /obj/structure/flora/ausbushes/fernybush/New() - icon_state = "fernybush_[rand(1, 3)]" ..() + icon_state = "fernybush_[rand(1, 3)]" /obj/structure/flora/ausbushes/sunnybush icon_state = "sunnybush_1" /obj/structure/flora/ausbushes/sunnybush/New() - icon_state = "sunnybush_[rand(1, 3)]" ..() + icon_state = "sunnybush_[rand(1, 3)]" /obj/structure/flora/ausbushes/genericbush icon_state = "genericbush_1" /obj/structure/flora/ausbushes/genericbush/New() - icon_state = "genericbush_[rand(1, 4)]" ..() + icon_state = "genericbush_[rand(1, 4)]" /obj/structure/flora/ausbushes/pointybush icon_state = "pointybush_1" /obj/structure/flora/ausbushes/pointybush/New() - icon_state = "pointybush_[rand(1, 4)]" ..() + icon_state = "pointybush_[rand(1, 4)]" /obj/structure/flora/ausbushes/lavendergrass icon_state = "lavendergrass_1" /obj/structure/flora/ausbushes/lavendergrass/New() - icon_state = "lavendergrass_[rand(1, 4)]" ..() + icon_state = "lavendergrass_[rand(1, 4)]" /obj/structure/flora/ausbushes/ywflowers icon_state = "ywflowers_1" /obj/structure/flora/ausbushes/ywflowers/New() - icon_state = "ywflowers_[rand(1, 3)]" ..() + icon_state = "ywflowers_[rand(1, 3)]" /obj/structure/flora/ausbushes/brflowers icon_state = "brflowers_1" /obj/structure/flora/ausbushes/brflowers/New() - icon_state = "brflowers_[rand(1, 3)]" ..() + icon_state = "brflowers_[rand(1, 3)]" /obj/structure/flora/ausbushes/ppflowers icon_state = "ppflowers_1" /obj/structure/flora/ausbushes/ppflowers/New() - icon_state = "ppflowers_[rand(1, 4)]" ..() + icon_state = "ppflowers_[rand(1, 4)]" /obj/structure/flora/ausbushes/sparsegrass icon_state = "sparsegrass_1" /obj/structure/flora/ausbushes/sparsegrass/New() - icon_state = "sparsegrass_[rand(1, 3)]" ..() + icon_state = "sparsegrass_[rand(1, 3)]" /obj/structure/flora/ausbushes/fullgrass icon_state = "fullgrass_1" /obj/structure/flora/ausbushes/fullgrass/New() - icon_state = "fullgrass_[rand(1, 3)]" - ..() \ No newline at end of file + ..() + icon_state = "fullgrass_[rand(1, 3)]" \ No newline at end of file From 9a662594f27d0feab80307b085d9f4d0c35624ab Mon Sep 17 00:00:00 2001 From: Segrain Date: Mon, 21 Oct 2013 05:04:45 +0300 Subject: [PATCH 017/178] Cash money. --- baystation12.dme | 1 + code/defines/obj/weapon.dm | 69 ------------------------------------ code/modules/economy/cash.dm | 65 +++++++++++++++++++++++++++++++++ maps/tgstation2.dmm | 8 ++--- 4 files changed, 70 insertions(+), 73 deletions(-) create mode 100644 code/modules/economy/cash.dm diff --git a/baystation12.dme b/baystation12.dme index b2635fd942..2a699386a9 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -766,6 +766,7 @@ #include "code\modules\economy\Accounts.dm" #include "code\modules\economy\Accounts_DB.dm" #include "code\modules\economy\ATM.dm" +#include "code\modules\economy\cash.dm" #include "code\modules\economy\economy_misc.dm" #include "code\modules\economy\EFTPOS.dm" #include "code\modules\economy\Events.dm" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 532e84e1f7..b84388f583 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -25,75 +25,6 @@ flags = TABLEPASS w_class = 3.0 - -/obj/item/weapon/spacecash - name = "1 credit chip" - desc = "It's worth 1 credit." - gender = PLURAL - icon = 'icons/obj/items.dmi' - icon_state = "spacecash" - opacity = 0 - density = 0 - anchored = 0.0 - force = 1.0 - throwforce = 1.0 - throw_speed = 1 - throw_range = 2 - w_class = 1.0 - var/access = list() - access = access_crate_cash - var/worth = 1 - -/obj/item/weapon/spacecash/c10 - name = "10 credit chip" - icon_state = "spacecash10" - access = access_crate_cash - desc = "It's worth 10 credits." - worth = 10 - -/obj/item/weapon/spacecash/c20 - name = "20 credit chip" - icon_state = "spacecash20" - access = access_crate_cash - desc = "It's worth 20 credits." - worth = 20 - -/obj/item/weapon/spacecash/c50 - name = "50 credit chip" - icon_state = "spacecash50" - access = access_crate_cash - desc = "It's worth 50 credits." - worth = 50 - -/obj/item/weapon/spacecash/c100 - name = "100 credit chip" - icon_state = "spacecash100" - access = access_crate_cash - desc = "It's worth 100 credits." - worth = 100 - -/obj/item/weapon/spacecash/c200 - name = "200 credit chip" - icon_state = "spacecash200" - access = access_crate_cash - desc = "It's worth 200 credits." - worth = 200 - -/obj/item/weapon/spacecash/c500 - name = "500 credit chip" - icon_state = "spacecash500" - access = access_crate_cash - desc = "It's worth 500 credits." - worth = 500 - -/obj/item/weapon/spacecash/c1000 - name = "1000 credit chip" - icon_state = "spacecash1000" - access = access_crate_cash - desc = "It's worth 1000 credits." - worth = 1000 - - /obj/item/weapon/bananapeel name = "banana peel" desc = "A peel from a banana." diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm new file mode 100644 index 0000000000..ff1fd9aaab --- /dev/null +++ b/code/modules/economy/cash.dm @@ -0,0 +1,65 @@ +/obj/item/weapon/spacecash + name = "0 credit chip" + desc = "It's worth 0 credits." + gender = PLURAL + icon = 'icons/obj/items.dmi' + icon_state = "spacecash" + opacity = 0 + density = 0 + anchored = 0.0 + force = 1.0 + throwforce = 1.0 + throw_speed = 1 + throw_range = 2 + w_class = 1.0 + var/access = list() + access = access_crate_cash + var/worth = 0 + +/obj/item/weapon/spacecash/c1 + name = "1 credip chip" + icon_state = "spacecash" + desc = "It's worth 1 credit." + worth = 1 + +/obj/item/weapon/spacecash/c10 + name = "10 credit chip" + icon_state = "spacecash10" + desc = "It's worth 10 credits." + worth = 10 + +/obj/item/weapon/spacecash/c20 + name = "20 credit chip" + icon_state = "spacecash20" + desc = "It's worth 20 credits." + worth = 20 + +/obj/item/weapon/spacecash/c50 + name = "50 credit chip" + icon_state = "spacecash50" + desc = "It's worth 50 credits." + worth = 50 + +/obj/item/weapon/spacecash/c100 + name = "100 credit chip" + icon_state = "spacecash100" + desc = "It's worth 100 credits." + worth = 100 + +/obj/item/weapon/spacecash/c200 + name = "200 credit chip" + icon_state = "spacecash200" + desc = "It's worth 200 credits." + worth = 200 + +/obj/item/weapon/spacecash/c500 + name = "500 credit chip" + icon_state = "spacecash500" + desc = "It's worth 500 credits." + worth = 500 + +/obj/item/weapon/spacecash/c1000 + name = "1000 credit chip" + icon_state = "spacecash1000" + desc = "It's worth 1000 credits." + worth = 1000 \ No newline at end of file diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index fbc7e0f633..00d5d6b2ba 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -7509,7 +7509,7 @@ "cOu" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "cOv" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "cOw" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"cOx" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/device/flash,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/device/aicard,/obj/item/weapon/pinpointer/advpinpointer,/turf/unsimulated/floor{icon_state = "blue"},/area/centcom/specops) +"cOx" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/device/flash,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/device/aicard,/obj/item/weapon/pinpointer/advpinpointer,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "blue"},/area/centcom/specops) "cOy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "cOz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "cOA" = (/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) @@ -7818,7 +7818,7 @@ "cUr" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "cUs" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "cUt" = (/obj/structure/table/woodentable,/obj/item/trash/cheesie,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"cUu" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"cUu" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash/c1,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cUv" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cUw" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cUx" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) @@ -7877,6 +7877,7 @@ "cVy" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVz" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVA" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) +"cVB" = (/obj/item/weapon/syntiflesh{name = "Cuban Pete-Meat"},/obj/item/weapon/spacecash/c1,/turf/simulated/floor/engine,/area/tcommsat/computer) "cVC" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/carapace,/obj/item/clothing/head/helmet/space/vox/carapace,/obj/item/clothing/mask/breath/vox,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVD" = (/obj/structure/rack,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "cVE" = (/obj/structure/rack,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) @@ -8034,7 +8035,6 @@ "cYA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) "cYB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/tcommsat/computer) "cYC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/tcommsat/computer) -"cYD" = (/obj/item/weapon/syntiflesh{name = "Cuban Pete-Meat"},/obj/item/weapon/spacecash,/turf/simulated/floor/engine,/area/tcommsat/computer) "cYE" = (/obj/machinery/computer/telecomms/server{network = list("tcommsat")},/turf/simulated/floor,/area/tcommsat/computer) "cYF" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) "cYG" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/tcommsat/computer) @@ -10871,7 +10871,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjakYakYcXYcYfcYxcYwcYvcYucYAcYzcYycXYcXXcXXcXXcXXcXXcXXcXXcXXcYrcXXcYtcYscYpcYocYqcXZcXXakYakYbYjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjakYcXYcYfcYfcYfcYecYhcYgcYlcYkcYncYmcXXcXZcYjcYicYbcXZcYacXXcYdcXXcYccXZcXZcXZcXZcXZcXXakYakYbYjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjakYcXYcYxcYfcYxcZbcZacYZcYlcYWcYVcYUcXXcYYcXZcYXcXZcXZcYTcXXcYdcXXcYScXZcXZcXZcXZcXZcXXakYakYaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjakYcXYcYxcYfcYxcYxcYRcYQcYKcYJcYMcYLcYOcYNcYPcXZcXZcYFcYEcXXcYDcXXcYCcYBcXZcYIcYHcYGcXXakYakYbYjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjakYcXYcYxcYfcYxcYxcYRcYQcYKcYJcYMcYLcYOcYNcYPcXZcXZcYFcYEcXXcVBcXXcYCcYBcXZcYIcYHcYGcXXakYakYbYjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjakYcXYcYxcYfcYxcZbcZHcZGcZFcZEcZEcZEcZDcZCcZBcZAcZrcZqcZgcZgcZgcXXcZtcZscXZcZucZwcZvcZycZxcZxcZzboxcZpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjbYjbYjbYjbYjbYjbYjbYjbYjccYbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjakYcXYcYxcYfcYxcZbcZocZncZmcZlcZlcZlcXXcZicZkcZjcXZcZecZdcZccZgcXXcXXcZfcZhcXXcXXcXXcXXakYakYbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjccYbYjbYjbYjbYjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagbYjakYcXYcYfcZUcYfcZVcZocYmcZgcZgcZgcZgcZgcZYcZXcZWcZXdabdaddacdaacZgcZgcZRcZQcZZcYfcZUcYfcXYakYbYjbYjbYjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 188e68feb81bb939115ffb1545ba78a8f8312586 Mon Sep 17 00:00:00 2001 From: Segrain Date: Mon, 21 Oct 2013 05:06:46 +0300 Subject: [PATCH 018/178] Money spawning. --- code/modules/economy/ATM.dm | 29 +---------------------------- code/modules/economy/cash.dm | 11 ++++++++++- 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index b43c73ca66..32dc6cbc9d 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -282,7 +282,7 @@ log transactions //remove the money authenticated_account.money -= amount - withdraw_arbitrary_sum(amount) + spawn_money(amount,src.loc) //create an entry in the account transaction log var/datum/transaction/T = new() @@ -340,33 +340,6 @@ log transactions src.attack_hand(usr) -//create the most effective combination of notes to make up the requested amount -/obj/machinery/atm/proc/withdraw_arbitrary_sum(var/arbitrary_sum) - while(arbitrary_sum >= 1000) - arbitrary_sum -= 1000 - new /obj/item/weapon/spacecash/c1000(src) - while(arbitrary_sum >= 500) - arbitrary_sum -= 500 - new /obj/item/weapon/spacecash/c500(src) - while(arbitrary_sum >= 200) - arbitrary_sum -= 200 - new /obj/item/weapon/spacecash/c200(src) - while(arbitrary_sum >= 100) - arbitrary_sum -= 100 - new /obj/item/weapon/spacecash/c100(src) - while(arbitrary_sum >= 50) - arbitrary_sum -= 50 - new /obj/item/weapon/spacecash/c50(src) - while(arbitrary_sum >= 20) - arbitrary_sum -= 20 - new /obj/item/weapon/spacecash/c20(src) - while(arbitrary_sum >= 10) - arbitrary_sum -= 10 - new /obj/item/weapon/spacecash/c10(src) - while(arbitrary_sum >= 1) - arbitrary_sum -= 1 - new /obj/item/weapon/spacecash(src) - //stolen wholesale and then edited a bit from newscasters, which are awesome and by Agouri /obj/machinery/atm/proc/scan_user(mob/living/carbon/human/human_user as mob) if(!authenticated_account) diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm index ff1fd9aaab..c352caa88d 100644 --- a/code/modules/economy/cash.dm +++ b/code/modules/economy/cash.dm @@ -62,4 +62,13 @@ name = "1000 credit chip" icon_state = "spacecash1000" desc = "It's worth 1000 credits." - worth = 1000 \ No newline at end of file + worth = 1000 + +proc/spawn_money(var/sum, spawnloc) + var/cash_type + for(var/i in list(1000,500,200,100,50,20,10,1)) + cash_type = text2path("/obj/item/weapon/spacecash/c[i]") + while(sum >= i) + sum -= i + new cash_type(spawnloc) + return \ No newline at end of file From 6655ae9b1125f44ee21c74f372c554701e72b58e Mon Sep 17 00:00:00 2001 From: Segrain Date: Mon, 21 Oct 2013 05:10:33 +0300 Subject: [PATCH 019/178] Wallets and cards. --- .../objects/items/weapons/storage/wallets.dm | 2 ++ code/modules/mob/living/carbon/human/human.dm | 21 +++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 86b12f693e..83edc1968a 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -34,6 +34,7 @@ if(.) if(W == front_id) front_id = null + name = initial(name) update_icon() /obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) @@ -41,6 +42,7 @@ if(.) if(!front_id && istype(W, /obj/item/weapon/card/id)) front_id = W + name = "[name] ([front_id])" update_icon() /obj/item/weapon/storage/wallet/update_icon() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1957fb2976..b63e7b8f10 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -468,21 +468,20 @@ //gets name from ID or PDA itself, ID inside PDA doesn't matter //Useful when player is being seen by other mobs /mob/living/carbon/human/proc/get_id_name(var/if_no_id = "Unknown") - var/obj/item/device/pda/pda = wear_id - var/obj/item/weapon/card/id/id = wear_id - if(istype(pda)) . = pda.owner - else if(istype(id)) . = id.registered_name - if(!.) . = if_no_id //to prevent null-names making the mob unclickable + . = if_no_id + if(istype(wear_id,/obj/item/device/pda)) + var/obj/item/device/pda/P = wear_id + return P.owner + if(wear_id) + var/obj/item/weapon/card/id/I = wear_id.GetID() + if(I) + return I.registered_name return //gets ID card object from special clothes slot or null. /mob/living/carbon/human/proc/get_idcard() - var/obj/item/weapon/card/id/id = wear_id - var/obj/item/device/pda/pda = wear_id - if (istype(pda) && pda.id) - id = pda.id - if (istype(id)) - return id + if(wear_id) + return wear_id.GetID() //Added a safety check in case you want to shock a human mob directly through electrocute_act. /mob/living/carbon/human/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/safety = 0) From 4d79764478af65bf41e2c81973d84b9d82d4af12 Mon Sep 17 00:00:00 2001 From: Segrain Date: Mon, 21 Oct 2013 05:13:09 +0300 Subject: [PATCH 020/178] Vox wallets. --- code/modules/admin/verbs/vox_raiders.dm | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm index 5548aab001..7359a026b4 100644 --- a/code/modules/admin/verbs/vox_raiders.dm +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -57,13 +57,16 @@ var/global/vox_tick = 1 equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(src), slot_back) equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_r_store) - var/obj/item/weapon/card/id/syndicate/W = new(src) - W.name = "[real_name]'s Legitimate Human ID Card" - W.icon_state = "id" - W.access = list(access_syndicate) - W.assignment = "Trader" - W.registered_name = real_name - W.registered_user = src + var/obj/item/weapon/card/id/syndicate/C = new(src) + C.name = "[real_name]'s Legitimate Human ID Card" + C.icon_state = "id" + C.access = list(access_syndicate) + C.assignment = "Trader" + C.registered_name = real_name + C.registered_user = src + var/obj/item/weapon/storage/wallet/W = new(src) + W.handle_item_insertion(C) + spawn_money(rand(100,300)*5,W) equip_to_slot_or_del(W, slot_wear_id) var/obj/item/weapon/implant/cortical/I = new(src) From 219fac680d5689c1f888b262782a7f3087595226 Mon Sep 17 00:00:00 2001 From: Nanai Date: Mon, 21 Oct 2013 07:09:46 -0400 Subject: [PATCH 021/178] Changes the vending machine to account for new drinks, adds grape juice to the juicer. --- code/game/machinery/kitchen/juicer.dm | 1 + code/game/machinery/vending.dm | 38 +++++++++++++++------------ 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/code/game/machinery/kitchen/juicer.dm b/code/game/machinery/kitchen/juicer.dm index b237f8223f..dc62b875ee 100644 --- a/code/game/machinery/kitchen/juicer.dm +++ b/code/game/machinery/kitchen/juicer.dm @@ -20,6 +20,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/orange = "orangejuice", /obj/item/weapon/reagent_containers/food/snacks/grown/lime = "limejuice", /obj/item/weapon/reagent_containers/food/snacks/watermelonslice = "watermelonjuice", + /obj/item/weapon/reagent_containers/food/snacks/grown/grapes = "grapejuice", /obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries = "poisonberryjuice", ) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 77fe35c4d3..1476b13d0a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -192,12 +192,12 @@ // Vend the item src.vend(src.currently_vending, usr) currently_vending = null - else - usr << "\icon[src]You don't have that much money!" else - usr << "\icon[src]Unable to access account. Check security settings and try again." + usr << "\icon[src]You don't have that much money!" else - usr << "\icon[src]Unable to access vendor account. Please record the machine ID and call CentComm Support." + usr << "\icon[src]Unable to access account. Check security settings and try again." + else + usr << "\icon[src]Unable to access vendor account. Please record the machine ID and call CentComm Support." /obj/machinery/vending/attack_paw(mob/user as mob) return attack_hand(user) @@ -594,7 +594,9 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 4,/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 4,/obj/item/weapon/reagent_containers/food/drinks/tonic = 8, /obj/item/weapon/reagent_containers/food/drinks/cola = 8, /obj/item/weapon/reagent_containers/food/drinks/sodawater = 15, - /obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 30,/obj/item/weapon/reagent_containers/food/drinks/ice = 9) + /obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 30,/obj/item/weapon/reagent_containers/food/drinks/ice = 9, + /obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor = 2,/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao = 2, + /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe = 2,/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine = 5) contraband = list(/obj/item/weapon/reagent_containers/food/drinks/tea = 10) vend_delay = 15 product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?" @@ -631,9 +633,9 @@ /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 6,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 6,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 6, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6) contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6) - prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 20,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 30,/obj/item/weapon/reagent_containers/food/snacks/chips =25, - /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 30,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 20,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 30, - /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 25) + prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 1,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 5,/obj/item/weapon/reagent_containers/food/snacks/chips = 1, + /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 2,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 1,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 1, + /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 1) @@ -645,11 +647,13 @@ product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space." products = list(/obj/item/weapon/reagent_containers/food/drinks/cola = 10,/obj/item/weapon/reagent_containers/food/drinks/space_mountain_wind = 10, /obj/item/weapon/reagent_containers/food/drinks/dr_gibb = 10,/obj/item/weapon/reagent_containers/food/drinks/starkist = 10, - /obj/item/weapon/reagent_containers/food/drinks/space_up = 10) + /obj/item/weapon/reagent_containers/food/drinks/waterbottle = 10,/obj/item/weapon/reagent_containers/food/drinks/space_up = 10, + /obj/item/weapon/reagent_containers/food/drinks/iced_tea = 10, /obj/item/weapon/reagent_containers/food/drinks/grape_juice = 10) contraband = list(/obj/item/weapon/reagent_containers/food/drinks/thirteenloko = 5) - prices = list(/obj/item/weapon/reagent_containers/food/drinks/cola = 20,/obj/item/weapon/reagent_containers/food/drinks/space_mountain_wind = 20, - /obj/item/weapon/reagent_containers/food/drinks/dr_gibb = 20,/obj/item/weapon/reagent_containers/food/drinks/starkist = 20, - /obj/item/weapon/reagent_containers/food/drinks/space_up = 20) + prices = list(/obj/item/weapon/reagent_containers/food/drinks/cola = 1,/obj/item/weapon/reagent_containers/food/drinks/space_mountain_wind = 1, + /obj/item/weapon/reagent_containers/food/drinks/dr_gibb = 1,/obj/item/weapon/reagent_containers/food/drinks/starkist = 1, + /obj/item/weapon/reagent_containers/food/drinks/waterbottle = 2,/obj/item/weapon/reagent_containers/food/drinks/space_up = 1, + /obj/item/weapon/reagent_containers/food/drinks/iced_tea = 1,/obj/item/weapon/reagent_containers/food/drinks/grape_juice = 1) //This one's from bay12 /obj/machinery/vending/cart @@ -673,7 +677,7 @@ products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4) contraband = list(/obj/item/weapon/lighter/zippo = 4) premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2) - prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60) + prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15,/obj/item/weapon/storage/box/matches = 1,/obj/item/weapon/lighter/random = 2) /obj/machinery/vending/medical @@ -741,7 +745,7 @@ icon_deny = "nutri-deny" products = list(/obj/item/beezeez = 45,/obj/item/nutrient/ez = 35,/obj/item/nutrient/l4z = 25,/obj/item/nutrient/rh = 15,/obj/item/weapon/pestspray = 20, /obj/item/weapon/reagent_containers/syringe = 5,/obj/item/weapon/storage/bag/plants = 5) - contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5) + premium = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5) /obj/machinery/vending/hydroseeds name = "MegaSeed Servitor" @@ -753,10 +757,10 @@ /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/replicapod = 3,/obj/item/seeds/soyaseed = 3, /obj/item/seeds/sunflowerseed = 3,/obj/item/seeds/tomatoseed = 3,/obj/item/seeds/towermycelium = 3,/obj/item/seeds/wheatseed = 3,/obj/item/seeds/appleseed = 3, /obj/item/seeds/poppyseed = 3,/obj/item/seeds/ambrosiavulgarisseed = 3,/obj/item/seeds/whitebeetseed = 3,/obj/item/seeds/watermelonseed = 3,/obj/item/seeds/limeseed = 3, - /obj/item/seeds/lemonseed = 3,/obj/item/seeds/orangeseed = 3,/obj/item/seeds/grassseed = 3,/obj/item/seeds/cocoapodseed = 3, + /obj/item/seeds/lemonseed = 3,/obj/item/seeds/orangeseed = 3,/obj/item/seeds/grassseed = 3,/obj/item/seeds/cocoapodseed = 3,/obj/item/seeds/plumpmycelium = 2, /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/plastiseed = 3,/obj/item/seeds/riceseed = 3) - contraband = list(/obj/item/seeds/amanitamycelium = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/libertymycelium = 2,/obj/item/seeds/nettleseed = 2, - /obj/item/seeds/plumpmycelium = 2,/obj/item/seeds/reishimycelium = 2) + contraband = list(/obj/item/seeds/amanitamycelium = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/libertymycelium = 2, + /obj/item/seeds/nettleseed = 2,/obj/item/seeds/reishimycelium = 2) premium = list(/obj/item/toy/waterflower = 1) From 4c01ecaee4b3d99c9a6a2df68a164bfd16e03ede Mon Sep 17 00:00:00 2001 From: Nanai Date: Mon, 21 Oct 2013 07:11:40 -0400 Subject: [PATCH 022/178] Fixed iced tea, adds canned ice tea and grape juice, adds grape juice, melon liquor, blue curacao, grenadine, poisonous wine. rebalances absinthe, and places it within the vendor. --- code/modules/reagents/Chemistry-Reagents.dm | 102 ++++++++++++++++-- code/modules/reagents/Chemistry-Recipes.dm | 49 ++++++++- .../reagent_containers/food/drinks.dm | 30 ++++++ .../reagent_containers/food/drinks/bottle.dm | 32 ++++++ .../food/drinks/drinkingglass.dm | 38 ++++++- 5 files changed, 233 insertions(+), 18 deletions(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index fb172e2801..8f16252455 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -2340,6 +2340,12 @@ datum name = "Berry Juice" id = "berryjuice" description = "A delicious blend of several different kinds of berries." + color = "#990066" // rgb: 153, 0, 102 + + drink/grapejuice + name = "Grape Juice" + id = "grapejuice" + description = "It's grrrrrape!" color = "#863333" // rgb: 134, 51, 51 drink/poisonberryjuice @@ -2408,6 +2414,12 @@ datum description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" color = "#DFD7AF" // rgb: 223, 215, 175 + drink/grenadine + name = "Grenadine Syrup" + id = "grenadine" + description = "Made in the modern day with proper pomegranate substitute. Who uses real fruit, anyways?" + color = "#FF004F" // rgb: 255, 0, 79 + drink/hot_coco name = "Hot Chocolate" id = "hot_coco" @@ -3010,20 +3022,69 @@ datum name = "Absinthe" id = "absinthe" description = "Watch out that the Green Fairy doesn't come for you!" - color = "#33EE00" // rgb: lots, ??, ?? - boozepwr = 2 + color = "#33EE00" // rgb: 51, 238, 0 + boozepwr = 4 dizzy_adj = 5 - slur_start = 25 - confused_start = 100 + slur_start = 15 + confused_start = 30 - //copy paste from LSD... shoot me - on_mob_life(var/mob/M) + + ethanol/pwine + name = "Poison Wine" + id = "pwine" + description = "Is this even wine? Toxic! Hallucinogenic! Probably consumed in boatloads by your superiors!" + color = "#000000" // rgb: 0, 0, 0 SHOCKER + boozepwr = 1 + dizzy_adj = 1 + slur_start = 1 + confused_start = 1 + + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom + M.druggy = max(M.druggy, 50) if(!data) data = 1 data++ - M:hallucination += 5 - ..() - return + switch(data) + if(1 to 25) + if (!M.stuttering) M.stuttering = 1 + M.make_dizzy(10) + M.hallucination = max(M.hallucination, 3) + if(prob(1)) M.emote(pick("twitch","giggle")) + if(25 to 75) + if (!M.stuttering) M.stuttering = 1 + M.hallucination = max(M.hallucination, 10) + M.make_jittery(20) + M.make_dizzy(20) + M.druggy = max(M.druggy, 45) + if(prob(5)) M.emote(pick("twitch","giggle")) + if (75 to 150) + if (!M.stuttering) M.stuttering = 1 + M.hallucination = max(M.hallucination, 60) + M.make_jittery(40) + M.make_dizzy(40) + M.druggy = max(M.druggy, 60) + if(prob(10)) M.emote(pick("twitch","giggle")) + if(prob(30)) M.adjustToxLoss(2) + if (150 to 300) + if (!M.stuttering) M.stuttering = 1 + M.hallucination = max(M.hallucination, 60) + M.make_jittery(40) + M.make_dizzy(40) + M.druggy = max(M.druggy, 60) + if(prob(10)) M.emote(pick("twitch","giggle")) + if(prob(30)) M.adjustToxLoss(2) + if(prob(5)) if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/datum/organ/internal/heart/L = H.internal_organs["heart"] + if (istype(L)) + L.take_damage(5, 0) + if (300 to INFINITY) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/datum/organ/internal/heart/L = H.internal_organs["heart"] + if (istype(L)) + L.take_damage(100, 0) + ethanol/deadrum name = "Deadrum" @@ -3275,6 +3336,27 @@ datum color = "#FFFFFF" // rgb: 255, 255, 255 boozepwr = 1.5 + ethanol/melonliquor + name = "Melon Liquor" + id = "melonliquor" + description = "A relatively sweet and fruity 46 proof liquor." + color = "#138808" // rgb: 19, 136, 8 + boozepwr = 1 + + ethanol/bluecuracao + name = "Blue Curacao" + id = "bluecuracao" + description = "Exotically blue, fruity drink, distilled from oranges." + color = "#0000CD" // rgb: 0, 0, 205 + boozepwr = 1.5 + + ethanol/suidream + name = "Sui Dream" + id = "suidream" + description = "Comprised of: White soda, blue curacao, melon liquor." + color = "#00A86B" // rgb: 0, 168, 107 + boozepwr = 0.5 + ethanol/demonsblood name = "Demons Blood" id = "demonsblood" @@ -3476,4 +3558,4 @@ datum return // Undefine the alias for REAGENTS_EFFECT_MULTIPLER -#undef REM +#undef REM diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index b5720a448b..07c1c77869 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1461,11 +1461,43 @@ datum required_catalysts = list("enzyme" = 5) result_amount = 10 + grenadine + name = "Grenadine Syrup" + id = "grenadine" + result = "grenadine" + required_reagents = list("berryjuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 + wine name = "Wine" id = "wine" result = "wine" - required_reagents = list("berryjuice" = 10) + required_reagents = list("grapejuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 + + pwine + name = "Poison Wine" + id = "pwine" + result = "pwine" + required_reagents = list("poisonberryjuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 + + melonliquor + name = "Melon Liquor" + id = "melonliquor" + result = "melonliquor" + required_reagents = list("watermelonjuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 + + bluecuracao + name = "Blue Curacao" + id = "bluecuracao" + result = "bluecuracao" + required_reagents = list("orangejuice" = 10) required_catalysts = list("enzyme" = 5) result_amount = 10 @@ -1654,6 +1686,13 @@ datum required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 1) result_amount = 4 + icedtea + name = "Long Island Iced Tea" + id = "longislandicedtea" + result = "longislandicedtea" + required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 1) + result_amount = 4 + threemileisland name = "Three Mile Island Iced Tea" id = "threemileisland" @@ -1952,5 +1991,9 @@ datum required_reagents = list("spacemountainwind" = 1, "coffee" = 1) result_amount = 2 - - + suidream + name = "Sui Dream" + id = "suidream" + result = "suidream" + required_reagents = list("space_up" = 2, "bluecuracao" = 1, "melonliquor" = 1) + result_amount = 4 diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 44de752b6b..86bd97d7ea 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -252,6 +252,16 @@ src.pixel_x = rand(-10.0, 10) src.pixel_y = rand(-10.0, 10) +/obj/item/weapon/reagent_containers/food/drinks/waterbottle + name = "Bottled Water" + desc = "Introduced to the vending machines on health nut protest, taste fresh, pure glacial* water! *Note: Might be tapwater." + icon_state = "waterbottle" + New() + ..() + reagents.add_reagent("water", 30) + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) + /obj/item/weapon/reagent_containers/food/drinks/beer name = "Space Beer" desc = "Beer. In space." @@ -273,6 +283,7 @@ src.pixel_x = rand(-10.0, 10) src.pixel_y = rand(-10.0, 10) + /obj/item/weapon/reagent_containers/food/drinks/space_mountain_wind name = "Space Mountain Wind" desc = "Blows right through you like a space wind." @@ -334,6 +345,25 @@ src.pixel_x = rand(-10.0, 10) src.pixel_y = rand(-10.0, 10) +/obj/item/weapon/reagent_containers/food/drinks/iced_tea + name = "Vrisk Serket Iced Tea" + desc = "That sweet, refreshing southern earthy flavor. That's where it's from, right? South Earth? Whatever!!!!!!!!" + icon_state = "ice_tea_can" + New() + ..() + reagents.add_reagent("icetea", 30) + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) + +/obj/item/weapon/reagent_containers/food/drinks/grape_juice + name = "Grapel Juice" + desc = "500 pages of rules of how to appropriately enter into a combat with this juice!" + icon_state = "purple_can" + New() + ..() + reagents.add_reagent("grapejuice", 30) + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) /obj/item/weapon/reagent_containers/food/drinks/sillycup name = "Paper Cup" diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index c958b351fa..64cd2c3e94 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -244,6 +244,38 @@ ..() reagents.add_reagent("absinthe", 100) +/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor + name = "Emeraldine Melon Liquor" + desc = "A bottle of 46 proof Emeraldine Melon Liquor. Sweet and light." + icon_state = "alco-green" //Placeholder. + New() + ..() + reagents.add_reagent("melonliquor", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao + name = "Miss Blue Curacao" + desc = "A fruity, exceptionally azure drink. Does not allow the imbiber to use the fifth magic." + icon_state = "alco-blue" //Placeholder. + New() + ..() + reagents.add_reagent("bluecuracao", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine + name = "Briar Rose Grenadine Syrup" + desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks." + icon_state = "grenadinebottle" + New() + ..() + reagents.add_reagent("grenadine", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine + name = "Warlock's Velvet" + desc = "What a delightful packaging for a surely high quality wine! The vintage must be amazing!" + icon_state = "pwinebottle" + New() + ..() + reagents.add_reagent("pwine", 100) + //////////////////////////JUICES AND STUFF /////////////////////// /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 48636b4b60..2aec56dc0a 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -60,7 +60,7 @@ desc = "Vitamins! Yay!" if("tomatojuice") icon_state = "glass_red" - name = "Glass of Tomato juice" + name = "Glass of Tomato juf" desc = "Are you sure this is tomato juice?" if("blood") icon_state = "glass_red" @@ -429,17 +429,25 @@ if("brownstar") icon_state = "brownstar" name = "Brown Star" - desc = "Its not what it sounds like..." + desc = "It's not what it sounds like..." + if("grapejuice") + icon_state = "grapejuice" + name = "Glass of grape juice" + desc = "It's grrrrrape!" if("icetea") - icon_state = "icetea" + icon_state = "icedteaglass" name = "Iced Tea" desc = "No relation to a certain rap artist/ actor." + if("grenadine") + icon_state = "grenadineglass" + name = "Glass of grenadine syrup" + desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks." if("milkshake") icon_state = "milkshake" name = "Milkshake" desc = "Glorious brainfreezing mixture." if("lemonade") - icon_state = "lemonade" + icon_state = "lemonadeglass" name = "Lemonade" desc = "Oh the nostalgia..." if("kiraspecial") @@ -449,7 +457,27 @@ if("rewriter") icon_state = "rewriter" name = "Rewriter" - desc = "The secert of the sanctuary of the Libarian..." + desc = "The secret of the sanctuary of the Libarian..." + if("suidream") + icon_state = "sdreamglass" + name = "Sui Dream" + desc = "A froofy, fruity, and sweet mixed drink. Understanding the name only brings shame." + if("melonliquor") + icon_state = "emeraldglass" + name = "Glass of Melon Liquor" + desc = "A relatively sweet and fruity 46 proof liquor." + if("bluecuracao") + icon_state = "curacaoglass" + name = "Glass of Blue Curacao" + desc = "Exotically blue, fruity drink, distilled from oranges." + if("absinthe") + icon_state = "absintheglass" + name = "Glass of Absinthe" + desc = "Wormwood, anise, oh my." + if("pwine") + icon_state = "pwineglass" + name = "Glass of ???" + desc = "A black ichor with an oily purple sheer on top. Are you sure you should drink this?" else icon_state ="glass_brown" name = "Glass of ..what?" From 50f2f0ae46e1a3eca20603861aad4af3596358ef Mon Sep 17 00:00:00 2001 From: Nanai Date: Mon, 21 Oct 2013 07:12:23 -0400 Subject: [PATCH 023/178] Removes pin necessity on vending machines. --- code/modules/economy/Accounts.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm index 00f947a2d7..ab5a5e6034 100644 --- a/code/modules/economy/Accounts.dm +++ b/code/modules/economy/Accounts.dm @@ -6,7 +6,7 @@ var/money = 0 var/list/transaction_log = list() var/suspended = 0 - var/security_level = 1 //0 - auto-identify from worn ID, require only account number + var/security_level = 0 //0 - auto-identify from worn ID, require only account number //1 - require manual login / account number and pin //2 - require card and manual login From 101459ed497991244fd1f55f21a885d4ba093794 Mon Sep 17 00:00:00 2001 From: Nanai Date: Mon, 21 Oct 2013 07:13:04 -0400 Subject: [PATCH 024/178] Replaces Jailbreaker Verte with Warlock's Velvet in the contraband crate. Guarenteed !!!fun!!! --- code/datums/supplypacks.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 117e09538d..297bdb890d 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -814,7 +814,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee contains = list(/obj/item/seeds/bloodtomatoseed, /obj/item/weapon/storage/pill_bottle/zoom, /obj/item/weapon/storage/pill_bottle/happy, - /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe) + /obj/item/weapon/reagent_containers/food/drinks/bottle/pwine) name = "Contraband crate" cost = 30 @@ -997,7 +997,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee containername = "Disposal Dispenser Crate" group = "Engineering" access = access_atmospherics - + /datum/supply_packs/bee_keeper name = "Beekeeping Crate" contains = list(/obj/item/beezeez, From 9c2306014fdcd05f09b76a24bca4ebdf1637b29e Mon Sep 17 00:00:00 2001 From: Nanai Date: Mon, 21 Oct 2013 07:15:48 -0400 Subject: [PATCH 025/178] Replaces/touches up sprites for Milkshake, Iced Tea, Canned Iced Tea and Lemonade with superior quality. Added sprites of rose grenadine(bottled/glass), melon liquor, blue curacao, sui dream, absinthe(glass), and poisonous ichor(glass/bottle) --- icons/obj/drinks.dmi | Bin 60569 -> 65274 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 97b259bfb079c5754ac8c3d1897271091724ce20..8bbcfbe54e7147e94b45634a1f74014043a550d4 100644 GIT binary patch literal 65274 zcmZs@1yCH%7d1MIyOZE78VDh{26qxP5Fog_yR%4ehXBC?1b24{PH=a3C-`FD=J$W^ zt9n(hYNobldV2bH_w=1P=bqj$B?W0rG!irb05D}`Bt8QG92m9(C`hm~Ep&5l0RR!f zQ&q!R!o_b>xpvP`pX=LXzjogWA-{)ap-Php)fIKh=T@Bx z`ioyBrzI^bo-^g|5>hGLQ!4GckG$sny$qJaFW6^)!XquWt8uCc8CYq0i z(h(koOIx7eI3^t{RCtDJtR)LRsFmLyx8b@wZWduCZ8Xj{45yHa`uqnwx6y-J z20_+L&LQb7NfAT65h=qSNy1TBFWGL7A%&A+3|W8zcsWJk5^MG2+teO|(aS;u3|l(# z>D!=*Z!e^D2(k5ShWd&+L|yW4WFzC=2*WK@{RBt(Yw-+=pT_WgJ}oc3tJL+taxOhB zSut%`uo-nU$Rmi>wTTgAizk!~=vobO`dYg!5UtOoU|<|an~^h#o3PAh1V?y9J1jt- zfYC1LaEu=KW@yy?FFo?Kki61$zYLP6p^@{tDF%q!!hqE26`Y>fr&%OhxE;r9EVtLi zf>Ym{bCLv+Em}&79)JDSdl2}u<8A_c6!ViA^3Z?dJd#hT$9MQO+$@4W$x8Q`y3pv$ zQkdY5I*!y~Um!H|m2rejQSN6YT+DoIuIgPm(9(!&&5D2`zt{aezL(*8VVFQ+Om@+C zGKPD}RULk#XuP}H8=f=5K}~kXh=BCd+sN>jEiCvVbAmZ@Yu`)y7|@3j>8ZcH0W0xv z<`lMYO}@&t4{qRomuWV_cvZ!C@2Ilv0jZ5tq)b9Asb~V{%%)8fubYoTtG1`UKDuFY z3oJ4*85#x(F5|kQ9PTAr79_Ew@OKJv!GLHjj*=uXcpg_T`A)Py3;WA0Kv7<%@&`mHn>qqRi( zb-#osKJ6$v%g2<4FS9f~8J`cll_oxaaJf|L58_k)LE2Wz&+IY&c}2Zt`aU;6KE}^O;C)tFJv;PM^C^*5TNy^@q8}n z6N!(t@nZ5N{RX%geLQcLTav$tz3B!=UezWKHcw4&brUMYCY#Bg5UqyGx2Tt7j+79_ z9!*FBL8DWO!Z=dx<*&-bA)TOA{DWXLM z|3_wIS)2EE?OQddqc^TjH*O1-30x%p;rl7Ayl*iktS40{Y*+_76{TV>X<3`I=(oU+ zoCuPBN52z>DBjJiH&0vl9g!lvOdOO` zLcEmcmo~(g_2a&iv|wdH?KjjxU$85fC;Fn;XH8wN-LL$gmwKig$*9o_J#$I`05Bjc zA*$-0ew^XqO|bLSFFZ!(Wm?k|L+5Xg0&1EFf1^bh6|UK;WcAREUNl={*i|1c?Voc! z8~%D)lTb-nBy#dlN;EsYOQsPYY<>D+!O1jpjWP{0EjHH5%+-JI$#aJ*?Z=>Zdrixa zJ&v`#2LW+1EMy`Kq`)qH*4m&5XW)NH&pw-m=TzM|C*r6e*QX>x&hob+|yL*J)E&Tr^#xc_b5w5gJ}um86w+o5{gs{p)9osr)#Z-rwU% zTqPa(^}bJ?7oFjX>XSutdbtN?daFu-#vK%44r-09kf!8*1Ee5aE`i&H!{;VMNkAYD z>lfw(kveA|0j;J{#B8Hy_vEin7V`3#Kz4ootGc>6K;#E1pI~9BaHvo3()#sB^K-Hp zZNG<8{^Lbugc@apD>b=i$+PHg3=~-7(k0&MG$&$F3Xy&L_6>jp1t9>C8OvVSEnzpo zOyT7xR#(4>Wr&Ff!E?&(A}b>U>C!hJ36KDD1_v`-qncaK=2k5rx5bw=wU3?n_c9m`7jCSFP9ANs z!v7A%Lc(@a7?R=h79Zt{*=fccl?j>p$k|62#fBI*I}hjZV|OpzD7?7QQxs-mUnKEV z>XUxDulM-``|+xJV7wI1Utf)aCf@^pL%F6q3~lFU{o{qE+`0ZR5_ootNm_o`zPn6} zfs_j`hOVe60qbR5?+Zy+WP6VWICd*a zRrh<*NyyJOp;1)KP_=yh$vjz37M7UpogG|LF$HnW)6_M%;(9n9>|s7LE!E{;^*!IN zkC^diE3!D&sAr@E%Jt>u4^ts!Zo^}^uF?Ye;IgWXFjSG=$8@KBX-RA5g_!k<+o)r= zNmEfIEV9t=OzN9I%rg0GwG0fX!o$N^?Xzzr!{XL&jw-Sn^!y}y79(W#d3-$>N5pW4 zRv?NdCDOOJXorEkx_Ush4Xnm@XX{3IqtG90WHV1;tuwb4~{}@}96D>k_k`L!#jynUln) zE4iQt-#sF z9}pr3;C=Zjt&;%dT(R)SIkR#1WMrD^2cySYFN2dTI2nS~>f8aHt5@lM9Z|EW4n()> zRx7q4{G8x8PDBqn!Ukctt=@>sk8f?U=h(VMYfUW`7*%QsJA;x;{9HB<3A1bw%d>Da zo)3~_r18O5ZHDPdktAHj^0=06hvEu^t^&pduWRLe>z*21J^LQ8GI_wo4npNCi2SkRpBT{CvJKkFS;Q#kA;7kTKRDH%5vIiJ@mDt z@XpqGrk4l`@X6X35 zUDy{jqUmTX3X_(L#E6g#?xhCdD=#i3SSm(O82w>paQrv-ZMAGgCt77(J8IvM$Sp9M zh1Una%Vmbg)0R>}qIDkBPnWXSUUv`*uU2-lkwvQSKM>&+i8qle{N80Xjagl0jxgkd zM7G=le_dW?-;FLv$BKf4!Ryp&*(~$}ypbM(YlZuh<8NWH^UrqO;5ix^dbOCIM2&qH zxZ;?^?ix4ohM1*apg}fI>n41r42`tRRo^r>Lz5zsC{112-jf9O&pG^C@r{;insLr%!Pow_(N_$ay3G;m`>)|G~)>wFRikLg~B#2eP zC!jBo1~+9m4SsZW2?MM1HjvL=NrdYyVo~wCZ-Y~i!Q7CX`cjG<{ogkTF3sj{Xx+soUeNeVWDZZWYSpQDhFay&uk%~)U1xq`u56rsA9PK(Rs2;b0 z`}eD!yt2DIrfkm~@{iZx5x>ZNbxTQ%t8Rq7Rp1H73@hf)+jOxbdIRq6+_zs5NOmxW zPm;m*n`rKYO~G@RNCj!v_DW)3b0Ie)lxD3&wOH>appxU_<4cfp|W1BVDEL` zPZI+WfvblJA`VMH?L7-56FEHE7gIOhzBezevO}W{&iEV79WQ14=B9n03BJSGQ->7C zuaxJdBd{!*gl>?!CD0$SE_3UZlQRl&p2oztSz(!wfjtmu2`z*7^L*kl9Fk6sJd(o% zVIj9Hy6sfhz8!v5YiA)0;W(1GPta@lPD&0*&}Cdy*?bi0xUcPo0ty#p{d?#tmk|@( zE=^-(z9(_;p{lw%jj-@bZ6@XyWo`-%DqQ_Z3Og{?kAS^eriQqqR3*PWjNH*tkr!SaWNPsl?aSPL(>9$M#41tQBU|`&7 zrGaqeuxSYP+%ymVvN_FmN%-`|W;$Sn)sj5xrx2f1jLjGEPUB_hm>;!sQ?bAB^Fs|` z%hJ2tApKn$OLj1w7W|Kx^>~Lx{8L<3E}14aBuiLx~~A>BO#6$=TU&N1ji#B zww)aO$6r3??C!V;hthHZ2w|5+`Am*z0u;iAo9{%17#?>Yi{{%;fb!-${>KUl>`^l8 zkC;jf$o@yZqH@!6y}s3PMpyGmCTUA4)g}wOp(Z3b8Q3ppFN^PpF{H+RaNCeDzI%6U zpVq&H`UfQiUVPMoM2=Ld_T}plhjbKbnDI?u@OxCyF9gATmwi%gfva6wA_76@5dyKO zP>oeIIP&aUx2M~-o(f=u0!?(IGvcDrtw)IngMXPMx4W^&^PKh-!TUR7RJ8BSe*DFf z%gCC|2D_lrhhJ~Di3IDvrQOuCNuu+d2ztmVCq^I7Pumg`sy1k`Hyf|D`v5>g%R@JU zBF`*zSU%9AJ2bjpo?=zlQZ6*dIw;4wXV#0Fbuk65TCvLwUa}MWju5RZpT zDV|Rzk#lt8(6aJ10oG@Z6-*A?ZNgx|i)K7|k~+SoH0sa1gD8}+!DW8^l#wNLo;JIf zc%*l)F1^B{{1v_$wUdwP&x<5?Ixqv^i6>1+5`4#|G=epRcPo;k(r!(NDC%$|+5Rmn zBaO*dn0JvsnWF?(wNT?KdiAw$gU?LDY!&;L8Y68Y@V}uLc&F>V?T)CX4P>blnl5x0)!}GqQmb zbKX2D3%(a4KVK40O$i{&?N2)5mT*42E+2qBxJ*+09}2ABf6`;)f8HMClz=oj?NMt4 zK~>B?e4B;HMPcE8CP%g|MsGDGj!j6;zDIfAVtjtyt~Y{B5d7q+->}sGa_ZJ`WOBY30Lb+c@sIJEepIkoSw?fHLjRT|4@Jj!mnciGB8F zH*~2oXJGMHHW!KNpqSZtKRp{-eDF3AE+_!1eeQL$@rR4B@CKh2YLcjW68!!`+n5#< z1dpI|yB13Uv!{zdB4Ea>KvF)R{-5hJQZKrU?m|6yng3<`(|&#d`ij*+NA%E6b3FIeb!7pD+q=6&?~7%f#JB!yglO74 zT7h4cK(w3$Mz@zo%3B~qXNW8St*hO9wZu8&Jc5La_FYNqtRIS5XTSXf_%MqW^AUeZ zEAHy`G$0-5-n$Ka{oR(5=P-B!&L3Um&!4OHBXb*>+?m8Sw`}@iIc3}5`ev^8r&n2c zNN(2QVk7-Q#Gy&v;)VA_Q49wGs9cofH?z`-g~tI07D&c$^`i^nsFx2p#0j_>+@O9l z6;F$gWLW*&Eh|FL5>mM=3o(PuyD4?wLel6>@(60z>g&(XtrA>D*xCedihAm5YT3v# zHok*KDH(#kFl6t6_I7nT>kjvc5fS6xQBx)L->d6Fej4>{jK_&-xR_pz$po{pk-L;@ zLh!D(qYmmp6GH^sun+n;Gh;sh_=bGD^1*wYm=X{Cs zCMGAwS=ZR5Ib;WS(fxrq%hFnjIHHFyK4x+_>SsmI&7BhV4gP_igy19)Ab0eJ_7I@Q zFO!j^wb?@%WRg6c08c^o(9(6`wNnX?d#XrM9;~#6YFgujOrosC(#GncM{Q^ zC)k$~#+s@BX2Q)*w2kBW?IZcpGXSX5IUJ5uPkvI!my^%q`^m_!WS;gkLuB^w#D!kY zfkm(=pl1_V-Uv&WzOW4$qB&-da~EVYKn*`AnR|`d*l%`Lm1?RxTys5ufUIp>O%wpV zJcXCe`3Vld3dyYqF-s3le^`2~-pn7>c|2fcMaqANQE{$Z|Pl^79;8eo$Gn_jXueLYN zg%r8vA1qN;l8x)n`(ES7;wkuNf_iFt-zu=9um3Xf{ z;2%fpBiJ{%`~}Zuj$6w3{`r8k$R&V$OFA7Ct#rP=e*4fB0asWmqQ;vz&Do_l2g$eb z;B^|^v|Ye46;WWzIr)uS2K%DdXC+$MdJxu@H9|7p9FIdwL4YR+3(T=Ue@oB`Fi61J zaqAmvzQZDDVfFC64R_9UB*4hMl~~dl8dRO?h82$7VpGB|&hXVRrddz!QYH>B?KI}> z)aMKU3UBdL`2=Mq-TVSvl0XJ9Y>O25lTZ2n9npV008s(A4?7rp*@ug6C!%QZx=C$p z(*Pif`8Ex`9bwHj3x@8+z>XBXYO0%E^WApDIjg`~Bp;KW$Ub(zJNoRWf|4fET zWU+$@2^Gi$8WEFqT{)sTgPHP9Ys$@$pVgIvJ#(J)GpW>dqVjrF_tVm-^61Qq+qOG7 zm;L&ali@o{&e~qC&AAFXjsEq7I3jf3kqIFDxpln}mXGX?SH|nLPB>rnNNzuV?lHg| z>(t-L|16;N(V(#GTSbx}^Izv)+XfZDo|pPE^n6Mu3kLDiuLdCl;cz0s*;CKWQ`+jt zTH1cJ4hVGVqE1i2G{5W%lDf8T#m;PlznV?TwdiSDhE&w$^Z7BJWW|LZ_I#pQJeMd2 zVH{>Y4I0~1$3(ESr}#dcG^F<8Os^%dAyffSNtu_LM7b2u$k@N?mSNRBnmtkNM^zPC zl_I~b^-{R^%8zf5wxq19cit2VQ={(VK9gEm~ z{536Ln!1arSP6QU@fw>YtP31P(y6vp<;{+e3*ZD`s+TEi-S9pIM0Uvl{uCmHgT5oz z$-j)juMqfw*Xm>wa#>xW2r2~%znIiY^^rbA!tB{cU=g7mh!@tra88??{LIOT6s}l8 zn#MV|HY5 zxu83Q{w2K&sdCdU%>2dy2g5T@I7c4dykY5JAxj%c39XC4usacQ!F&6MNvomcM_AR; zNiEoj)fp_)!?v|iRE_`;;U#>T(@Tm6fe;*cO$CHL4O*{^HX9NZ(A)@)Dcb`Coov>x z9w_&b+PJ|^1v&~9;StD)>)dE}gYhDMFT+f!tp_aa&%v$x_pg;yRfC2>@aMZKW7#>) z0cvV$mN!5D9Q}>G=xtD1CS=HTe$QUfp~Z9%%HeqqRO2U4mOft>zAq86*px805F*hX zmGG%~orr_+_=yi#UvHJ0ZX%4F%LC=jdv9q1{gEL_DWa^E85iSthzN6a92A;(f9<=u z&9AMg^8GvyD>SMCoRbi%&OD;U`ZvbJL$(&4y!2l#7!P^R1}k+!)YJ#aGo8%jWH-8@ zx`n^inBdv>pnnb!8`i?~R$N{Wo8lY3qxWuOf9+J>kv{rzW%Y&S`CrQ(cbQn60DaO} z|Ga5hptEz{pH=If<3(3ss(_J%d1-(K9o5WqXcig|Fg^;&Tll=xdNVg?l~10hr}=hr z?BQhR0Jtf?hgvb$F(R^4RsaB5dKT(e&}WwsnJ*r!wJWv-_(H7+X?7Y*MgNV{mp^dx zC$5^F`jnH%S^h)flB~orS)P3=Iz^hVdTbk}=2Y12oqFRGqWaAke-xXF!rC>;xQBII zx#@Ks3}@EJ(khpA&`=-_FTwcCNlQ9Lu^1wZO&n~N=7*N1yPht6GXMl#wkfG}^dt4` z6%~BqK8CCnbXLrXMkRH zLc)@@qU^^_W67V=;SpatNZ0)Ig^RDn{pqtcOTTDE`-{Lg-V&3RVv~3I7pSbi@yrV! z0RS{%Ufq!0J$!w&pP<^MldIBS$-$Sgg0mG2LMUzT*Q*(RDG?wFRE%&u9lL(eNsLE5 z>2Il%tW2r$6c@ENTLQ4BgnO^w^!*5Vyf2X_j2rK8nt1ao!nTdtr+0M4OKgsXH_~}* z;?Kty0Z5+k!{r#{gSQE4KyRchF=I;Im!!Lqg*30VverU{w$ZvEN}Fld>q@Q>*xpZ~A~~;@GK+ zS<067W8OGFx)E%m?F#?uI=Tb_-s8C)Z2CedkAQ^I*9=4bmKB9D=-p=sPN*sFp05WT zw|1RW&AU+8c$*;KiWf|YR?H#SkQILLM95*FXz**S0lT(jw8zDxQb36P-}SrT4hP8b zxovNemyIzqq!t8IOvSu^8Z{gj%Zg#!7?sRQtmiR^>3jL9TA6Zj>@Nt(>tx#)Gk7^w zgcVvoJx$Y6nm+NNDOxjv|NQkpLbF3O8@TcmMA(?83I%63PlsLk&t_88YxQVi6plTC z9_DNUt|R@&d$mLf5!-|5L+NQAf9-^(ttb+nDBZl*uDsYZ6(*Sob^J|JQ{->`eB8}5 z+I~9g_2soNCd{cgKj>Mn7rjPhlj3ZP4@*Ig&c15G=s~q*a9on&P5&CJ-*uFf_7WJz z1;nn;lojR~#BVt@IsBk;qSwU>{vqx}W+{A{+nM$ydNkZqos`_f%{SBrdgN7{1GE?w1MCN3}s zA<95R0*V5##ZQ|szg0Yv68geV&iNLL6^e+7!5R8l^jA9diG?*}i^feTsbdF2nP2Ofb|HbBA~M*^Qf0ogsxz?buJ z>Tk@;TrW-}9Jg))IyiR2JPQ$(Bxe0At$Y+S&DZ2YRO4NeniI^STaN_r-ku>M;+Xvb z097*#e?C8WxxtM;Lx>#YKfe{6)PTEeSPG26ga{34qB&q)h3x!kqJs3M}x($OkGc*696;9n>V@vXVV=!g-rQ=Apz7cv7t&5+pI=$pz zgAe`RwY3z49CKGyRaHh02g}AOt7}DLuI+5>Wgs@5`G@GU6Ll?3D(RH2lFy^xt~xLz z*zIQ>sI!XLAyE;S&3IPw%|ccP2`fY8-P-PsYY=uDktuxdZr{(qg@JQsK91yR42`io ze;!9HclV5gq1kN0{fcnZ1QK0XHkagY~Txhe8TVxKy#+2RHV2nDO6;o1n0s#E|2^&!In=Lb#!=7BV z4ra08#|Vo|6y%LvNLK63yyd~B7`x!UI{ieY@E;iwzgo#4-ndgz=G zShrXKDrV{+pjdY}=qp0xk)~8|Pz^{G?sdjc#Snln9DMwJ{K`pCPMjIX$hndGgteXF z$nTwLx#F0IwfMsaEkzePTG`*Toxr0@u%3X&08W zV}Cy0Dm1nT0~jk%*X)Z=^(8qhfBydX_WtRpD{L%7cLja#&EKI^v|bc|Z_peMkqt?t zVGn7)3bcWH-hOn?iv#e-&IW3~oh!B!fq6!-y*=Nbi|#8g<%}OFCP%K`?GIp6?<*Dt zGVGkmZxuyFY`)8hOG;;VBvSB_zs4fabRo+9R7r1R<*Lj}6FOT`?Hdbeb-#nh4dEa< zR3)xqY9()fglswMXwd;Op;3D#nGC?XdMLHnh6r3#Gzq-~E$282vh9sl)Ihl<>`lIRu=TL+w9$zw>{U`829Cm#TXX}n$0bQ;Z{>vMmJ7E?^0%FgM!cpDGLj4 ztzQrTeIhq_6slOluQkEX?Jf8h(50EOPs9*7G`Ij`z+>h|WdIzwaF&)DN!-gk0)Fsg zWlnMaEB3LUnfL~_YJTj)E-znof6UnGT>Rkq1rHfjIb#vJ%)ctlN-mnjL;y_QSFkRM zwRWvZin5kg+;{!Lu&mIS9icQce2-Up}z@J*{HUsDt-FA;=B(-R1{I zz$xj@2zZD}z3kvfm6&XhgO>nnYGf=5b|4r6op}--{uclkblv;*J(_!lygbHGs1bS9r%!Ln;aa3xMW*#y%Xf14koE};A4z1!5FCTJKS;%QY7*$s3w&_ z;0f}2*JMLUs1Mee>EFL2-~=#Bej)k|GH~I0lby>G_Zcm73tXb@j0q%6!s+NDmblhF zXKJ}xquA0x&=aCNbAc#!aJ2&vsgk&!VSG_QzGHdZ7GHtFe5}AGb=~-$5 z+;{gY(?l4eOM>$e6oM1N=%{l9eer`JdHlaxfLdd*>38zs5fOnk)o{TY=+UQZF`GKy z2IM|U$;#rASRU!Krz&Zx1yA?%R9cx~e}Lz^T?rE(eS6HO8QnO^-smHg*GIQO9T-}g z=&mtJ6ckVMeZJOJT%+y-JEbI@{{#j6Tr|Xq_f0z}MeXb_(ExJf>0E;feX;M3H zcE9_-1$~7-mnLpMj=_@_aChD5b`mwQ*l&etKUK-e67eyW(82$9;ALXMbqOf}9KC;^ zEY^zf9OtuII*}XmG5i`2qiz*ibGST3dCp-ihKH8e2HyU`UMxj77J+lnNpwbdk2sFo zIRMgAHv#r1dcrXJ21Wk}w`S6u{}mu1CH2=}k|Q7P&qcxvCiuSRCB*jYeQz25wc25B zxZbA69RW}0WsX>=-r;>|Xd65DUQFP9oYe-RW{ckY?^YL-LKLru4oA=quc6rt1QZRV zvOk{U_;x-fmTG^SXpj%=-wVuRuz%>zf>G#Bt%R6#bgXkTT|x|)f6qlVvdjZ1(1MdF z{NL>>Rd=BHX2F$+rm<{ISR%r6OwTboC3P>_Zm)682{e+6c(TG*8xJPXEWOC*d|hdQ ziw5x3Q`kPe9`GzQ5CFh8WK4(Lb;csVGY-9g ziY)k^nvHy8W|C9&kxsQIDjQLv+u2M#*?-LT3O{kTt&}7sRV}y5?^Ks8+mFv8}MjB(7 zcNP)9xndDh7%0`g|J#_9Tt%35<>P(cMEIj{A?Krm`owmk zEA^eBY1>Sb>vn%B=eY1VDfJSsLvjd$tY5*#UTr3I)^LF=``oe>DmiPo7&A+DM5a=_yxlgn{@uZtSk_{7pm8AYymU^6li9u z8T#x$^y@VA#}7oWkhC3dGhhk=qdDmHK)XKmuoV8Zr-Tm;t^sFiT+#w|)d4q78x`v& zJsm2P2;Mj=(li+ztpJ{@H@HnSi54{g48g&Z>1cof{HbN_C@ou$=66(7KMw=3_o6?m zlw6NkCvTVw13fABuW(Y3Xi71`8z>Bryg^2=SOkNhYtvIssqm{|{$(it^0`?5OFjW4 zj@MwZ)OU6(&FvE6+7zWvWf^dI*#9qn(e&UdeQZ&he6XBkcSCM{Y@N0U-E)fCJ_=YN zufKw&iq+S&X$PQnA3W^LmZoPr_?d%Cf8Sw^y&TpO&5Q}BfY|o0Sog2(TeJ)9J@h{* zC~H9z^Y*ZFb0HD{4@B|iIk(PXo}lDer(tX_5d5%iTNt=)5ulvS+LLC#QQ-*4O1Uf; z4EQp#%F3q1xv&YmIWJ^s=1MuXt)Y83RH|?yQy%<$)bWi@efOGLwtnvGxshA zXksE8Pn(a$^Vl}Z`pNoDFbzbREb8k#J}V^wMDNsnPj}OvSH_-u7L`&5ZsJ|QIhhC{&guO1 zdvk#R{Df~ud<qUUr@=khXM*KnFzkiR_mIvt0TXd9YDG7j_%#evxpoH!feH*`CkVeGJL4NS?NZMGw6P9j8yB(^F!J0 z){5I2IcUAn6JqaBTS_(y@}HyhxsuS7&eaFNocNBgb76tVS6`Pl>|;5OUC~qz@M2;5A|jBbGGdQfBf3*aVlIvZdA=1T!;+49 zUazsrSK53PH^c>2HuFcd$wE|FpW8~W%PMlj9a_8RXglaT(rlrYqn~nk;GHcClr2DS zc@7^_`}#4OzXRV{Y_jme2s!WS3^}kD?FU|?wrwI=QP1l2nhhZ=@9eaRgDHLS12$RC z_UOwJqO(w&rNf{2_J=XtTx4vNqx&-f`_O12B`T1JJ%erRx_QbtKTexWV?}!f%|!fE+!(Ov^+$Cm$igp-|k!-mORy{FLGYov;Xy{D&|!geLaM_wMO%PHfF< z%y}kX({5}OK4d>iUAMmE$pcyXfwN^P^F?RMcK&*FQqjB-v(urUl$$m^*;q zJMguAH?43`=)X7wE|%vqB0Qk@c<;tZ*BgHMz7Zvj#}2L^L{>%Zx8&OTx35EEs~;BL zfHf-UY6$XQp)UO^#G8SS|BGIv{!j4-%NT)43jc*sFoJhsBD(*|h&!eH-+;$|sy0iiw{DIe zLGpULUb$4%w$sEB9gDoaAf72%z&ff}1cY&0E{>raD z&lqB)?F%XBfCi)~mHYQZsjx#%MzPIrg}gEIh!tBmezNFL9pq!zmScO~JCs9d=p#+B zU-d*8#=s%k0v}8+Cddwy@DT8J&w!;gDFL;l`;57C;pQzO!?XFjiG8XND_$yU)VGCP&tyf>WC_;9-D>L34yv}MtuIPU#uA;bNA z_6Y@n%H;QUlGL^d^*=$9nlHv%i$~>`d}LTU2-ih40r{+Gqry4R zH#CC9pdXH>15GO{JPp}}OAnbC&_p=;wt4p)B3R^fw|M4h(#D6-gVxM&61|C3u`wo< zp23_qKm9|s!O-Xmri!!~wpNwXZRYyT-W+&ED^&$rKqd2Hwei05HrsOTMoN`&q3Dlj&eyrq>r@hHG(CH?xstEnB zYi$#*MR}R*(@Mu&;$HIx3|p!G5v$)XU>R6aUR0p$c(^5zqez+Gy%$ybltuW{ z6<-Vz9v_%=a`y66k#Wko@$zU%n2iS~vqSjmNiXy3{DH!h@78B=Qk2K73@ditg7goL zy2%f(2#WqHGH49*ZogA8^{cc@86?s3{PVlvKjzu~A@{Iw`)r zy>t$mioDIT@|%BTGwCQ2!z46vzbo%G>7TiZs@0d_$9}!1Kk2=c*1nL-&Pu`|WOPV})EWpzTFGg&8~Rd1D*+m3=|er$8=T9pV%LHu}_geDU@ zrm(j>m|Sr7_W7fxLv4z%-@U=3y$O=gvPp^RL-Sm*-^<$MTsu^{lyru2k3~?(B3EzW~+iEBoJ!C#}=WF zx2W9SKqV~``htZ;r*`%!72xELhz|KN6#)WVT>LwJ2$B|-F!jaL9Uj5=AF*fva#`h3 zzUSI?vwHd>X}5ki$DK#ujY+#PNmy74ot4hnX8jhM5?N^Zo=dGlZ7pb6=OKZ^%v}59 zCEdn?@Tn>QPll=lvHZ-mB6_W5mDTr|vwD`&^!&-|1VZ7(!@)eZ#_{K+i zj2o_#Wze)C`;9=Xy*4~KmVnEH)Z?FuTZ@S#keX79qi(#wrxXlN)lDJl5)m~-ap?FP}AoKN|b9zILt4e4BaCw?cbXO9jMuAWw%4=W7jv=MmZXDaY4-FzET z1ARnzwpFzw1t_6zm zKk?mx@nP?vzRGH4=R*Wtjy++%;JzoDZr{1%KNLJkz^qsMpSp&DXi-}3- zr$4=Ec5qXE-veQ%^M3sTQD7ei_~4Q3!yCcC7S?b&pN`X0jPO|R@DC&Z=30~tzdwS~ zIwX!xi@izVoKfv$OoWrT3H)ogWD^b-)6>P&rv{2I zc2GU52$D$X0x>{004eRnXq~lW!>jGCJ5k9MeI9X5O%eeL#XlLY?*aYY;VRa=?_DZp z5UTfB6bK~J%vXWEDI8|e-wMhVoSuGg^uvktj8gLE3qS4Zb>WyPNy2mwM6~upT zUxGD1$M1WX(5GH%Hn}*-fcRkA-1Udg=YVf$hs?FLD$Ki7*VJg8l^-2KVuX=w+dYs0 z@O#^Lo12?T>gokU&xU&FpCQX4$@wUl zZZmiVgX3x7AY>FCZ>dWFEb5fAi;{99QH>OEU|0A`>oi!2L}jK>Z#UdQf)i#OKW|>4DUpbh;#fSP^qoU#{H!lq)OKlPDjmG`e}=%- zICu)cAWgrG8MGkjS+IhCAm`zPK-d;Fx*Y-FtbH6EMi!Sx=^y-M7)*^*OeFcu{V~Ws zNQs;USD0#g=flKZ&-wT|rnW6A6+i_>0E1CXB?*emb_@D-SR;Wy#YG%_`kmiR?RuK^ zsf#F!h+r#N%pUu$56EpwGThsDY2t|@WyY1&Ym?S|@+pa*v>Vz95*=e{<8Z{ZJ~5*d zDE%IEV0jes+01$=U)0%1zV1P-U3UMB2C07s7q9;2#v1BoD&pB$P}ftWgqEO-oJHFO z4o5k`R(U`tvUs{FE!;~-Qtlz7w~<#ea}gQ#hRNWj{7szBXn00^GT=Jv=j>><&K|&% zUqEdE#5ht7UzNwm=gvuc>I35ie1-Eh2~83H3DO+IG%!(emz=HNwJsw6LynON6lF)Z z|FU3!^8Z3e!T%40{4diS3kDtkyNWY}80Y^7k#5r(v`+Z`E&w?GtBAdep8A6<&XUjP zJRhW=u6-M>?C^MTp< z*Z#Ay2)#Ts7Rir)$qa^?Of>uQ>U_Q6CnvLG zIOTEUeHl6WQ_w`JVwWIL#Fhi${rJU`mwU>Lm1v?X+lu1!ix&Phaja3k5fY?<)nYP) zljUr7>a=R^$dbIC&9jALZOLJ_`*~|hq2B{`>kwV%MeN6w1ENP{QoP8@GmlZ!4ut*z zzGEy^NiwVun^M7Xd9`%DLNb7!XRe@p`+5frcs+H-D7(*(g@R7K}4(Au(DQ>k4G>uj*Ss53AB znXf8o{@B&hQHcf6Jc&IbWR5GYBz%?b<@LNW3JFTZf+=FiqqjzS7aoqMc?ej)>tInG zSw*fG6l}0kiC$jpPipSmTde~FvJIebr%SXSj~aN-tGtza(k)7MtB+x?v*-(@~W z;~QReADjD$VbPt3=WAV!)wF+##QjL+o0fE8zSXdSTkCNy><=TDQLsf#*{5CKSr)O% zy(jXo?;FNEuWnksmJ#u-gTzQ_J`&2<@{HyHdY*i8;vKXv)y2Oy?A8cKQeRp|{4vH0;>Z`hXl_?;1)tQ&} zMFUbwo-e+hXK!}4wl-DNlRqiM8a@py$dD6*RAb{r+a^j(bWOX@Bu3FdE49 zfjYXHwre)nF(|D-BuS`dBfIFk_tiU=)Mgfh%AuN7*;3Vl=NIZbu&?T}td&z|)~Cv< zW--^)(u*Q;9Y2YLuP!vhS085m&QJS4>v`p&M;dS7X`ZwGEa=ovsB_UEg8}wG*hfH?D zdaIt#R9TXW*DWiE_ypM8VmHInsL?b#TA&`Kj~lo5tR6lu1~ri{%s!f5Q*6opay@?V zr$qin1CIxuv#}TAyMH~H_L1pjvDtP(x?y|S`Hyr3-(RywA(eu|G(YO6<$xSwSi=rs z|6ssjCkJJ#KVSF2q(OQiYGI-jk+XlOBc&vF=E=|{e8ih~8+PLF6QW2;`L}3r>&Btz z=PnaLmtpYYo*(sM0o{pf3)yM=;!NH2eUHiBUHuH_=#lxu(q-0H_uKRi0VLo*9m|t% z`VEw7F3YMPgYrqzcS9ja+t1n4XX+3Wk-P5wKkmu!II-*7z22_0nBU!e3DW;z>@B0> zc%t^f9^54a3l1Szun=4Z3lJbc2$JA|B)GfHU;#p~2*EXi26r1=gF6Jb;4T9*%r?LG z|L%U+v*+xW>8887yZTmj)pMWw)Fl)P_&L;6SE|m3Zla59Ly6);{)NZY@m2_7`Z++> ziLP?ECQZ^;F`V_vw2a2>U&K#UU>r~zR>$;xnyF@o>FB<`Nl6FpuxBHFS=3MgcqTq4 z(@M~Q#_!@+vX5A^V|3gdJ?kaq$|})vpw!K}|G}?@fR^gl%OWfaXfDCz_-4CJ=1y5} zEbFueeKvMg6Zkz0hkGFRXSM=FbE83mD-o?UJjq zarW_FV(LfT$-!Bar3YsJJl;TQs(o(FSCNQmtK7F)w_KxWTJ~Ny`X}>(oVZD zeZ+kf_;$i|@%p@WGH&YqHTtqVL&92G&JP40L9zlu=nel#f}KxFNt8YVWSJ`uJxVEx6`L z&1h_JBB25rb>ju$Bu)93dU|!G+9e>2WixFbaC5YDg*dpG`e<)o9UpNRPYkqy_{(R0 zV6sh=rTHm9z!+?vO(BW(Gu+kTClVRjZWjzpm`MLwL$GseY8mYZ6vmt~=K@Fqam$Aob{o zf9hE4S<<}?KDEQElZ%=H`)+i~75bfE0Hr)OHSSo0xLM(L(03g) zZM>yS{Zd&(s4%1H;WP_k*4Lt#=4w(k!&guxw*-Iq9yX9}aK*nFN8vbd=4^C`Y6s#U zUnI~LZpa;$PF}%Z9->yCx|{ogw*{;w{^CErMkygMfszV5i~W+%1uNMsetO0mO)OQm#dOoZt&vev+>G>8`9iYv`85z108J z0x15vO9bEo32!IDJ-qedSb+1%eV*E(Ihm)rzqyliUqVa*Lrj||c?t#yS09N!Ew078 zYA#(|cE=8ZvJmf}UcAlH~|rf`yzHFlM6nZtcA^YIb8_ z8?3=cvpb^WZC(cXZ#-JC5(MvcAe^w*=oGv z7bM?8^^z%C2|m~B*{M@0fbXrw=OPzT8d zOqL?G#B^8=AVHH;jFGeMg~j!pWun)Vg`n=kZFyss1FjiB;B*)&GGi?Oj(x&zFVM3iVYH*HOUuk02Mh;9P2q894G$xhsmh6$T z6^5!i!aNVMy0Gt8$^`yYsX%FHB!29c|1hEPRae1wFJvSS4`(=MIM3ZJn%P)DH_ay5 zTcNNH%ALg>Me>B~tE^7c_S|5xr3yTai`sir@0j3f6GQ>P;SML!`xmSf&sYe$PLt)v$Pusu zl1Qw03nz>?=}rdr-5oka$_91|rowyU=-D_D1Ai7P zwiP%ss+i3h@{ziu`Xl$OPmuvX@4jD4eM3EdUQvA?djz+>i9DI*L#=UPvW~CyA(C%1ER^m%R?Lx&PB$=)zkg9CxUZ+8iN`*O zl999_3~e#;ShLpsxG5pQes4iJ^qzBVLTskVnZi4?l{eQe<-yZ$eJHt`8(g1 zhKZbR=)ySw7gAQbt5QiPf5}<+6ADKmj90Ei^!Rk6GG~ov-gv2Z zB?gGt#b!MLkE}@FELWew^UP#OUhMC*sNHxUx^w(kWi)Z}b%bne4cK;4aryiX;`ZgI zk^Iz#54>cLs3W;?fis8t$gV9eA{MX!w+M2;g3R9#zlelwYqPRS6?Xi^+zer!%CGL_ zA^UeLAg-M>T+1w9>~5+@*8=m2&5MkMGy|C}TG6249l@Y$|8_=-@u+Bg;#ctgLx~#G z46lUb9f^m>Uoug_N7o*rCLshgW=1X*+k>Lc(!kOjX$>*$AAkK%10gjqnYYnu>I$&N zEH!SDCkShbZ%fp2z1py2{4Q-s7;C^9RCOoj&px1swd5k7DMWHF@FMGeogq&4J{N(d zjXYR{AcU1*pW9DHSb+jZfg+m_mjXNx!dk2JzvpxSw%alx(s$+m+b)s)zlxCL1CP$H z@b5OL7p-lK;AIHhmX8k&N{@8dJtL=!3plK_w3heSi}tNj+IkB{Z&)K+)#Z6v)g3?i z6En%QtD4uS*Cw#i&B{~Yz*Xp-{^`||b}aoer=|#PU7D@?@%8K1Jjex6P}&6G49lR7 z6X8evO^9DW=`#GdmRW>L%Cv5C5g6WHDD(UnRy(=}-app7!2)Dvj+Fo0-LzV0U<3Ed ze*Cx}V+i~kAm^^w>7Ed*Qs`aZMANI?ymmKWfX|}hPrgN@vW7s26gqTT4oroL8)Uxn zA{y!w971<~e|FRfiA}QUoMnAaM#R!bvCZkjnP|RsNV%OUOG)>*`6ePqszI1tOzvmi zpi>92{ZaQEOOSeeSo3oI$6x{R2Df zdghaJ>BJ`Dj2m-7<5Vo5%o}P8-z!5*9-l8(Z`XYlr8ABsVMwA<58Mrap0bT;45vikT^y*c@~!;2cDHjIBj_^9$+de9zBa)R4_C)@^kGv zoCfICK@p`|*;8v1%cRf8m*4iPm<_~G#MPb##$jMu1rhIQM z0~c_qD2p8jGQZWmna@GU$-*aQIiKQUeCnH*n(^!3ML5p;*S1VeolYTi#ns8P2!omn zNlnl-MMl>_pZlS=rI{;~CNn+u{^ssLXDfBI5Ud1|chOB!;pOJ+bY4x-kN&zWDfeDe z`FJ-M3;Ya?T+@FPa7e-t7S)CJrZ-D*<@*q-;#~))mkrL+=5r|WD&^)XCco}{d|PlrltZA*YAj>Z z_nJTTT*g^*09S0!ml^na*f5|s3|;w+urIKNTD)k3qCz)C6?1V3k?@7E1oFwWEm71H zilD*C$)xr;LF2idFYj)OpJ^f57Z_8=>z7{P$?N>=S0T4L7khyttUN~Mh;3rE#pCF+8FZvnFbe!;aZ)C6||H8VAzPDEf8R&ObE^mbxVB3si zRo-JYNffY|;B88C&C+Ff0=yDqQbN2eveP1AV75$Z5$ zSyjk1iX+xty!Z4Z8v#ab`bgK-x+(+P0vMsBN1YG<6hnN$D~E7-Y=6rMg={Z4Lv@6}a}pkL8$^|P3pr-SW5J=!o%H1gB8%FfIK z;bNl-yUSE!nlm~FzolQ&vuo$j%T}+|F(f=r^rmufnMMw9xO7ta{WoIyNoCE9lK{H5 z`?PJwyC4n=jQ-||kg*XdOl1S5_CR1=OtJJ6cAVxzYoQ_)L^~oiEc{Hx-2SW&D1>rt;Tw z4}WXZwAyOwG(NTsx>in#&rlDv*RQI_`BWWCukmrHTj+3tAt5R{lDpCQxX3PeWMo-; zA6*O1138)`Y=COFoD3kRc}Rhug@=_1eMtRyW3Lbq9sVr26a-*=+q5{1^%k#FwX&B> zc@^aKCjuX8e#~G~es>E4BcOaDgNXhtv#TDd&3MdZs#6gnyxo(#NBbsDJFdVgq;JoK zDp>L{*zXda-Rxu&kO8H_t;IAr5p zR@$5_5i*(A6exHZH!p-E+)*dh_PNM|!A!C`H2?kbpIOg0G9BNa(kJ!xtLLD~7JL?_|Wo_DEX!yR%pKp~!^uLLAovZPpsBfHPx$t|Z=ouUQjVjom>& z%X+fm>~i_#)Vv3WpeWdg+_(MisP|=Ou}W&LcrJB&RuN|9Bi6j`FnN{N&|+Sal6_LiUf7}m^}wJ6Sd$zBm9^v2L&C@(3#q_U{jM` zl>e8q?#Ej3&`NY`&}hH(SCpJ7sbS9aj~5SvKY^`!y=Z$knsRwrR*U!!FARis@=J#Q z2QtzTL@{eUy~UNvHj4j0@g#c-N=CZ--yV!x=>U8AKR6oBsB4|8mwWNd_f^W8chgXR z$s6Fx*DH1;^@Se`fnvxYwjxDGd}~#^VV~fMTx@+o)zd{!R`gm2;sS6|(GXap$Z>?#dItDCyb6B)tOz}C zNcVRY;G2J5;B&36q5j4(bQGI0VPW>beu`KdsxPN_dqdZW5`m8|Pcw&dYqiWz)|9G< zX^O=*xC#TwGUVbQ$&&65{12Kg{EAFS@F#`B@=HBXLx&yN*z%sl>H<&%L>xPq($V9^g0pfpv@*-z+7= z*)7Yxd~yFSDqE}U>E;=FXe{-u|G~%Y-E)0JeUX0pm$8vKcbbPL>7O%;46cvsVfylo z&5-EjW!KH6535kity)5#oWM+|;4=z^sJn6IuRDjh;E} zJ{4^J+^0@zz#1vbTYtV+GYfrYo12<_Up3}a7x&7rVB+CX@EeFy+~QO{VV~nP4)OmW zV_|-?&Ap=2LZT6EJO1Cl+t1`nAUN{BO9Z#w0c86x%(z2J;InOif4IbwRNw^RkCeia zf>%;TYJrv*Sj(HUv!D2XNX6&h@bK^ut_p1YTTJrr&R*DXeC9y!$Eo!!@< z?$`u!VxwA$CWgM-Sig)3gz!bI5`Cw$^69>I-V@LV+L-tHS3H{7O)3h_`g3h=BxOud zNRgTygO;Uf474X*x7_R$6>f7n34zP52OKtkf0tHNBf(~ zKUmHu?qe^+_^%H6=#}W=KYa?$&Ga?U!bOI*2)>V#w3sG=xNk(V-4_?Xh)(Dp9UToS zfrIbb^`2^=304D+b$r%m+4%O%SD`*!!XuK7M^p?xTTSJX{TG;3cR<+K(Pz6_=DOsd zN$_l8o$tUS-O$9><4JEG{u}L(WupkYb^jCHbSg3L`9X#4m1KrDrjXCzY$(tm6O9~u zlvq1>jZmdQcpMxjcsF0{wNks)nPO9v5=A7OTE5D}?i#Mp#80jIWe*Kd| zM+c=6lWV>|2&F>>9cN;G6+Mi!68?+S@HAhoz|z?7QLR@RRs&izFz9pfawkB-pK_>A z^~um?-$JdVeb`u5wUOd}!&AUOKmHV_-Y7ut0Ozl}?yH zw#+0K(h4`+>R*jrpPz&r9-u;7$+?j?&R)o!@S|s}%#Oh*NRQ`5l>On79whmqVR5OO ziYqNn^d9MomDMLP8Qde+vPccJmJyEQ-{HL_MJzzrq0sN55V;<(!S8L-)*(}AY1~aQ zx9_h}vtIy;I}Lk*VY_N}0o{)*B_{m#(#KyWY;UcXD&D@637sIf03aQ2#FSXFRg+X= z{t3nGUc)|QsHHdGNrwwvCcKU9W;p=bpuoDS(I^ePdGo97nYG!I#;zrb?2qc-U8NDB zQjZj$BR)T_GN$}JCRNB9N}1{1DpBt=heNu{A48F2NkQ1c{EOJ3pTJUwH9htFbq$*c z&&snQQz5c0-L-EbT^&vH8LJ={hJEWt68l?(T}tQaTTb~OwOMweiXD9U@g5`rK;k@W zN#XR53j3U3bBB4IYlQtq-9W=BJnpBB!zXUB){I>7YmWzdi*bhAvwcK{ggS*2HqMSu z8Yb|n49fcG6kL8;Z;}VK%TWNbWbQk~AwpdNa#YzRr+FT3j6v!YLGFo#mg$I57*H!A zRij13;@2Y%P*b!=cq~gwhzHdZ)^IAM9PCWEqM5_&>|{t)Js2%_#qNjOgP)5uRuJpg zpZ-g>7gh_QIt_e+GH4JXk1HA0=29f%XWdbzVE3;o6FePm$N6$%p!Mj>>T?s{abHM1 z_#(qrGe42Zy+`u)nC`8sK)Pa;-w=0+tf`$5%d)l~IYb1MeGYi-j{g>eqe7=jbdSvC z%wtym!7qg7y+aKh(^awuI`cjvFZSAkO|H+$1(A&0u4h-Z8p4S!PVDfcP%osrOuV)K56a&4xP!1$3VMt`dEg6C znd)w(Ao0oWD6dZDUvY77kQkRUVlm66(!0!W|2n~wH~g;ZsrH%e!{#A~@^{_WnS^!_ z-bxWsy-#I9Mls*{8HYm2*AXsjl{2pju));Ljh~NclaPjJHuWm_-IT z{CM-Oib`)@-X^n8@y)CqI$YY$TE-?tCs%09TbVEDYr!inhTsg&Y4ffVB>F>tuXAYo z9OsgiRnEv?cC*AECG)@<3ks(A>iG1X=TYkyv{ZfPRJ%(c8LR0XqI=3cIj0xqwopM7 zJ?h_{D2gdm9vqgG50~sq{|N>ooIuvO1NbBbwcTlGYHBja49(fLqGh8(QGLh{!$DXC z3KR+-YDVGCKKpnC9aT?zN{TY+u5KA=cJ5DPt2jYDJw0+6JS%>#kL7o9@E?%{qx!Bs zWXI{~>gISbfIM^K%B$wMxH#{HxY#HxptAad;fj-kgU2-@n9l#UCLP1!w+{h5l)wKW zd~nYt;{QGZx(DDH9B=NR|F*46h{3S>Td-3ccfcFyYhsZiA^}Dhz>_2-nb#zGcgM&WG~<7#Qgti0k-37adZ|6g1`FHqO8 z(Hmh$yVMyOBfiLH%&BM#WetxrLlYY^@Pyq~Tp9Dv5cfyn2}{McVPaK*yPK4s|3b+7 z!WUW#sEF^uWdBtYq?iukpwL&(8m!*@n*Jf;m&(j*_+g$>vTvueNx%uJV4ZQFz;bx0 zpDx}=!+ys_cGw=DB+Dy{lpP^mS9g-0?r6Iuwa-*E3e)Z|wXia39GrWV|B|{7R8wlG ztB;y6&w(2(W)%%b!iP19SEb3D5h}b}be;?MVy$ifc`~z#7!uWR)Md}6mptc

!{l9}1rO_PHG_ChEjM@LrDW6ql#5<_Uux7UKGMQH7y;QmP4v3940(pUe^7ETSzdsHCyyRJ^ZGKL1 zWXkxO@!x+sbo)y^G4pnw>288FLUr2Wt#j{BcO@!@_ryc={U(J%Dbw6pO~GKW4Nibm z4Y;!YI$QeJ94^nts%*i{@8}+RG5OPT5AUhz;rVuPUBYN_gq*baGmrbgN!IBF?#{N? z9RL0pE<~rl5?%5kR(Zc?tq9lId8cenb!AH1$$)mRNOQ-=NfSBNRb#(ybTioX1^E0N zvgGivGtLKV(}Er+kM*TA_Wlm>6hE`s1nq4QYyL)2i7nOik+BX)L-$$hKx97SJ}eP5 zUYoK{6At>Te|207_FUJ0BQ@qSp6B!#*Q*JIl>bg#Z(DtyFb-zov>OK>F8>XKHPxc?Z1pGc(+; zzBak~wv!GHT^~g{*VRLos;0Um(cdv0;sKDBfObeOd_#O|ja&gv!>beg@CoXDxS|0B z2v-!_PJRCuO}(<{2GDh)`k|1LAnrgTkDusrc7olO{Mfp4mnN8H(_6^-<}u=o1mLf$#}tt@lehM4k|_mLcO?o&yW|wrCEG zfzab<`k^_$mnk`pO=h}uB;05W7XVF@kY8^ld`HqlI5hDAn?I=>S(m=}I92ltmgLjo zqZ9Cho4L-65_|c5kqyJ;NKj>c7{`NY4Wve3so+eqkW|j;%*{+@=)M}cIC(JGjJF6a z%f>VEoqfIIfDepYapW8_Y~+IQ zK~H&gLHMgz^u>lfP~YP>UlS5|s!^Zer2=pSwwlTjgB1lS%5o=s7Go+hRx~Ifkr9uC_+V7XK z&d==`HGh}K7$eh^$e`s*f06hAe6ZfM@xU!C{vquB>mViC^tqBv0m#_w%_5iGz)&%f z55bFwCqR(#rGr~fdVhUa>}aOZnvyn3yTeL-b=oL}{^N?Hs{GLULX_YRx6}daEF|N6V1m$Kl93;Uo8k%k*XJk=y?97PND+ zB`hCXuP^hl_&5!S1 zSQ~VH7aRv#eB;n^o-f0ib7m}Yfn6CNw?4I|15!3jGUa0exED4$`Z=hCMrwpmbljx{O!DGTst^QJNonraEPSxPw5dp{t$$MAj!*GBXp!kB zN*ABP4#wldy)MYd=U%Nq2pvW|e}T^d|k8x1?PT(_ho&!VmqRE%yCY5o?~yARBfwOApQB43D>r`gBc!iLC8P@@Cs z;FX7GaINk~#Gg|s3sF8y#O4BZL{J|znv501ltHz}uhL}k%)fpk8np^qRFA(^_Y5Dt z0HJxCpijvq80$JF=ZF5URHXf4h4Me3OmWM(gL`3E|LIB&Arrd|)UsEiHMa=IXl}Wf7J0-$npJ9vPQwXQJO;=ai_Lgp?C15UBu^1$a_jmHYg-lTMktu z5WY+BE1~&LFe}|Rb2}xWhltPFf1Y2aQIKSITZCan{=w0RfHu52r>f9+2hH}7CSa#H zom|#zUhmy2t~uBoAo1xQHneVUC&%eN_P1B!=11&Y$lH;Zth4YAzpj16{+|4&6o_G# zb%~fdbW}yJoi?}ww0xk>5Bwi*DC&8PV*_M)F%lQ(sai++FXr^nz?)Fof*_pu+e@aP z@^y#H156Jm=t2nYk4|oqb{-H?GoAHBskKE^D zU%-VPtzkvlZ%$R&oIo;*scU<)nRdF8kHT|0ZpYs9IBf0NG zFvmlJ)^h@L4?y&`xmnu2m_R5$<&=05bnrNsn6bD>W^}Mz^?_jXRqSFh>T(^vv`Q-`XTj zAZ*=I&O4%KX2k~vWH->Y?<$@c_$I;!1dGS~QdMDcH##?{1kfO}2ZjJo6=&(+b1Ez+ z4R0sY#GCD*a_2z21{Ry8JFqm^kS${({Ec0K#;Bvv@hNtY_!OD4tMr!k|Kl9dZQm%* z3q8~AezpgI(xOMC@}xnJ0a3E1eJ&qUQT*_*4rP3x$R=-J_@F2EQ6OT+hglD=Xe-0#E6J zL9>~ln+D0V*U77fSO5q9vwVOe;YKZP5wSP01CeEcFUQEDg~^foEZ|51I<(nWeb&s& zb?ZA@i8nn%nV&Y(0{7BsBVMmbTALS!nLoYb%@W?+M-rGopSUL%-S5S+u`*H6X*zT* zWfXPpS$S8#COPfmr>`5;9$jqS*{CWkb2Wz(?MUZ(=vNRZ55%1H`b`t z!VM>(rS+PlcTk#|+0gl+;?_F(`cS5)qZgB6=$!fcei>#MYd^Y#y+CbZvjI<3LMU>YL_xLA4fr>YG!?os?YE(JceA^+}vIV ziZ*NA3vL3WKC8Gu^R+^hQWvwzXzI z>^XXQ98@mmJ`3k3{5U4U{se8uaNL>m<>fRzTtJEX;nb@B*?8~>jZSte~Qe!e$@ zJ+anH=eS;Rz(68*4M6@R*~O zUKx)8dlpyZe|&%s}~($m`u@ykejB6c6qX$fM`lDE*yrF>c{ z3L#NJ-NREvgBjCCsnTgy9@#;zZ8`E&4)jj<`MaIuV2 zy(plPg|d)^iK_#u6|ikE{8qJ;a|M(H*4LAos(#N{XZux5!jZ3Dyjo zI&AH72sJ`WJHY~LRTzB=KH$xgfx&f&gOC~G3xzzHIEYLAb1OYJPIBF=p#53k)^WBkSnRU2s^2p4 zF^Fd`0IR3#*Wn;Iyl3AD6T-IwyO8o<>M5QbeYIZg8;c`yPCO5~{rr0~f`Oovk4hm- zozr4#HlW5<(jJn)Lq$Wjngs%y9hBofatC73&Xp;cqpX8ez=dccIG?R7ojZo?6=R4U~fd#Nz?2a??1!5XKnDEyv(W0D&n{=F* z>h`Gc+ToUF-o-loG&D*BXUiZZ!`R7!^oSN)_EEBU`d#VsI~vz{Vpe58eSowqG-oY0lm|r_Ba5}2;PIE=5LEnc)a_N zY~tP`BGaHvi6nn@-V7=G>sPKXI>1|>e&+Pg2a@<)4uf)1Q2$d5O2$tK6!AiX=MG{~ z*?Sibp`V>NXN5rVQVc}6@d$UpQMas&cxq+-0kwb4(@vV0fP3EFH$*kesrZi#fEa4E zB#F_?YLa`P^x=CA7{+0CbYQFy6DOS9c#vH)NDF|^B^*5&)Z?MkbR-C0_x}0gM;MrS z4@{zx{p%N=t*tGXbivF}eT@r|<_KmWe*TB4-~a@Hp!0MfmOp*PAfV9en7AUC_?DQn z#xyE*g|SVRDwm+*z!$jCOk@A+=fJGaVMa0h5&}rfE@^+ca#C`J55W+r1OC_gGS_IQ zSJ22?y}6*f=Es^_xzH{f>o`g`q97*5s-Ymd304jMYWkUF@d4`9Y@k=9XoLjhpFF`W zFE7`5&UQ2DTZGfgG7Fm$YrNVn1Tzk`6_zyj&69?0Tnk1l<_iB;%WXaZ`AhR-h&|zM z_m?c@M8fNAb(zbShFYG%Ws{?rtBw{e6YAP|L0y2CpMUR6^rxxNZ58K5T%#WHEn9vW zd?_R=;(3czGfp0le7X(!t{sLKELJJ)9neL}d$;{h)!6yo5gK2#>Z@sJv|k>r9$oE} zSWOnalJGfXjaK2~vbj2DEU50@U`e7crlI zH?ybyp8aCDE_|&4Bz|Sl>iF;rS^l2f5R7fhO3hkQ)$ZXDK7k97lL$xSeksldCBxBNCMev91r>2FXRmK`(YPZfYJOk=_fFW6*Ql8FW~=^0VHKfKw8N=iq<8sBX~p z!dx!Xo3(d=zY;#%NxL^sfpfoCGg?@shF;P_GTRP5JNDtK=`k-Hp?&+9<%kb}lZs~* zy#Zfn`)d{dYfO7zUliQ0kH&Z_lmm98lR&?XI@n? ze9U>RgyzLDI`d=z&*26slW9J509cmn5V7z-y=e|ZFhb(VvdCH@i*3!Zl7`<1|LW(r zZlZ35&*FCpd@^2aVCl4Y_(B-&`NG_BH8gFNmf#Z;?pCK?p|n!_)BkRwQQ&q^u|cx0(a;4gaJCU;y{f!uY0D9db9HY%}vT$q=_g)J5&0g0DP1TiNNy;dALdN{3W&O5pIE z)_e(tK@XKoo#bP!$Pm5ryDLN_ANV+4FYZj+EaI9L*5jkc@*}vE@Tr=r_hICw5gMp( zSB*4~|8bb@f!pC((?9NkBm>IfGbDhH`Doz#C+)FbZ}eu4t`RiLqb2aIo4>@^n+xcK zm#>oDMwDbX^bPZb*!v+s-cA5^0~qXh(#R-LM{J3Ezt5hacOa(C)VtRllKi3)FZG1> zG)X+yhO~w#(wgAYet%3nn!lP~njsN7d4gW7{=;UVCZsSa_JaJ@qVVSnS(DnWNh0YaaMU9nL(c4534nhzl@-mB8t4j)^UboY7*vY!1{{#TKY`B9OQT}L$qB-zMcqsZLODf z7yQlS!`7vM1g#xD$=fmE+;0B-WGb}E{bCupiRjF{@lc5K9fD%`CkN*vqG*tJdVZbn zP5)nvy#-WMQ5!Biba$5nf`Bw4-AGC*QUa3F-92;y?t&h-vth$r@~XrNFj zxb{aNi4y?>OW+Onr!P;4bF@y-hFXet!FH=o0viyjSE>n|#1{6&oU{M6sMBlhu;_V% zDBk%O8^wT${>#87{vvk2^Idfan}YR$SLMvI$HX!fJH425xfc(f2IKjINVcE7 z0XJEKGw81*HaciYqK$5lJFKqv;_Si@!@}`<^kwsDd^5g`RuZ<*m4debNITAjfyOv9 z?zgkaT}w2NZO>iggC1$1Bh&{khn>E^M`}rL9~(^A6Y0jzw>lf&Ha%EuJ5bl?9}1jj zPwc^qbS-vFOq?(M8w1dC2!C4LgTCT|rJRlf-UaiH;hWd-7*VOeUyx6`hCaRUlJ!77_kamL+xdjamRG`Z%QKuFQ>5a|Rx9M# z#n&Yh4Q{w61vAhZ7H`(drzbEJ%Jd0y}tlvq=mv-TeTzauy{nd<5m3GgO-q z@%Sj+ZTHIsiEi2QY>2?$Y}FdMih;G|?(&-2^jy}l{!K2GDBtcz5FpTVhjR#F)jAoW znfF~e7hM<8IW6iEIz8UjgA{dmSWe348bKr}F^VUif;hiKjom?tD56WclS8tXULWS? zwhHaeESvos{REfMct8m|P6lZjyq>qtqjE{h+gf8-QbmTThY_S=9NIXhrfS~)YRV%{ zkp+rfXJd(c8dEhggG=q9a;ih2mit!AhA)q-7m#xQ#?zqo;9M;LT7$UEK)2?Axj3FE zi1O{*P~wmvRhfy&>PFj+O!(pvGiKNoLDl9v%R5ZEqNRYZH?NOD=gaGJm}6rCw><2M_Q28GA~v>`g>9HEY|{Lnj66PGyjMQ?ihDoxa{$<)i_6G7+7X3yAXp6fQ+ z=F!cbl-~~+KKDEL;0owE0?%w9EnOhVR2FpCo)1u?95Ls*Dna+o~ zu6jIFu*W~3rE=kQb&|4v*OF1tIe{ZfL*C)i=nFc)W>EihMS$9ZS8*Cr1U_*Wj9z?= zy-flpCNgG(19Y**3w1mIki7PBej6-A@?W3ooWwC$B3>FbE`%r{3N6KrsD+m(;u}l%Q(@^#1+(X|tT1ZsU#H0vvaMV#td% zJ~JmeRNK$ra;|dWPMR6$uE0-or>k>We04jSgjW2^v8&P&fzI#FAJ~Vi3GhO6qUbor!t2+ea-Me=|Kw!}ru;i!jTu*6S ze_((oz5oW~KJf&8OJnf43G<2I37kb7PIP!0Z4)#=OI<6S&TQMds} zN?92P)b(cy9R!&A1p*;Ns8sRB_cSrFI0!6a`|j2u>z2g{CE#W3#tZ8|pbKlll0Of~ zP97a(WLvXVc<3SX!&3BE?vg~bKNbA?3=m%(;)yA-vA^Zz(lezQz6@A-;(Rih5G*S@ zw)JcEO`z&Mb3r&u+yPh^L|qGgD)199o{?ZNu*V8Pmq;910AYsF}$ZZ$SjIi z4*c~C>9Gk__>V*A))_ZoH|bllg~_azxnTREm)~zt55{^rS-l4L^XJTAqaTUUKi9?j z7l>A`)?)K!-e{mquh!{&Lz*&Ho&$iKFL65>^49H!xItgAeQq3wxC8UbWd$HM0Z4Bj z&x>{`K(8LLc9i1pzw`|h&~sSOg1V+%FuQchO1AS8mX`GEoV4b}YoEhoVsIN%R;$eh znmQ0|u+89*tda*Tr6}HSh^}^xup=Te5K~a)2us|Zy#y$ruw?@$qo+>QP#r0 zw^09NF4`LGhD{E<*qFH5-RyYUHR;`-(iK85kc!n{7FJ+K8ld)^oi*=en?20AHCoFp zv90*utr{%xIB&_Cov4exuV(`pR|%u?V1(S3>M&p;_q@wY8iAQ)W$mcb%p5@hTgT%T zbN9}5!1BBsXm_{SHwKTUU%wLi6M$D2Hw92rSNr2Q_+$s$(@pv zyL%!!aW9VEHhadnJg)oS8CJf0D$H<5@)w?A>@ZC{^x&XIU^E`Y>xji%M^0if^fA-5 zayXWFb$U^Z0DkeDjejm6g-XsD0dnY+^bo=X==3)X?wQXQ%imB0FhXW+ z8&gz$+ZCl*k94QpDXIQ^_GBdhG9i9Po6*@xO!Vt?hUL$Pty$0Y&n^`aEhY5*7`6S+ zKQHw0yWbcU*r1|g2Igu@6H`R?;}{4hd)V$%X?gsm+!_Uxuh zHhF@3kDW{pq_N@dqaAkaGdhGU;CnFv{B=FQi~cgkMZkwi4Eb!^{y4 z^~Gsx!p#8ph1J}8o0|Up7`EchMo8L!WVj0zHrGe9NstA_WXX^=q zDf*a0gM-G|-EU;R0|NVIz(CK)7~+jifMxA7?}~hCIf~?J$@1|dZPiB(p?8L{{!av^ zOMmQo<-)h4>Bx-nMaM^=R4VqIfp2N{nT6Qtmph)w>si#cV(-=lwrVG2PNI_Uy^dHE zVPgP6mR5=Evb>eJQ1d8Nd9|iX^=*AUz1XN7y|V2R`~CagGXr~j&Vaiv>Oa8lROZq% zT~2&@l|Xr8z$p`7ZSUrzyQV_nL z@RWjb(z;s4zOl=WqRJCNK$-eA=DtbstIn~4rZNt5j3|zWtEgR;cJXx(9z7@LSmYnM ze*=}LG5vhyYQlIE`l9$3ugIA~Uw{6=;!v3NOA~F`F4%* zTN*F-T&lCvw+G^D%gQ>;G_}7Ng zeJ-`QGwd)h{66v(mtj2%iZw_TQD#$}#nM{1lSMaHjt7V?mh6XQe+3c3MXl9xzzWp$ zhB40hielHpF?QsH0wmNmxi*Ka%Yiu)zIlD%qdO`P8fHCZ-H`jM8SCPmQkAYq?u-Iz z8{Uo)BI&-S|z8I)1?L89Fc$h732~w7^=i?r}QV6g>o7(c>;F*do0oX%=Zcg3R5u zBz_VSa{x-+!h-J4bs=Ic#0gxwMWUj(*!YJ+eCi1e@WU>W7VoB3>hrUe6Xn7eheiwq z6ZA8th0-K(i~hB;uhzVj5d9Nv5R%jb0m||twXn?mQJc~3cV|}or;Re%Xj2y0e--8zxY70 zvD1iC?fZmpZf>4i*ny%#^+v5+@EG)Gi60tbAsz_jTW&{22IW9rs_hYihDU0V%=7XMoXE3vh2yh;phEz; zRFm0iCg2NsW$7m3e8U(PcTLkrUuC~6koil7h!s&4k-Q?KkPD59ic(Zjp`ElHlzSlH zpl9!JRm_8a%imS97{qfw;eVI1wcH-R8LT72nZE!Q7ML(L|F^c^> z?9sUO{I+aT`w?)fJi&_{9B%>PQWx9XM`BVq4P77b%;rcLj#<}zN(DWbCmSQ^zDD6wBqid z1Wi_XNtEo?8=qZUqTD_mMYo=H=zE)vaC#;m}W#kdh z8DyX5vqu6_yoW+yG<93l63l5&H^eB?=ZYfP@jHdc8P&gz;Dr)7zc}9CC$NEshK8Uk z@tLxZmx&Hq2|195ah{*QIbIZ2WMpEAn?7%fAm%Rz77o|18WtHTBH1VHyd z65T(QlAAj23P^gB?VHh&vRezjo-dbcFQn6vN23wFn_7UadJ6g7(;t^u`L)@zNZfC9 zPO`-I9;9m5)zuA6hXa!)t*8gCQNSZF_A@Bw5sk){f{ly(J59r3a{IYY|Q*iF2zlC#fh(y6MpWl{=;F4nAV_62G*S(9(D@0}Z5w*na`5M~$&FYY-yNgP) z({XIn0R|q!eK!%mhr1IiyW?!_hv9$^S{Fbta)}P;m|2t`GfMn&u9#GL+!HP%JD%MiWb3d}`DR#H@?$I?3! zxr4%+a26RD_yiNK{3PyN_tw%!UB}x6T|2JCEyqVk$9L-Yfn?|F`*vm733jv2<)(8* zLoW04^12dOde5P2QVC8A^rWu|G3{DnTf}{>XvLE}=OI#W-xIIRkuSA>YCG9o$r2D) z6*)%5R~djGMVwlm@=NY6M1_TlzdT-FH~j+Mcyi<-X_Z)I)cIP8W(+Ozy@zLvaKPY* z+U*Y=y{pGo!dQU~-^-zv1HV+N2O-813EXq9|5Og4sN^7iFlLW_ka@Zt2uX;W*i(sB zdEel-jX&CoT}Zp{HC5Vo0+}b`(gypB7@}$7&*SB7Fv^>lm=w)xTS|+>BUouaKv+qi z3ks$!Ep_J{?`u?<{{C^*+SXvG7$As zU{C2bM(|mVn-7c|9xv4d@pbTI!JeoW8a|Uqzr;j^g`BSIYm($Rtj-@6{K~@*5zOn z;wGq1jnW^E{_OqkF84>VSk0OW!nyo&@TIAe+p`3h>@SuQUxt4iMS!Zg5`HY^6mRrk zn;P=GNlaF-)J)4-K53U#8On|vRmg{S8z(ri#tkG-<( zc^a4D(t&vC$h)oEoircAS?%?kIbLhjpcq`_C+e!5R%;UD5zil%@)ZGMe>PCi6Of`X z7{uGw*ZuKAbqS|up0w}dZ8=GDFV@7rk1+?7c<zc-a;Vvi(#U7%LuGHd~#o)Y69 zg5fe%Q#6{-L>XG#FBC6~P#}18Tq7CohPcW>=P1w8*0w zSX$1Y(pJM!88mtYstkwwZ~bv;oo);Of^s3jz++j0yw+G7P$_=1X+ufoq&v}Ow89Ju z0G?`1eR-C6?30z1qsg2Si}T{ny5+<4i+jI-fa@6=)dvUo{qL(SaP+6IptJVQpfBR} zc27dD$Y7EqYr9*noiYRN5Wh|D8=7~tq-24#VQ%d}uv2YZHPt$VVv+5gvO@UqEYFwT z^OYRLidj#<>!MimS$!oPsm3DY4Ba|cYa$|HZ~C}#!ibd>i#%7C|82) zQ@q=4!#W-mnrq0Dc=Dy3HAyB<<6Af@JG-(Q6=}#|zFaiE2+r!~G((GzKCh?Xj9FVX zH6Z~3pZod_uQXXn6~x#;?^sE(!(>c^BRsh&!+@`|l72zTMJD|3W$KUrzgIvC1(|d~ z$2HOF9W)&B%nE4FNF`8~f{4wt1jdw$M}- z<*GXi!u_>oV<@vGs*}HPV9B75R3axZCR#n_oakR7y=||sDgDz|>(Jc70=X#DuV@%V zJbi+8HVz`xxZ$3U&^KXQthruuoH}DLJ%AQxE+R zJW2m&+C!(3NG)o>(gyseM&!rDzKvR(LrLeKWrfw%-8s5QRPa}M^F1ETSkhWra$V;Di10L?Bh7tX^3i9iK z#j@`xS0bkBCbrs0JUo}~qyU2!DY%~HpfKOSO-sPylInCBxO?l1hqsb5QGR?ow|=YA zcd}3p(a@F*I#ByX8q1YkeMT#cB;1vyhhqG-roR&;>fkZ&w34S2HHwAY3p9`9XFpB( zw(-LU6dS3ED2_EUVYs#b-|{gLIQc}&&LLPFayGL^u6{5xu@1Sa)00+wegtNmV#yUp zGd7_@kMs;VE`7z#Ah7_rVbJ@y5Rc3`9J-3%KejHv`JI^h``6;ZN~@cDKKkmVM!$C#{(p`s(9>q!Jq6oAr;6z2X+1rA-&(L+-hG*l~zQ z0%&_B`%5?mw`RV=J zPmx>`@Q1N7=uOWD2YZp{P?W>qhgrE9UBj8Hv^GEmc)M&k9aBNcfU2Y>D(;Wzj0iso zDL?5&p-?wdb)RtOUabpxU#a|YnhZrqUY%K^ei1w6l7JTx5B91G2f8fdHbe#2r~~nb%jrsUA@q#Xph;s~**A*hY-w@( z5zmvNrb||m34SlQ0*jJBnoUj?a+ejk<1kd!HxpN)(z|d^lO#Eynn@BX{46zkPT=*t z=2(3 zKgeG#!^={=F*$Rp-o>K6_9qSXM3Kxl9~J_JI1fMO!P2?jDj^%h6h=3Il+xt?pdEvV zVz@i`aa{0(#0tMXxwt!PxgZ7|Khe;?T%^78g!Hi=&D}IP^m|%%9aUy*#av6y??(~T>r{94pH?o2|D6NxFKK90#Nc?Il2MXK?g}VX+3%f^z07*{ zyxLX2@x#rkU?})f0CP_0Pzn-Vn3gB8DUn%1MP<|@bPXm9DlFnUqZBOe&i#H$ z-cK(w8C`uIM`;L+up;K`pa3;h$#Ytm{J$1)V!jMu6O3n%4lLJ@{Y#ZA_6S`%@P1*$ zMWgb$6ZVx9&$IKzwv@%Ha|DwY$3o+~$7l@OGN*nk@g3dU2->gqE2G2ZTA)m5$^ppl zeExHx_tDW&I}F0Ib{D?_QSZ4=SxKjUb0 zfBVTh^h^H%%Uei}q5uAOlGpk%QyR3kzyK=yjPc9F~MiBGI@6-TfZH2kDbn ztm!?4mGWyPAg06sP^Dd75VlMHKwI31yFGHm>dN-I)7_gbH7PSnC1i1ZQ>WYuj9i{+ z)z1PU2jI!Z7oYcTwbbKYcgWlBNO^b;(iSgM^2~wAvQh__q$e>mK89Dg$D4iAzdPND zd>!zfIrl;f9{SKzU+>+3OQ1$C+!G@C*wJocl%2BUgsjSd5zs~EZ!Z93p7NK7^MD*5 z#;f#Kjp@EY0Sa^lk~imi4|Hyx#+%HuJ-}LZj2pX25U^JsG(v`1YEr6l6RA}s*8*5! zxyn>nsJ9>a$o+YME<|zjH`uF-$Ttq{c_9O;%uho6a^dsrYUU(=9=7h1Qu=KPe6b_u z`Szb9326V*761oXiafD6dMyQ5>Le$Z7SyV$v;N{yo~4g5f~2h()cJ%<~dw_`tpP3RT21`P%k;o~xNkr>{}ry5Q}fw&GZ zV50hE;Lqrh5re@%7eW-N^1)+V%EOOvmkF(RtgT?@RFGsBs)=| zuP&F~HaHGdeyn@GVveIB&2*+)Zx!~UHt#kysOpRCQ^8lt_ina+eB~l=JXgr)9X#U? zF579^=No5dv8Z6WecSw+o`T+O5`@0?xVR3vsbWwz_<>^(^ak4?>`4W$3mDFWp8s%G{O-o!{FlTid0-)e&U?*V+zdZ z0XfcPpe^JP3{YwvjVX=x+2q;NK z6!8*`Tl8@3(o-}>=62kGC`BL2HNP3`&w{3%g0&&>K>oNdZ_+o8G#W*xp>$LH-I^(a z{d^$avSAReCxk~sn#X{UK*V%{Fbkvi%Wm|Pyp3e1Ok@b@osc29RXU=4Xh43;&H79V=1!P;Z-s$Jf^4O%vXZ|7T{*}E&2FAK%E*E8ONKD6M z=v+GuD#u75ZrEwc!p18&&lpDyaJw z?2I(n{H*hSfTi~5z`@U>pSDqOXI*K#(V$BLbxB#SpuXSDl8?{H{aDL3X&a58W+Uk} zQ|`uxjSFH>3qh&>Oax7T2cUmvBXUlM9Cu$d@e=DH@?`Rlguey6)7BQyeR{7eHSot% zXH?>eukt_9cF5k8;l<&<1F+IawPRXz!O(7NcJC!!VcT{f4!0}#_oIf`zMXXP>V6Y@U35i zSi|roQvPry6gXfPr65^etDmj&Bd|4VWaGKASIstB7ewAEy%l7AuRQ;f8YF|kUoW2o z5V~`xi@giA!zwVb!{FIJ+$(H{i*M&vu%-`D5--_1FWDgwD1h#8saaGV(T4vjoH1Wb zwGKsbjR!8&=j(ogj@3RakIcq+!avw-gN4f=8|SwOfV;CO)qKw90QY z3=gD|by)bzd4%DFk<*NrM$iZ8e(g@pJk6u_TdH@C-+5z>rr!ft^}(QKS1sWNr;+)X zPbXjpIL^-2={(T?2D^679GnIMP;Y9QK>C5?D8AZ8tNI&%smgEE+RbD{U=>m=XF|&l+27u4LCBZ+cy0-SnTo{gVn?1kz3IsoU6|F4IaR zTTkC${#G{Cd=A%p5n2s>cx6ZStA@9J6M_VJ=cu0xi&00EQ(V>3bO1x7xpAKc&S}ZtZ5+tk7!CgiQhx!S-=4Qdx|;%d{C6}KsURM)V7QK zCIIUX63LGL&JwtCB&&c%T_Ef(5bq2OI3Nx8h^@1%t+rqSD8xc9i(&8Yej%Df^-f3d z7rmjz!SHKU75{!E=h+MtuIPE1-7pI3het#k{jFW+r)Q$i%vocq!icy~T5(X(TMSw3 z?i0H~CMZA2AJUdIEj9ceT(`m`{nXcP`SzskBF52%;Lna;zr68le&L-Ww2=PgKjQ?U zaq$lc6@cRpU*FQt?Z;APsdtAe`90C-3_n9mGJRe5LjdUc;bx{tLtAeoWc~4#tA$#W zBxrXu^LLF%&sU#+ku(;5nDI;}{;RV8K-%_Oc4k+^rn~oR{=MYGC{z+r4^&Ws35pE5 zOemoMmW-*VkdqJ{$V$X3DOm)jS~4K7S=;PcJn>yrnt7`Q@*e@hdoJ!oK@XN$3;Hw&9Qv(MIh=6G)bdqQNG2fA&$fal z%1W>L=(cmFKt;B&v}3zekeU%zN8u}NAQSoqWU$&YC8}}c)1L1XQn80Udw@|Oz`Npx z5!kUZ?F)qNN?}HY2XVFC`y(BH{OeM8=6@y&^kRRFUC@IzGoKGNW~x~{s*ptvjP*aW z13_V@ks%MFjL-bou95No1j~mL6&U+DNj!+7O2MmG$Dhoj>qMnc8O)^2Td)3Y9l`a% zaso;0uJ+GYO|@P~BZ78dH^&%V*xrY^SEcl6S}FBXKjA@Af#?DkrDTrh8D_W78f=gC zK5w0n^|>7D38G9+vsEt!TM6J1CFOc9=qmSPh9ZHdtqKZmq=GG~g5x`ialTWWv;C*0 z89*=*P(BNb^I@dhsb0(XhJK%ni3r~uYR=$GUxYi4)3iSefnD=&8Zr?9`G=d z)sp*ux*~sPWa4dL9|R$(IT8F7n2d}bFhE4Yshrfa&i^OYZM$v}CgFMs=|wyq zjrsXol=KAv=vJBsXMj?A_uBc-VrJ+LsT(BF9P+|6zS%JG6rbuFhC@f<^0R=i@k@*$ zV(ORodL1TDChnbX=KmxL=B5~l?u=R?{uVd^?mczO#dw3+N)t*?tH?k~cbkvHT~}5l z&J$#vem4YZgQi+9#?yrp8A%Z7+EZrc9knBZ{yVA&uYm4*@qdC>TfdafT8K5l4$llX z=%xOkkT>m9JQ=j`_S^nlD=^8YG;YCI$`^EGl!n?DtlyKE?ubt6jqB z^OtGiMMA%}AE}bj^-KRPv%`}6aHM*2`6Q`{)0KN<4N58&V}aouN{HS3=hM~14Kr6d zk~t-6~B;j9@=w{F=qwIIWup#joXw`n)&FI-lY zD~sFik3gLiqQUg@6^RAWp$|xQ$Uj$-cqFCdj4>D=bsfVyx9_-j$eBI9dFOS)k0rk2p*9(X3l11|&yLgE)ZEWVmJqa5{upUE~#C%v(Z8IjLh z9Z-xI$4rYQXHW`w%#$cm(GJ*=OoHWw5lla4YB5y)28l2stg?=A+Q)i;^3#|%+X>lI zAAF2_9TC2oH}VXSwI*%0kMTTAg~J2Z zh;v1%kkSI9-gzd?b@m{-T8!I}S2-E+z`3oAA?JRdt{{HHIl7%+iBV$hmbuo(CYUD@ zzvLApkz#&7jU$@Gr8UV4B&WjM!PFPLw*h)hzTfK8{YQPIb3s2f5X;Wdnjp+&d9GYv zaSm-eON7y$dhhtgMYBB~Irrz4tb^<)&Erbj*%q$o@dfCaM7*&W|7`GdHMdJXS*!QIGuC3)%pj#{~Se+J_6{Orz zPa*0~kY|nvFoFp|IrElE=SUliE!Hh>Fl$bzjh2pf#_R;okk63$f;8{EtqGLhODtQx zm2^@-RKG)HEIP0S1*6^znz#Ons%R})v-~B=cNl*$>jM@DDu9>R3DVT8`emLp^sawu zc5UItB|cYH(rU;kDTb7w1vvJ_9W;ByI;+ve6CMjb|6E)>SP6j-UAyW3MCvFMmg-P7 z)8SE3ZOC{>9)PI*5es=ni2Takq`4EMiv#7Hk;_)y_9{{S*YgBM=bqKfMT zi??9-Ue{}}LViQP6Z#1utS^rYRTixXp>2rKO*_jAc-vgXP7()75fKPowy$Ess_ zw`o(G$OWs^I?hRv7_5^tQ0{;J?fVmnAlq;}P`g!DTEbkEF~ovcIR#q)SP7zXRQz)vuw4|3}i#(FT(N2E_Qo2KflDix|`AKK%!k=~=g z9wcdNAjU|M0MP#N4`?gzsJ9u-pmwiVGsWk~?_S8&ndgjRFIW5dtn7y%E{qwZf6BHP znMXe}YWQNv{$;0cFH5Q~4n!u3Y~Z(sb^LMa3TBN?Vkk@9e!V|`lFHL#Z{{AJT;s+f z@TP{{c+zzI#7pFXCLbP!53G{iA2+gql$i3AMhkwD?;tL96W*`So#Qe*UixPKu;js1 zvU<(*QI~l1W&=lwS;Xy9#Lld6og#c#>f5dHx5tED#?7L!L|=R|5Lye*EJ0%bscdV% zwF6CKBkFbl58~=hw)2SkIaMcE;4yu(fw#IMOKh|fa(st@fgG44fPpDn39TJQIFAR7 zF5@=F1`;vPm_lCg_~&q+S_ZrEUwM3Q0yJ)Rp$OW?$J! z)Qhu9u2pX16bm-~h%Fdc1|S7y<-m!Xxsxsk8F9^HZx#tQ-4aEe)y&fyIh-GR5}45V zyLmYExa4P_Kvg?l#g}0V&v+(rd0xWz|EkA5F1w2PQHSchr}KiL{{}fyjy5rB=s+}r zW6(t*gB~-qNlZ%8$zM@A$2`Gx;V-OBx{D-GB6!ZNgB{PVUL`AvJW8f>B?V8v?&RjU z2u0P8CETVJNvlUsSNh3oU?B}d>OY`1Vd|Um(ILVLC_4wHk$Aq$zjCce9fr$lFA{Tq zc0WhxQ>m$0UGvcuqjtPM+h)W$G9tmfy5pcInt!^Nu@~i+%IbrwJU5j3)6ipbkMUuA z+x1q8-i5qkPcag`TU7OFksZ**ZNGPU7zl7uS=Ys?^vz86^UlamTP#P-yZMHSrwpJF zs_{*-l@myS#JnH87E~tJ70r4UrJ4`Mt35{5UgyHjMQkLn!+Pec5-{o~&HRHyhy#1~pYhBqHSArb=Jrw|C)`$o%_ zVnW&mBOs#SO)GuDNrl6n?sv>9Ezho`4$zKz83G(D zWqTNqAHOPXtejT{a@ZO~}V-h`_xK|NZlbT8@i`KZwWd*h2!A z=MDdD2{zNG4^$=zbyq5>*qkyhQ?<;Ppx3NTKShWU8pmj|6wB?xW<%ZK*#Qthl|i{7 z*#Eltg&prJWdD(SJmLAP6>eUp68JypIZ~N}^bx=Nmbs*{9<(tIW&8N{o2I6%H$<-b zH9O`7Dd`rD^82vZEI7Rf!?{&3ERScopxY~gu_H?>pcN#eq0V$)^*iUsGNUvo7+Dnq zE5{oz&Rys{V(g|TNF|i3n=6+SRUa80sQPz2>lOrMM2KM!=$UGQ$&3~6&(Hs>g8F>U z0B;joYb#fsc~hWtyfhip=s}T}3i}(wGe~8Ukk4rudZqfl*LU=BnrR08C$svuYlm%q zL87FDf<+}V0lW8>KOHRVIA3x40q-V?nM}88KO|T2u5CtQfVJ-#h*91Abx**So(Z9` zxMT7y7C#mfQXdAE=**8i?A|x7tl!)f0cxlQBCy4n^vmX89y+;&M-PX!`!Jv=-haQV zt#n}_OedVz)QDu~r&E_^pkR9X$4D4GM6?;9(PQ@!4JK(@HX09(qQw7K-!^{I0_FdQ zclzz}hw}g0zmEv@SX_~&F|PzR^i2a-oc8Q56N_?E1;=t6H)8`yvHLU%nwpwKratpz zoacvS_50AONxdpY8vI98l{J(61t;s(X zm4UZzWOo>7-Bx`P&W_TrB9iZX>ZvF>*$6}LfP>PIwbL7NC~mK$RobQnaI+%{2UT6h z9H9R97s=jN=DD-+^LslFlH%n7zHb5n^2erhT!ySCUKg~*0cRo(Bz6A;Sq@_;!BEvX%Ghd0sde!J)GmC3|VAL(XfLN<|!zTHOj9+fy?l%Qa~E_x&`Vsfsk$ItbW9;)Cu9 z9wwUsM#i82_Xtnm)kQCBY7gDj#SJt=)6>!-a&X~=8PPMEEuP^RaFyZG9gK$M7+Suy_yRmU zqn_2qASoDPHn4knw{!H9Oj_~Ryq5n_S+Xmn{;+2$?u?~|po2a7OLQr>vW8&7VX#O` zGsL&FvC+Lg9`^fY|3^G_r1|sHm(3d4MvsTN=-@j?$D1|hJ+XQJJFa~X(d(f5r!28k z`;I%MUwb2*L#4glugD^l^I?R-n77v*S{NOhheifd<1hN;Fr_PBMgVNdSR6V-VU2M& z^6pp$1;ihAGoNu9lem8d-YCIQBL}3#K9Ly!4e#VO^2|@6A}kUw6W4I@`E=~=Eu4TS zC--+%`%x`cYlkw9qm=J4bI%m85IJ;o`X>{r!A#oKYY1Fda1=#-abs!FSKF;q?A$v; ztepO?p%S)niLvH)`mhW#9U0j*gmn$loSoIdj0vP-AJ+X&z15Ct9CG2(2kqkkLFAzK zt*KO{?3%ljuVinOc7A2Mr9PvC^B#k?0bnMvi!6#<&!%TT%NW*1cDwjn$b7v$i#tT&GUQ=)J)QP9H>=<@W~~1A{3C zgZBo1k9y8@8$6Otv2d_B=RrdJZ*w>HKu5+|H%k3e6UKx&Fy{?elG# zpX%zIz2W(XE^I__rQhn>OiR!`#tW496e`EZwOHpgKy{njk1`4}JXY3c`Yk4B^yGh0 zC`&{>ji)DGjl&yCTOU*_{zD^8dIktQ)y=4Fx8JR8*Uda1>RPzGlu(ODkN($|6n35I zwY9i`?Ss0C`VJy>wYXovdgW_;x(B9lTBfp2$4))+cYngfSnX4^%LHeOUk?)y~{kjqj5)J=Pu% z^~B*74#kVlC1HM@dXJ&W=_zFBO`UnZyUuMa!Yyl#Ef8N{_D0LN!w+#mKpNRV=-1_$chCzwA@27zOanHJ%Q|QjJOKtg)qgU&2kb3&D z;ohMX+Mgdh>~N#*Z=EyrkDaP^-j=tqwf$9EdUOq)(|2T0lN^wRgt{Ni@%r8d$&L)C zu&0ardNdmM;wI5Gv{gI!Hcm*ijFawtA-L_w_~v178fBU0$6DF4@%PP=2mM#T#>BI; zKF#2Vr${+PC(C0Nt^a+rTdbg;cAo1&0S$%yPRaMo$dwVl;a~{Tw z$xxFYQ3Of{&af13lD-MgHqSrf0jnBDXZgk-pzibZxp^IHaxLBi>v8b7wPikqi=;|x zDL9h)W>XK(7D3>we>@(w8}Uy3jZ19WvZy%qM_b-Tj0&c2g8wT=Ky9b!4%SWD)z^an zB*jHy0udJ%mxU&0MiAg_^FmONqSXOj_LI*-c5C_e_ExP@r^3Mc@kO%?rpwCsGw|=w z5Xe0JR+(l^AJFpQ1uY&>kqXxep)WVNpWBMZBo2SfzYc4}WjIhTi@u(UvNMmBn>jk| z&Kxf%bp8Z*edYs$|CwKJ>exM=$F;4`$8~+(1SHkh+v17x66C18pY%^U#rcS1uK&=v z6<Pa)}nKq$l z0}#z$GdyC2_pOptNNIe1nxFkA3n z8(wsO@*e&x(;rJ$&v3g|ZRUz3VBj`RQT=>_6==&I!q?0k_d^|Gd#AmJ<%tMK=1U;U zNRaJ|##4R-Ta4~Zc513T@Dv{&9)P$`ed{9=69W~t4t%ip4Nk9oDhXOE=wL*ciT#i^ zmc`2r#(ppLSKJTZ@t4=nGVOhL#t&Y$80Q-*@G+@LScJb}A>`QtOmPmXuxE`R)ygci zxXJlAGq5)iwo%uhf$Rt*8G2dlR!^`Mspr|6s*MfX*jP2r8z0&n;bN6+F{)Pflw@^o zQ^%WU&mhOV0oTbiO^7vLp{L_o)jO6XO=gPA?%gaJm)hre>Kszde>16|{tqH*=?0i} zeU0nYwt|^S;`=-Q8tusLKQLWNi0_6FOKMa?SgXF{I6dRR{JS&F&dIKPu;xAsYK*Hc zgjbUU>dq_c>+Aao-_pMR-9E0#s|)YIq~81?vYnd0EX2ndO}(LFNe+UPEcOvx^~;|H zTf}y+{6B4dWmFtZ*DY>=0D&jCdqRNV?(PJ4 zw~zqAeQ*ixp233?+yWEaT_(7@6BuBy+j-vi`|ka5S&KE*J>5N3=TvuB?K=Bx0H90a z$}2ZE^xnN-8XBikNUq6Udp@l#$BX>F6zKY&kuwH1XFDRO=%8gW79oOq` z91>qdpL~WzA%dtOeXBXfwo6Ff12oj&^kg_E*b=RwCcv{R#{JMvJe=*;TPd*qK27y+3PEa=M{K=TA-pShb#+O`OAUT5_e8d9xjLE0QTUygkn@s|7@A&mZby`Eiv@| zZa8_h<)9>cbA$rDgz|HayJAx$8WmYv^-|N(FYU6wccHrBTCX-y4(qHijU16{64G6~ zpO!*EKtS_4^7@e4M-`lKz;IXDrlu4o;5WX)gXw_2yVA1gA6pt_yyked*Xe0zn+rme z29?|2(8qVIatSieGUzGumMv;Ex6LcF`5L!D`Je<1*XmQaDt zDK$h6QZop6An7Eg&Y`6!GNy+kpRA~G&1R?f1 z7j^yYtX7F?E~%;LB&wz8Tit4_k+gTSs6Rtj%$K{R4EFc2{e)h!t^j?rwmQAq4O`Np z*G5TXk!>K>Mxq>|kF+C`NJ(5#PZdSW3)OeRrdG7$>)^ygq_3L2|$?sOLsA4@e~})LFkU zfuytAq6L{n-iY2#lD77dSH9ROaP9ofLifRV>9_sk)N8-qNNkjjI?_RZl8+Hm=ZNU4 z2yJLowbm66J(+rzpl6uQ*~wP23fYxI7{t`GCzV}T=2!6)J!+~r&bdW-h$P~GpnDc} zl%agi#8X7Y>geDe zv8i&afcZ6)yKA+>7hqS>L@@gB{8Ci;1DIAR;|hpUvhs_oAfv<&l5FmQD1;FY^y6i&LgE zeKkw&hmUC4{xlo{O6i$74%O>AYS_$-I7f&(ARQf?FR6yW7~bSLA00a43kK} zlj*DhtNnxJ3g-mdojOtsnb2XLF^?QwZTl-+V8X@7U0zW!G!d@_g=0tF5ebsBSlL+L zy~;rp_ymG%hW=mNsdNy)oiIpVrH6{kPZMJ$mo0G6F^Xo0;dF`q1)-3+vXS1B8tj~9 zx{3r`#LLEC$qPvqNf6rsdhExqi~`RBZrc3-ZR+ufCXHrDqWyR9$JE6-@hvlY&izQ9 zCyMkcEF{6U2uYGkH-{{LG449IagHpyEznZ>x zYvGr|syKr$CU$ps-};*}#!-#|iXB17nfPIM^qgB9gmn~AZ+coOK~EuPXO%Gi+!aQ& z`U2%WpNBTjoh4cJfDzi{{ByFw!O<%wPGnBvrzd~}r5?%73ZNz)@Q~kOzX~x8u!qtD zyNKI!ZKO6?n1w4PakL?l_=O!Exix+}ZxMc;cfa^MYXoZ0`&u#oM_@FURRFCT0^4|k z5ACB=SfM$#JVbCdiAmX~`64SDLt$|GxCo1kw=6k-K_2>vn=Gl{!I9RxyT}u_LQ874 zMjc`0)aSnA%s*bEkkA_o^*KEIXtF&+4ZV_<`9CC6GuzvL?8iX6>j`-=>!b#7FUFC< z&0$VLj4bAbF6cdLX9)EDe{q_`TOHm9V2=DR)q)4~`|OHu7Fvk8fuTe)I6AxuntmLo zn-W{EuqIgf%>>NV|Ar5xE<-xzKzEhNRH$B?rf>I*pXV0hk(MDJ8=qkpLnY`mAtzMM zX#b5hY7|~DO9vuHFQCAqz$l%h;W*R}2w%k#|1ac$IVO%B#z|jCE>-*l&^_|iu|o@K z0ooAhmUNmq^Q8H_{q+3ajj z8}mYl{3VRXXJKyV<*eK*AT-;@!C4JHU!&{k7f`j`E#X9bk0o4rezV&&OjQ9I$fMJt ztT_B@h@Q-;FjT+2B&G8r1{=YvZC^QQe%#qR3m0krjOvx$vwiYR?TiG^y#C%4YkIT9?_t4738lG_#8X8h+L-M z6L{}!;d;aJ}K2QTr6n6Y%mclaAOEXotYuw z|8-Yf^Ys$uPv|XsJ~7D~$91`7yQ!1F3}U@EYXp`0|F!dbBMdllC8#FHEac7;@ifYG z8OSi%$(JZ(($?$J3|WZh?)D<M8_px7;-fyagq(pA}emd0U*eb(4E~^JrJ3A}k4J31Uh^Dwo?PeKql5>}23U)quB{#tNn)@R(}Yg8SEqka ziH>V$Fbuo_Cmi~Z=F*AL4?l&`!%yj@y*lGV__-`UwQ@;NB3y)OBN`S$r7 z#$Iigo=!+a1Lpujh7?d~82<#Qv@W|D2_45)^%CqoIMI%2ESA%??e2JqiDZ(&lZfvM zxcq3aL6J>auPN{5r6RP#1J+_rhmtQ(UUXi%`>Gu^v3Y%5?=g?32K9NTFPL8PFpPo+ z;Y-s=0*|+r+ci-C)h)qA(or_anjFxSOo@$Hnhtvy=itP|-n0_?juYsfEZxM11?&$a znVXwqtuj%3-)D0$lr09XyZhsNy*CENWgP$Hr+fY3l70W&hm2aOkQbY_So&zc=7%Ro1x;X$tq7+X@0}XoC8{E?-rNHIecN*7f@L+ ztE&jKia`Iqq-r>c!xFrk+|j^?QY_b;trHh7x)eNS)5C$C7MF#=seG{;FY&80ocB{% zh!{0YZeo>whRLcx$Ssso;4BtL{GY|3a>l*lS9TZ4yu2Y`Vb8*c6tdQaxT)Vns7jR7h+Tuc1MN#P*R>rd}d24!%{ zb?1Z_T$_KtSt2FN03dJXYg(n{U5ZG+WIMv+(cHJ*-o2cWN)_o@#mCZsilNp7cx?>K z2kK;aYA;WB@x;A`j1<6i*~dcul(*jj#?jyWo<2eKLKO7Bc$|Co4p~#SNu2b>grL-T zra(3H8UXE*Oq;3ilU)@BUk!bmAM{gtIVMX@-kV(VXJ}U?NAQqvW_gaMiryjk^D|$T zC#ZDF%LA>Za(FXGSCrb$FSg?JAi%Wz%+ey|RS>+}uDQRoM#ciev^_4242g7y-1 zO<$hIp1_%)TqlBmk7akC*kNBtRo^8=z6_T_7z~uH8(Xf>uo_&yOSHsj zdaWL?*{)2X{p(x3l;3RtBCNfcmJw&a@FaC!q{>Q}IB3jXD!hjnF{D1kc6xID7ch}k z0I;8`s#r`Mf?Kt7}oHMU@o>&t((*ag-wG|qjTT5`4 zb2$W3i#3QijM(xr(B&Hn40UXx6F}ECPn&rM@Ay_j{>a%*n;dl|1Nuati9~}k7jO~2 znmsliA!fi*uG80yFQQ$&&rF&6OxNIN;GRaA^HHiQ7IBSqDCmpfRxIaXi`K21Wc=9~ z3*VYpVf@Y5OL6hM1AD*AuA>eo8rhe26VY!ME7)1s%1WhA6%iV4^ z!>=A(G4kh%r_=9{hr6HiFe%hSukq3@dn9xo*?_~ALs6GJX4LY8-5|^ zR!77abU{rkHIO3h&q7$gqR?P&cjpzgN%4UK(xEmqKtvt0@2L&8%7FdEugQ@8a0(EI zixlTQ^jR>^Uv3~h#|2m#Xzch*KxXQ4x0CKU9MEeb_WbatK3i^aL^vVAH z&z9F}XJJK{^w5*MmHFOYNSoQ(y0v7nIW>0>c3A6O%h5t|Q-p{wY;tRRBOr9UOlG*Z zme**1k)MDJzWEOzHN6eblK41w(;F?f4Fj)NrS~=NA!h*0@@46g$!Y+q<7J6B&~Ry= zn^px73}(lFCjSFf3(xetylGzB1w96QtYrSBFtttxdoW~Qwo-X5T`iWnMfq`OMrI}C zbc@ZQcscm??dwn5=yYNodh3Z)DP}HsuSVV+uPy|Rloc+JibFBb3XKs~@gywG_!y(( z*zGg9T!$Z4oBoDW`USpVYY7}4R>Z=>LJ)j+V=IQtz#tSg-^3`7J&CB~1 zl#}wCk-EWTs}pfU*~P+h0aFQCWhO(&lMR8$*bN_YzjD@cRNdaP5l)8CviHpwNaQZ% zxqv9Km=P0l3KAztAg&E3`U^dI!<;>M#hqdVPzUsO&-CIz%HYqn?vb-%SzkeQ%t@%N z)flHIM{sch0H~BMgIXWv%~VSxy_7gc21w64m0+FT28Xd5==e{9z$EsZ9(0E@2G5g@ z<+e?zS>G*gpqT1W4kDu79eD7b5gox|@xHRf0m*h{MWnHPv)Y+ns{70C>)>$-d1zp- zR;YL+Axw*;g(49<*rwTBYVs6^HUv!soJBrejY+0rPiL_EXo4g;LS$ZOpeQ~ghuPiE zVBu&y0MW0r!bFgfk%?#oKTVTEf-q@*}70S8}8F35(ts zt(XOpPkzVmJH=p%lqMHsGst+xq<;6Hfgh$N=QF0fm-FZjzgygKpbwwvl!jL~ev2>V z!4G-oHpj2?gt!-%=oWT;&pOhD&VDA7Ikp68SLh(B8yF}mC}0AKAy7>UamGq&_c}hd zRGvNFyhZqnjkPrRrEkZfdtFbc4XlA+ap;>z_w|scS2tp{7^l&r=&jgC6#=()A$D6bBY-cv@HJUv!A$Ri_|y^BN4Q zr(%!Ddla^`=$Qbc%D+kl7k6qF>2yRyL?hYh)nx)HkJzsjzR6Qh&#x-?o9C)h39@Z$ z%r&gl{yBN$xSST%LH&yz`jE55p7pU!C{Mx7HX#+XI5<(wOwaQ`d1R_T2yqZC*as53 zo^EKQ?5zRGGQ8^*AQCGXEcVEyoB2{WQ=noGMGH5y4r52%h+?JZ!2DG{08#uKkNMk82cBp z^JTx+FLVu)PfJ`%x`G_T^w|!gRI^>?Vw($?v6AQ$U-&r%o2HxQmp|>AR?2A*GGgb9 z%I^EVq`=x%&9M{t7Pn><+b?K&K(zT$B6y(dLC(?Q$#TF#e4*>5{d;C1@dyo$i(>;{ z#&l6QjXqObAm{+dSM*U-i}YKre<;S_rz-_X*{FCgW*fVC7WjAU<=cu9OD~+hpYM-7 z^E&BgK1u}nppI}yId=pLmd|mk)MaezRjcq&Nr9Q#!CLAn=y<+bbksg(!wq;Tgh(BT zl;2ilO()e<5@BXfwYf}i>31DlL&3C-9@G&5ZVqUSI;}ROnlYaKp z*47q={kFWixtReT=qh|Gy;lb_-s?f=fFctvkPrnJzFCgM!SFL>7U<5zQf13>S0-S- z{>>9E2Zm^3aaUlo0=1ervBXZAfg0@X45b3lk-A*B_%HD4`C5zI!uwkd^ro?EPP!XJ zwnv?-g6CcLKP|TlBhH8O!HAn<1E4D&lcZ3P@|83P{1v$%4&e)iQj zaTIa(zc@mVQh)ym8ZhJEL}nDeS#~}6t)^)7^!-H_X;fx{7Z=i0)NtDOwm%w4Gy;)c z$lJ&77&jw16kJ}7UTttYfLPM}8DBOXGb~dT6c@)wrVKHip<=?aGK}=Z`Hix5L=2md z8Hf=hqT=FS!p_zv78@PzF4G~SOHL4+Ut~@{yHa&chJYapcHod>*CvPg$h;kKwc=@S zlt%|+Cuuxf*0T3PsSfjARM(Xi)%9I%Y2cNo!q)K-f0w@(bM@+SfIo$k319qP;1Qc2 zBEsI?(beZrGP8>W>qom~sE8fC@|LLoXv8p>-hR^AsACj8kX2#ZW*d=HAPs|}t0&%) z*1&X{0CTS03Nt(lO?k#5t^&x(7Wnh0Fv8-}5-vMaEm+H$zy3T-5Iqz3`pZt)l)|vd zW1j4czJ`=y62s6%*+_K?_2Y= zA;Q-sp7g4+0ci7;`+iKobh*;FJM>=@XOmGBJzXypj(t9V`S zv9o^)N_gX1QCS|Ht?&1 zpZBNjdEy{Lu}fygVhRV8qP2C5$SJt2T%eoS6GMmlv_ACBf=SEo` z8Yx?mxkbOy(W>$!=C_)wz90ewovZg$Z{8CmnRQUY%P|!iOmO|@Lg@`^B05=d_$ch7 z0`aQYG3ju*a4s~W3$x>=&X}w#Q8SRdy^zK-Mqjr1c3F9>bEhTj_-cQLdk?^nn6A=F4^f>*^ zT@Vspc8p2KyYH&I$iLVlGR=l$nhXvuVAMmLnk7V&TU0aqn;I6~4BqzpocIBno2E6* zUuM)^U=Zs6kXcmc#*pxwb4%dzMM8*;jpgRyk)fkN&KT1m%a04i^nR2dyz-W<#-dC{ z92y$CCOaVu?9>m> zO<;(E!;k){2;1203VfuOWKaIWedwEw=_BcP)DGqNY(XhA^Zjy&34MR!DD;310%B!0 z#~c#M+$6{v%H)XBOy@s0ME;$k)7>>BpBUcYU{GIB=nIF#^?)H#^y_yPt3SPgoPFws zhC;{Jol>He`n>z|zXORW5Q)*@Z7UBa81QgPh&c5m_=PK>LUeZZP+cgkTC&;T{y!lw zE|ap;r%3zg=*&7>(ncy!ch~sK*Wk`bWP$btjppQ6;S-w4Y>xgPN{%{=Kk1o9vTrj8 z(S_0vp%fwDuKoZYmVN*7ShZ+pYh&{Y10_Smmv^Q_rRV6{qJH7WLP4SNti?8_tIPhM znA3<0JqK|PekAjT&M6*d@)~@+An^nfD+Na4QcWwvTB};|L;QrRW80r~HAe^wrf&J8 zH=GrqHy*Z(i3$OPu6W#R$o8VY$Hq@hL_rEXN#rUWnN}EKv>BDJRk@({1!RXWYTr8G zmV6`tpd;a@+bx8@u|=JoqCUR9nY^D#9rx}h%bagZ%;n@}12O!A#Hq#87_y{X>9e^> z1ibL-?c?Z&?wIqpKax#1f-e+xi>Qj(M^i9S`3Z#{VU$)6UhN^r4hwQaRwuO7Vcu+6 zf3PAamH1zE(JKwsVb(9iXvZbwrmjA%4`qWB0)A}BDbf>nCvI8E_5Tt9t065g{(1RK zODjW-41?cT*2>KA1ULmUIR#iq6D1`fdKb*>-jEB1vMNjiuhYj?0;bCj%%?6*kfr8Yfr!W)vuL@a$0-e34k*< z{DC7_+*1!P{U?>=&KDT1kzIPqcfQ^>4_M={?o$@Dw{AYB8#0_3jcq zvyLMMInp2cU7sez7d6kdYlB(t(A`4u@ngbLaO7L)LPru~M-p?#VdPwJBuo1vL2>sJ z)x~zwgHtE&Hi6)+Na@@fN(xB1?%^Bl&FdI$L?05$F56__+&p%l@n-T$HABld2LGVi zoPbOEfO`f4HUGZ;-~+B0$2f7@O(A0u!F6d;DIwFUrTjyjIUZWl#Qi@+Q+N_}MW4h) z8>I)HJg!PWitCmVre>^}B(W)CS3Ih1KB&eN&-2Ehu}&Vv%(w7no3-=y9;^n5lkH6* zbCCkX!uMo8a>(IL5);hI1rw&yQYb@7b%+AyAFhmqZ12*i=QAu7fa@hz8~ONrzPdvD zA)`8Jy!J@N$8Z#caTUx>cWZ-(e$792(Sa^TE0vu;{m8?Rdw@6XD-$b48;@Zj4_G%+B^BQ3Tsm zeC#V89#eHwGG7omuXo_;`K)>mjCoRP;Fo;MJ@q=UinSZ@5)24>-!SK2sr=^2&tNW0k1+BX=-z;dN}$UaGa? zJtaXd;$TA{*Qui{==fXTp)b|Uj?wSNrK(ZmpP^5AR1RRG^mkG>XW~+pxtA5DqKbyD zTx8$84Ltota3<42HbVCv5=#g9iUH~XaD!2)5&J*#7(f~tv|6iN?$u9HI-glqVyZ9D z_udry28V_``uWVg`nCu&+{rR^nmR#hvAFwZIOjpeYJurbI;3MTSM6u%&xb?JwtXi7 zV#jiROWE$96KS5FeD;rhTm~TFb=;5@6djUaWJHPR@s*kxbE%i%Kd!E~v}oa9anDn& zM@m;9@$zcF@E!rn<&owU@8y2aRK3apgSF5z#?OK$`E)?S=2zFA!uu16^utGnYN`<) z(`ZGoq@`IBo;SucOxLIHjPc<8 zhXa}i^;ETJG;^jKLuNqL#X+##8b`6x=78dfRjn`mF-xF}2Qsm(m6aOAE|31NKQNAt%N{fVbIGmaQ~1d2+s-)G`_OHjX(uSCGxH*sIvMPb+GM>wp2>`Ok3P)~yqj2i@iM&xF8e1e zDpL(s#BIW48E41qU3Ysz_ez@-Gz3chcHvZ#Wqf8l~YSNwcnE;1EFP8Uo@74Ye6=*lNsxI#2HbgjWDcGCkn zIll;HnH@30>=Cq_@37dG+`$)at;FK9J>vEuXo~}x|iNG^R1W$R4tvDm~u80 zlC}96F2Q!)UT@>f=|ZW>X8iL{2&JyJ3fX;*2Ab(s;1|oF4U4C#l;2ibr`7q>wz>_< zeav4lsptFSvL5ZsEEr%Z2?tIqgV8r`}G>jkoIC?kWN4Xr<}wHDz-eoCy> zQ(-lM`IEmEvguO}MbMX-NnV-D@Y+t4a~8}65|%py(DhL{PQ=)NRywkpX#y_1tr@}E z=b)m5F5u29ucL~@7Q|;Na`(rr!Oi@=(1P|eK4Ns0AIx}|2>yAe|xtB2cxiu>uR8q$~7?^pdQ?^8$1sbsyb?K3r>lvR{!7f;8Y_&l}sJM?}?&vUd+8fFY)4 zLlNF@eOaii*RZ8sZnTU}OWHz%tf~3>;s!vdvd3g?Y;1<_72EvOBx!>&_3JJ-PCX^C zXd+Zna`aMM=#q9i?@!4Z9yX)d4@)Q}v~*_?wq;rW3FkILXjd(ZxcC*X10L02kqRutmJ=~r~GO`exsSl$PTZtO65qj;MekejSrd|4sym@Ae=T>8-ttY{`dyJIN^|dmY;e#b|n`@NoQWrf?jNP zRRDBkuf2*TToZU2A2}po0tCs|Uvwya3Rx1P)H=FYhsA5ot1bqz8n%!JYECfkiO(Qr zWo6%X51E?5_O8g#Tn8vT&j;z^5q2IWP zy7h2E=ELbNhN$g$H$2^E$jkd3Znm<>dsE41=^cc~xjD@RQv&Z#5t}dU6u9B}Y`856 z32QZ(1RwX~WJPC7<&2>lZSm1gFby=pZ7DVCO0L?Yrq_bd4;0V@nVUH)0$%V1_uL+U(B0y+EtVGFHCuljwOJx zrVIUNaio%cLsq>Eeg5QbmN0JaId%0sQ=CCSgNBb8$wC@SRt4g*^nL44g z!}MpJ50c|uX^9ac7CnmFpQ!CJ!0O zDNb>|qbNRPgc5c7(hMt={+)rNivAw*s8Hp6`QxG)C8~mfXYe3FI60)eX73_iY+mZP zUhPvq3SF{W_4vmR_c_$pbH0g21k72SVd{Di%pa#MTQ32gK00|^;64wQtPBtNN1F0g zG-=@T%90hWsG(AR!C;P>;g^1mNPE0 zANW4C?(>RvQ+}+t8^>jIk@|;#*>xV%)D-;Mw(RRfuqm|Bk<%G4i zH1>l(;{8jjUI=@pDc$(0m8A&5Ur;^&XgwI#Z`GuH{^6}$ z1};)dGovO&v_IP47)@eFa?U$I=nCu<3)ihN5dmP#Z=a5i8PfO94FQ)jsR_fJE77ck z^TRfX6+QBibpseh{3laAJ7=pt>9qMMZ%<^aZizK!qwl9_vSGUMaqA&>VpwxA{jpw( z|DnvP76&|whb=wWWXSCxw~}y}ajsZ(xV7p=_4AjpI`V}Udt8u1vFsixp>BwG*a_I>!oASOXTjZ|1aGG0wQJkTr zf{9PwvG{Ah>fWgleaYLJ+}J4bXt$hnDUTsUC212~{Y3v~HPM9Y)i)`sq;yxWHvtg~ zQuCt~41q5v3bR_x2pEM=J}11tD6L8E!DoEQGOx_kxA3Ft!nvH`3IC-S^bHcHTZ7Wi zyU98<=^Z0mYSa4M7mr_RK-_OUp$I;N1?30n?o#s8!)*n{%-GoXJYlD+3^G?(I z`4PhP{ze*WSJie;i2aL6-#?c21EqIkP60hqxFXUfCX{^3&d5NcdUsqdfW65o*}V4E zpt!m8JD=+yN_TH6ub{g_UgN8D|F7*k}mBI0>nRsV3bPZ z+O>O`B#SbIKJ+hIy_4;(W$f%f%G50+8W?na>VxhvkYiX54^q<_YUJo=86h?!_NvL&t5KALSo-!*6V%9>d0kw5tNSU333Do^Gh zHknv0$jpa+64hGoHhtht<)t43W?IU_g2Kmq`{(CpxU17LhR%L2Q+;b3&)1E7DKl7K z-Vqb8yo62GQZFGB#sUZZilT= zsrr+e2cjT7?%v_i7fjnaWr^*D+9JRxOP{);xb}pR)%71W6b~|r*i%f>bMpwh$(+q_ z0~h9^7Cs_ExE73KF+tRV3q@mxy_+L*+J?>#wRiFCw!GZDtzuaKzdS@EHV0ILS?M;VqX}3pU|8ZRXs5^Z_LF^N{eUL zh5FoBfUbvq{=4nFApChl_Pu_hvP}+&Dl22(RS#A5^jX>@npqJdfFEv!XpPCzCh<~h zqgTyd-wtuU{oPZQG4{I7mlZ_~oLS9Fkvj7_rw=0L6|GRMaODXz&xK?@2Z7AQcaHYP~H1op50 zmRw_zM*SCc!jQM8#FG$YdHa^D4YOaCdKg<90L74kBqA{)0ZM{g`uF5EI!0P0AYWS(%gV}% zmagv1++1HMCP4<5?Mu_gL*2fV&415`d4-Rt5S*6wy11YqxL7IugSvWP&qm&l9|^!l zo&UXu)LGfTRp_b>{r~+4_W#tG#2x=52Qj&OY)GF42_I@^mzlbPuCK@G@{p#QNZ7<) zAwbmxuvOUU%1E_wyWOWx+tH>E7J^p)w%~S@s{m0WR!&1>D(^ZoGZR6N^|h6LzZGX+ zQ|pSOwORItEd9!7ul@W8J3G5|U_~vzx;l=8%jSpQoy*_#XSd;hZF8P!BaO^yJxmCY zcNXexCrUj9fsMZlU7Ah{{NL;9IA0^`clxzXjs0uO^$d$ymW;3$L>9GrXjLQQ;IZOfxM7S5)drBy1vH8MzcI>YioPesblO^t5;<8QSLu3Ag7`i z!D1xFe#u31A-gSK@?QsvTlW$w`}(${Ft@h0*1DG?MyU41Q8lQpb07)+4{$+$-q6n*Q61 ziJyT3Pzo5OWjgjoCx<2*0EVG~E6%@li$e$S;5UU!93L+)FVS#Nl?iK_0%(;)m7!O&`Hq&0KigIkkJGH1b7hvKt+b%uDquo0042) zS6km*#>&mY)%K&it+NvVcxPsPQ*mAtzzrWiujVu~Qya@yU0887_^y97VRD0lO6U4Y zg?Gy)B3b8l?zC&a`@YVEXpja(srlp`af*2#_&k@|(Gh668uZw*P)}6*tNmTj(`C!V~3cB@88QHLe2-8W zYdTfx8fQnTq0#S}40WO;th^&fwGM=-*lF}3H^BZh6BZ$so5|Ef;3(b&h<0t zSCas)oF3E*Unk*)#e7YoP1UTp-m-7Nf;{+WI`QqH+1%?({cveT?FXLMVpUbNY!vXp zWsHvQSi5a}`dmkue~DYO71)mI~F$_>%pMMRE0(UMbJXhZX1O*uCt5UpN$ zz7W!?A96`mkW(%v<8PD{GX-DxWnJtgn1_! za8i-5Um~i-qw$WUJXURm5}H+0(%}*8H@-D|X@YNTQvMz#QaF9u_2`{r$fs?c{xCr; zD`$inc39Hr1+~{(D;wq1Tc2X>l({00(gETu{Dc=Nx~!oucgZt)5rtl;zFqsf_StiH z*4#21+3w{*i<^OBt#pBQ@ZwhqVPp+-{9)$Zp>Ii1dpAASt@Bk?nI8tv4b(oPhuV7W z3|21S2sX{-ai_iiji!w3V(p2efJA`WzXSSXJp9dw`pdoEIumKnM`{sJ4~(MIH7f-&)`+q z-rUbLhqH*2k+iz&LF;3WrXYkZ_%?S4ca$Ccbx=MPLBw3dBpfmh>d!F5g?g|=w6`h9 zQMuDYiX#!@h`w$*fz9^iD?su}j$e%Y++Dx0r4=PutWm4RH(93&H(VZtYkZ&0ZBc_TxW>MA>YQ;L8Gi_h3KJ5rFen!btk^S1Pmp%*t z)PSOlq_%hFQI?NC;r4UC_&B+rb$xR@LohWes5u_pyGCcS#Cz?N;bM-wPFbTN+e?RX zZ*7(z*FWButJ^n1qG;a}mPdz3fSS7l!sr}Mgfp_1v%c-#_FE^ZC=7Is9VLpK&asW0 zjBw_Bu>P>~7|=d`>qEKW+T3ZzNsNhH;M^tK3Sc6KcA0Uu^gA{|!%VWhSVXfdP`|KZ zhPt$jWQ+QN0TI~KWm3Lz%E$M$Mz#7yxV45q^k3_#8Pr)SmZ!o-zVRqF40TVW>aca> z#sxlio_Aj0=uME!nJyQsW(xu_Y3uj#x;Nt-%!t&ot<05?zg>U7|0dOIH~+rTNYs2V zk)ffi3>{E6HjX_wumf^O(DulZ=P3Jv>BKvClQfvJ_Rd|>!2jg^fUA`9Dz7ITs|PL? z04ORd0zm6>9D`B{CsQsCr>!=1&uMOR1h8a zQ$ClwOr?rcTYsc)Je3?@Q-8lXHbD1=n0G{!kL~y`md~zO`YB&?fpMnw|ES2U`PKM# zmi^~a*J}t|h8RlGmgbxBJ-=U%P|YJz^-uY}9JBsSKl=MWlc1O#OqaUDeE5Y4_AGFy4s*# zZt8ntsaEly1i8Bpa#VSxvv-W@c!oM@9WF-M2Cg#o`gyMA%R=vLW|n+uxXQNCzoNY( z%@|JR*p+)W1esg)Z06~>UGlTX`Oc@?!SbqQWo5l9*JLcFhi6n$UKvOodkUjtV1NKU z(*Tch)Xo-pdQ4Fl0Yj5uHr)!FM#r_z><^(ipGDG+ zKQ&%LBCU-CdPBkxpG{H3kT}mF!C(ZH>%iKG*%D(E3AF<9swDVS<#e1cjm!_XV>eC~ zf|-#Z`$_U5DW>XsaYb{K^uAs8dRNK+O}T;z5;wrQmU``M zi|0d~i_f50mI4MQYV) zTT_sqD23|{?iu-Sl<{R*=d{NZ_6OM%hnRLh%%2U213O%}8c_{&jei5y1Td*6_HWKx zc(ElaNUcOa|5lK#c6%#@>?i_pJsz5Kl$oKLbVVyw@xiVsE`0YX?cML@ z1Pwj=`aQyaL}XqCQz5)&v;N#71d84@QL7&(Mfipg3`lCaqNl+2cisD(VR>z08s^+& zUEh?M?XSAEw2-uwYJM+Lr;RL&8Ksg#oS~C7HnMGD559pK(%|@?0!VK%5HeJd8S{QF zmQf^pNFl#R`gBriV9Vq<%)#vcCMD7HeHY7thw5NTja7v#AT_KX1%z>s#E2pGBNe-; z&tSFK52M%cbphR=x_mSLMg)^$sJl2JwtVSoSkGfq-VYayUuRtkXv!gI;4zZ9<4unP zVCx%$JoLLOzwQU?AIm!#+9nmBGz_$~J^QCC8q(qf=!1OCCUs3gBZ07d$T-TRO_&X* z1TSfDuvBkm{>ev1VTLUg-faH{;4RrnfX)!hUu6b_&iV;!w-oQAkiy1Cn2@92P$pJ{+uqFIPf!deQc-f1QL<=XV+-<=w zw%{Pkw~P)hJJrwLM{D_3hjY}psISlw5pZSk@|p8ZI|6~bm&NopPj0nHeq5BIREyl* zVPrw_OpetpwMdeiREB+;?TFHDa8p|w@OUF8N}5~dWaEO6-#H!7ZYD^Go;}5}ELCbN zaeR&+lbQBut91U1*V6nk8=X1Wm$)z~!%(4VoB`T_jzl#TR3Qlg*Cb7%RJ?9(Ghr|iqPRB3wEVTdCgE?*`*~*P`<0>hS zssyh+jMrZgm6?Is7YX!JhPaZ2vs8{)giz{hr1uIo0@w`G9SU2dR1Kxgexou9j3c~y zTBZ1>{jR>}%FIM0vfCU%RmB+VAI=W-F=(uduSl|7*E&G}WbQE5Rq=i5OrU)awITnn zHpi*(>v$3-2_1g;Wj5TVv3INh`dz(|5lo8hq$i82doW4TcymDJ_Uj^ufe3hRHSwNV0c7UzjR4obr#QAGo(j$m{mtR?M?{`%F{MN{5zX3^LvNFZVnhI(AITB% z*3eLLDsnt^ww=Dy7tyZZ#<%>TP5UIIjbx``un>8`TD#bPm;(ODNW5)R~0sOLy@d zD7Bia*!<7}TsjqCy{}_=cA*46Nd;Jr1!DSBn%{9ko2MpYhSAx{AV~#iqVDKM>~lD( z#coTbn9uvu&|(r1m-1V3d-(Fuo$y>d5bZa~vOep*zWUqt+1~ol;!L=^7%-wvi!9OX z8~~rFvo56OeD$zLJaAG0Q|(MY~PI)XtVWGaUw^9D7 zg^0K-6ZxWmEE>DBbcoRNHK=#i0~1Dxu^siB`%~mhoky|Jy-Ctz_%AmqQR7jZ3x0M0 za-XV}zT)}r71{Z}UCcAZNZ4S907L^)~!LUcoXz(uQGuM1qM-cN00- z4E(F@GP6;Nr+_Ss4%H{(`W-n&LA9n}5=EcRpp2c{wwu#o)q_~@xgJ+s-}Kmm zqg{n5S#NVSqod25*yWUn>OhEFdtbWa{P!ba3B&Km4yc_@^D&b{IKe-G+`mx@1MhBU z&2E24>5tNyHCQaf(;8G%Y3Qy*;_+ujgCB7YP5@p)3i$#v$+vY_@0J)IqQHO4ys=0~ z3=*Cx{~iv{)O*aTsYMC&}h{-@6>SI%VUcijml!2>#7P zCFj0#-{CO zo;rg%NxnzS37xr+Q%A4IbkzFrpj;qJ6&+yLb1zajK77FJ`}Q`T0_e~S8GW@;Q6CXZ zXGcFgZAGYqlq4#?++6}!3<=jN<4(x-u19t6%1G^B< zZpB011$p5dtQb_3zX9||xjn#7KR_OFsS+S&w^;70I^vM!u@tCNnD58p4o2zHQlU(Snig}y5DtUE(p0xaa zi6q$F1wjhA`oAsk&c^cwjU78QWZK6RRX=GNt3O}q2zr^5^v4-X-)ZpT0EtQ zQHR_GgjhBZ2bR{617>ekXN>-dj)+U2`}-^?Ic51*79SGl1MOJAxYkENyOYn|Gc`LH zzQ!qYaNY%aVR)h;Yy1UlD0)N5?&aH$f3Woq~PW&lIXj%xFvD6;7^>f)12>BENbo# zlm~F%^K#o~TFM*sNn+Z!ZB6{182LoWF7vvConyUu&Qxx^W0T$J@iM2!u914ox{HYI zg6sBSc+ZV0Fwd66#QWG|J2usH1L)+U#$efJ0U*KWVDrZLWV#5PL++zWbyHBSlw3<8 zrSNS9N^TA~VO_!bT2TF6d4^|XAj$qf=0*K5H|WUp`ZtlUoff*K_)BF!(I=xfgfA5M zy%U@!bm#Wn|D2y1$EfgEoJ^dlL66W!?YdNplU`B@K}IA$6g=6`yxK{M$WCA#=8Hyv z@5={6!fq1ScI!a`s_} zF#%^fqcJt6Wrfjm&eEOLv}U{#%F5E2-}Ju-JGZ-I+#SA1@z3&+m z5)qRI!=|UFbr+{JH3ejK_Rs0$dA-80DTN~6ZsO*GN(jpvQ!J=$AUER2kmtNjfh%oN zgx*N^NidL$3faUudlE#`#llRO+W$_FVuU{^?fI_bXuzBpOOhi(6J1BA>+(VQ5`HA@ zcQ-ift*#dHg^WghJ;c}$UO-k*?npgUds~AIecmNgJGd)~fEr_nGn;rHZhss0I$9=b z4}@}AzGY&64Sfa@????rNU{|o@) zF?-I~q(LD7fTumlNHPUq5@@hyL~6u*o!+hSs?G;Cz5SO+aF4NJ>r4`ULK4UJslTS; zV~Ud|{GD_Y?@rhWZ!tGj*F`6=u_tdk|C2pR<3D)9?8?JaNcV@v35$o?!c`5DtBKvs zS3m97QGPpS<;vp+X}$Ve;k`2YbAkE{zuEr0UlD5F}bDcxPrU;SM;bRC2#HNhzFS^nAbmEj+&bPiTb5_8}IH6 zNeJvS2vxH?O|>Es%fXSeP-E7#}Rp6qF7(Nz(CLOxQ2N&u}h=|adk)~xSz;IHhtzy^U+S`&;Owt ztfq-e>}`p6h{;{df7VzEH(# zC*sx}p@T|e4+c)@>eVsFtiuYU*u_zZNe&kC!m;~M8dvJ4b~O^7ox0N|$AaJmLzRUr zklE3cQ>K0bRyk-by=WrQiiG=I8uzujAb9Pv^Fcx9do;ua)`A*h&>3ES2|~2Lb1VR8 zdZ-@S&&!@7_fx3^F*8PI9hM4*E_Rq9k86SI09xEDK*DO)Ouwl*f`QLfqf}i*T;#mk zk&wFKxUk{X_t3T3C<45xcm|nlc_%yT*2Ooewn1ZIxZl4mI!DsT#1nFYB*Zfv_H3u# z$ZB~k5N=)Gy{l$IT=UqAr4Tw4hn~k%lN^8(O+I(Hqkz6)41Cc45;gpV4XG z3jI7Yj+CSBFEPHN5fh`l!E3H5LANVYs)c6o{cS7&Zea&B`pVX4ahTealU2wUbB`w? z>7#SkUgG*w`}sa@aY5V^z*=3Ce6fL?Qu@v$io;vIY1G01Nn zFUI>b5{EdG7byH}5SZY;n(IaTE5L+B;)(Z6i3ReAmiGDMkqr65H=o(tRfQ*tE^pKkf{DIZbLHjbQJOf9yW+r= zSQ6Gbe*Yyg0aDMA74}GZhbEG|ag$?=VxUWNLF?~IAz*@7ygpN^4I;xy14@7qpgXC$ z@yS?5BTNBPL7}c&TPq$~$S}~*OQ-rGVV;BRtwfi(uQI{$JkB`Frie$W?fJ`??q|dbZ%c_$i zH*T!Ktd)%6Sxb+xxcmM+Nad$Ru-yqvmjGM_st0U%5QlYlLFF`NJ@3uZPI8;l`!H+9A zySIv@m7UEcpXd$#dv=vU{oL2{K@lQf_9=frJ+E`XcJ5^_-QHv6CP7WOTIZZUZM)qA zxWNO6k)xyjXycx`(YkmleSgwZ@^Gi+|FlQWoQT6(NKM-2O-gz|fTGfY)mZkzT8o_2 zJBr&xqF@Gfj9KbOZviFpH2<45eRGX`#!nJSc*vd+l?%%as#;QgR6ybe!M*yicrLz< z&h!qcso@eA>HbAz7;@|yE+B143!JWeU3n5*y7N1|l3N0F0*7~Dt%ldJ}dF|+zl>b+Y+1w`U?-B@0C;lst{6C*`Bq{X@_w0j3y{IBm_`Eswv_o z^Hfg*X&-3PB1;F^B%vfES<3%93Z-Q$*_QDZ5rwBYhSjPEN)x^V8~6?q3kpwHzexT* z^w1djOnTgze!4VLXfp_ z%U_5;^xG?pkVN)qz8<B#WC1vnq?ot-; zN=ic4E+tc*5(30jHgez#EW*<2m@@I}%rB>-i9BLq_Y!thiO8~+gCw#CUTq?8bWGaL zKtx!GhI3{K&dTn3I2ADBoU-H7{u_z_TgN$c`pRTE2&4Ug3-H1N$xN!RADNbIa$ zobo>;Oj28<1aD9%A$wj}V^#6*l2 ze0)yhQd<+)i=0TMWIGitX?%SAHFl0rmX&Y<6r7EL6VU-xMOh6Enu9WXGp={)Mw%g4 zTU(L#yV#;+KDVo%3Qo|Egf*hVHt@Zl1HUtUUz19T%xsYPJ0^x9+do|E;$i7$-tgfG zBRXXM1gwWcRTV*iyOHuPo7D&Q+|MH=2msttqagm3yWShC;cW8CPfmWfU%#Nd8L@%f zALm+Zh^|KWU&eMZONM<*Acz4Vn{bVh@b$9-uCARd)0j0}Aq&UbSL$!gab@qGph7RT7xBCj{!AG~!>xAEl8AJqk(H;DqSTKWGW1{Q3^fr)FU!q8rTAP2Q z-UA$n@Lg&(v8X1%p@keq!6E2kBYLFF_*Vx z3ZsGzvQE8Pl7A|hJ5OEi9h6fop;Pk^g7kmgea3TysnzK$+NKL4C>uKcc95=_t^Tx* z0=aWLE}8#J2m;jIDiF|!=nKxz2I&&V;0Elzp6(Dr5Ep8Dgf)5$gYQmWS>SFb!4max z=a#l?nS>A`5z;Jas%I^U7!0ikb3Wj^1wOh3gm*YZOltUX6sf138tf(pC^^!Q9-E_Z*mmNngGq;9}!qE`%e=56n;lMZcO5Gbd4L zQSa6l_J7Kh&bm{}X%GTs-KW=5Hz+mLd6aQfD#-G()BMw&Hk?hu+=ldPT?J+NNeOHa@ywM+(50PsweFdB`^3;)MiL`L+VatIv2R}eQo5#J z@?e_;l^0PJeKaCwir%yCzqtS~CWhy{G9vE1<`p(e4Ld<(#Wp{VVy_?_JohEr9GsrZXi+dH{t-$G*UsUkm)3n0 z@AyH7i-_g{CiDhr>zKdE(AdT49JVC~)uhXmXv=vx0*AADJ&ilU#N}vzDoacL>Z7r* zp!7>nLM4D-CCfd#bX}gfRFIq}Mk)lZP&yIHKgzX8(Z3N|N0F1dP~Y>eZ?v9L5f9m@a!>viY zoD7B^yBd8U6}fd=#K{nH^6%8$%;5sr1m4;df+2lFcEtGjW_5jFWCDLE@C%DlUo%l6 z=H;|5Wz3y-vdH-6dIS|^;IhZu`t$8-f4*$A=c-FTMGwgAeB*bkbI0?|dNdKo>?jM| zy{moyTZu&CkgM1qR7NU`KY1k(2ef-G`NaX&E`-(=rW1Es0I2Xe%P(?xn>KF}wZ9{X zOQsyP+YQi>{F%b^+VV~s43@Pc_fH*`)qL1h&%K`R$g8k0(3L1f|KmRRDTYecNZcK| zZUOUhKbz>3FjO6^m}{t~$cxAmf8k5~p!MH{xHW;00`7i((#o|b{2_l(FIlWY^;e2M)wz^>Vrd`k8qt*LC1todC6c+ zE57yukfeoBy5FA@HUFX@ig&=Ena|K8pf_DIZBK`=m zC@qeChjA!0j+gh1HVqFQ#%7;N*qjyy?XbGeu`4}k*LsP(jF2A6ikUQ>;W$zan^|u& zsjVMrz|V^zwhZa@m(knb1B~qF?DCJles_bm`u6aLn7a)PxL6>6zdl7t8pLLhn9x6z zoji9vGQAyr*+u>RX=A0;m9{h>|2rX-rS%4a*=<~*(z%uye~8kP*S_W!FBaz2&7Zva(X)Hz7*esQ*g2C=ekUD7Xdx7~=bmXQjJWJ+J~`LZ!#3WhIq9~$*uzNU zmuJ3hxZa?$vTnOZp3>nD$OSU43FNn3 z@PHOH8091j*JYj2I_0ZmB0cIaK+=K4yW8#uqQ$z(E^Mb`CI08lKj<}1`Zb9dNDy-I zM{^nurxmjfD2(@Zg1~FHk2L(UG;&y^xdtlJOG5zC?&_VPJebhYVs7plj&kDx06N;tWl{MAg{afhd3ma`TYlXrT#+KLUScR@ta$SB zQ6MgiDQx2?s3)(T6@vr;+}zq)E`7>42{c4pRGSl|iM-%4PAq?nP2$eHQTBZ<%mMNY6PZ;$ak&VcjLh`$uVUChsh>igK8MQOnhgg939 z7cXAcqcPT#AWBrm=XSrQ`CVenx}w7W9QJgO+VrP^SGXuMh~|ys0%{ys;C=rM)sKzs zIap!oISHSQ1ZNjb6rXzA=fVa4e{?rmuuHSiBs=(DnHV$6Jjt2|4(^3cqQI$L|EUYW z-2wh_0e{MpSY;Tk^rsm44syq?Na(p2f8MXcaRKNGCpgO3GTcqvgM%f5tMg_^6fV1U}NNrrkYI|cyc=rC`@r&c@0=J@ST_APP z+{AqGGg%l}wqP0xkQVRLLfWN2o5MS(*ytIeS~zYK3kN$}jjBr8P%>4E;aSf+<^!+8 zr&hSjXHfLBSdDV>HMqewAXr$F!?K9VH~`Ss!2f6(uu^g}j2o|f1coLw|Ge7|P#Kd5 z6D$lQ_#(FJ$@l&*n#;*M3G=n{)~@Ee&91hOfiQXx6`zd;EZLvyXaU$Ws*P_TS^M^- zi!TBy$J=-UDjP}KGS~$HIGzmW1f{hd9aj0he8UEm_9MZ8(*hhoEHu)E1)lFH@Vx96g#Ty-dBQ)~em! z0u4zz$F72Bcgbum$Q_@5yz-~sOV;*#SFOeizHQHMJ0HGHUvevoQ_ShGepem^DQ;nX zCW4vhq@R8g9)D%~@{|3a@l5z57qWn-jn#7PtSdTC=qt2@Nd{EVP!#s!kM_${anGMq zcQ6c_uYdw7b!y6dOpv#)WQ6eOlWoDv1&On+3PK_zWpS|Z=8UcGs8qh9x1$heYz<=?4T?;x=}fHttuOaiED z^e7lEl7;M`PTgc6Y1bh|t< zaeFFv8zJ~Ypn8pXc6+6$Q6wgRNL0XDf)79q0m^64ff?XzI-TP4vY>8i5^&kZceMDj%^KRE!S)PiBs_05e1=~Ceqrna&;~wBTY2x)Q5jgT+`B!3)x^E}*@Dtq_kxRa zT0`moX6N!4iG-ue|Jbcb@0n3WuK} z(usDrsA=fHX(-boh||-+S4WMgl}>Vxl%j9GMtP4-Uh(x0K)_H5kJ6^+Fuh7dW->Qup*# z6&)JAbLYqHRU% zGt#)67x8YV3FXuD+7{{0=0K%Kgx9n@_|oB`7FZ zQd%mhhz2o$9Evw{ep7~D3G`@*^j-T)(GisB(2lS$#L+9$WC)kV!W>RsVc_1AI8>nJ zA@34)XK{ShbAQupRw-V-kM_zgs^6;dFvVUT&b!(=jdugP;3gon<-qdJR zV=~BgQN!!*Hk-Wo9d_qJb;{S>1_Q6H%nWW&C-n?+T&A0r^;lJ5I!Q>PTn^`uoPXYF zK6Tox4l+HYb4<%LQ1J7x5*Dvbo{Ge$9@&g1aYl7PP$sMNicre4z!os?0^Ua&fL!TXIj~h+15P=^OpM$i9L`hz&N^A|nd14(-qU&P{qzSb5zh(e4 z?sS59%;~wu(T==S{r8f{Y{@&6)qD^O5@t z^S}4DABhG_M2&*oimdam!VtgP&|>8N&i!fBte~JE;p8O8Mn|WJe{(V_p{R()&CQ*V zk&*YUeTu~R*(N85_sSynpLTB3c~x2tk00Qf&VQ6T@tOVh+@)$lq>@3a)SIDu?( zqw$HLvlP8>^DY3SgDr#vYz0v$PtX%)!#6;V5Br&^?Q@mR%?GFBDBa2Mc+%>%#$Pm- zZ~=mHr;bx!5F=6o?mWH7#Icy2PK`H zoa)z0Sy&{cFQ#}c< z@Y4C>-kv)l=d}B{X|>`r-2HLs8%N@#R^=>0cYTHkbnS6YPMzLPgP>h=r>P}*LY7a0 z*|>2`hyWtpx(*2|P?F4Q_!UI|rsZJ=PW>$ypL-G{wL;xL{EV(zNJ#w_Ahdyk;ixGM z5|Be|n&%w0a#cr+^w=-Zq>YM*g#d>wL z-AFb{Z)nO$$xNg;wrI(SZkHaUvz4&GBjg}V{|QjSSF>Z-@LlQk)GOCA-3Pc`IKO%j zJ?S?!Nw}Z6(9`fjRUpZX3UQ9^0^hNpON|zA@$vBujE*|KVdvxP41$7}{4d`C5>nm7 z^z`((MMZK1;OT7WC_h-@>PmVcKvFz;f0go7_Vw$`Nv)P8EKZsBIrpJ26AghNuIIgj z2z^7v<@1+r)3m_kwCOTrL6?mgFgdfgeUjetQ#lb=9vbz(USAF2RV2VCXD)px66W;+ zc1FHQySch{oWCN?fiRQ!U(v> z4)#SaudhcOqghuWZwolPkz7# z3WojlRhC!_YlyMVhPjpVQSoPaBo9%j7akl9Oop3P@*{^|KM2uKYzK30!g*vZU^jp` zhQ01ritylBdhcu&_jd_^=ZKZ37f#jNF&6|d<%n!oYYxRJLGV~bCWI%Dn)*K<@enUZ zz#slAUP;2ae*Z!nIjXS#YgG(Sh>P_u%Lhrzf9-C~z#y(M)ZRB<2bQfydtA zSZdA2Nt7SxF7`*3=ZvdgaV@@m4usPcFsqq60SV)qZ1xUW)431uAw&b5wB2xT{B46s z;5(GuHpRP4vK&|8rl(0Pph_`bI1}m8U|NC+9(o9`7kjn9M#+>u_#RF7DgyzL21sI^|ORP`*>`o;v(Hr*Az? zY|1%Y1=&3uPH*`-v8%NVY~Bc#asZJcHIDjQySpX^MVZ>=(2ea6i6%ZfXj*=c@`-Ma zs<(X)xnNF~mHidZT+LARvknqJn_O2`%=$w+}d}?YyA#II#~DnH+VYXdEiMone3-_;m!u``$-Y2{SC#;UyZIY?q$I{%nuR*#TCTQ-;C%w`5SXAo;Pl&cCUnZQ=gFlltVOSZw3Wd&#dycQZj^9Ha2FKTx%J@%I&7ADoxv zSj$w@bo&(jvV13wdCJ)o*40X-5_C@$#2yMwXaQZ${qf zz0zt2!)ejG75FD^znCuUDh>Wc&)@N_9=7m2iiFrb9+JN}0WNvRa}M5H74l)Gx&UPO zJh!L$cph%dd1J*V+ApU(TW7H+N^K6kg|k!{{y2UO`>4=BybPab?;mZ)K|v?`NM7U5 zJ#9dOsk#6T>W^5S=Yff*C!!+{Qy$;HC2BuT=Ywl@SIv0e*z8C4)j`j=rcjROq4PI3 zdpKln+tjGPg#2a;SjIbQCHSA8i6cc9^(e%Q&YF20uD;Iu{Rr~>)w)YHNe=lJ2*U>D zsXXvYtge#(ML2104iEpP^IBWa+K?bAdhvt~PFpIn)U+<3x-+-2bOYeF@0Nfle*DS3 zU(7>!KXvHGm68vwtEKxFrN9g_J-AoSdmR|MD=u_ds@B2r18rvi+I2&*Prt_CpTj=Z zhOtz&Bu}TC{jawXEAhGtQ4Od~>mmmFu5AFcIG+NAdgIH_al6lt(CG2Ef%4B+-yf@9 z#~${P&<2Q#l{1|9^~Dd~Ezao#kKOQnPtmo@6Zd;ci!nByfJuR$&vrX%e+VtVclLl4 zgPF0GVPB??quLvPurFK0$N#4w+7QpdR_f@ZpcB;UU&7jBbehwrv?JB_$Z7- zIAhB&j~+d#|9F=6+ZynA91RM5)d1!2gI#wYl#OoDh)kmbUwEN3{wDDO<7Kxi)Bs`} zb*^S4d2og1M=)cmydg*C*h$A(&Dx>YYOZ3@#aGV*Z;xxq+fbsV8Q3SClepO2Hltq) zE5zsQeR>O}7U#E%(>{92_)VEot5zIDK^0xXdvAq3Uj4laef;uHp1x!LXN5GA0>&gA{v{6lwLSZ)C6J^agKbpnpriWZUj0%Oe5!mkUF;5sI= zTaG2DS19Wl^wT12r6HZ{qYa;+kPYc?!gsAI+J<`{#2$8=;<3|<2(f=*g0U-i;&+Vl zA-F0OkOXK_FrwtPAgKxRuf|QjCuUVGd6Dn1n6<9@viU&w30|bURY~dzrPW+?|MlEq z!dFYs+rWM(TjpL+?GnMWQ%A$U@M5sq^XINgE5qek_ITcfk=t#9?5A%GhTiS}3vi2g zL;IJJ430bf{Bv6SDP`;r|Dp6D3sVBvGMq7eG{LMgC(Tld4C$>hcV6PeSdGX+Cmw>< z)UfCtV%Q56>1BAVK3m)_tj}uo`{!~*(jG_WDWrq%L1e6Ai+U>ypqr3d%b{OXT@l}yiTLr|Ksd0 z!=n7YH*oZs0R-t3=?+CH>6#$~3|c~vR_T(Km_bS!5do1#I;D{m6tL)$MmmQW7#NtD z^Z5Dx{^!*>*LAM*f{UkS@3s40Yu$ToQf-E{b$S5U=kST6Z!%N{YmS?iwqVU@*qq=v zJyRH7d;{h$R2x~p3H2DZLZ9H=Mrx6BL_aEyt@Borpx@9 zAta*cuM-7?Tk6Bh`AceWyM}lm8PDOhw~c>h^>4t5M<|3#@I!RmJ_IgwtSPAThGXt< z2N1f@XD9-CX>4dPXp1K4cEG`w!-kVD!SWrioYmz~-UXhkagj3b?re|+4pBK@JlJOU zu_@wE%(>q|rY$3YB_^xI4>?;HXB=nrZBUuBe>P7hyKUa7Rj$vW zMmBFc8c<^=^&wg)h572D;qmwkDwahUsp z9QaBfPwZGR1C?fBv#`5#L-_8YUg@P>T9ByLqw=?X)}@wMU}mMPgajcHO?sa*+|BIJ z#2aV8;LFQ#?o@#bnbd+gJNCR4og9>;S>=$XL)%{{$Lz+LUXy#O0tMcbmvQJh4oHWIvkiv#)qyE+>?b?Oy!N6LG|^x#z8U~mdjzu zRkBTzcf>ygzGs<}80*bDz6Dp93d5lrTt=TnVueljsfRTeqi6^sznpC|6p4X<8W(QX4lEc-I z$y=9PYQ|65pR7@9^g?2tPu^}}6mWO!B=ZbVVlTp1o_+e8ky*RWk=d|rE#-o*9a?LERQQb zG|zT(DUEe zs=nQ5gz&d*^IO{Sc3XRxyXC);;V=k?>zrF1YLa^(;VJT^+)^&Rb^%cKO1oM~^L~n( zYx02y-iSEYy;MV~tZ5Zz)5n)0b@yng4Bc$fNo$_`Mjauzbw5G7slrgo<>hKr{1d(G z1}BrW$TaB*EE9k)M*U%Rj{0~ToR4DY+mcGZy_%UL&NHG0^0W$c`u}bIRT-Ug-1e_B zT||(VmY2hgU;SQ4EeNF5xNl55`uC@IUP1fD1FP$PWzThM4gMMq>PR+Xd1RagCaF~n zZahY8g?^g&Ty?5@v7tqIfBC{sv&&@XtT6LAk_g@{Y*d;>9=55#10wcptV1FZpa!!z zs&-wH`|@1>HNSW5YjBH8`+c}Pw405VvF*DSg#J*Q%Gj74RyXADn?*v_&9&{?q$b}F z(1~j|hB3+Yd%myxU2{`X%I&rxB&9OLQ9x|uz7=`Mq;74bO@cLV!=y&*$1BzHSM{|V zgS;U-udQ^f-MG0BpBWQWSd_H#49VZold(he$jF#|$OEYL_X>&3SrNdQmt7&xV$gUM zF?30eI%4DGJCQT*&|mLWk47z1*!_(fTIupP7R8G}=%Lqw0QcGGyzJ4a<~w?(Jn^gK z?V*X&l#*m*Zj_$lY)~^8dPd;2IA5!Buy&6FzEgL7I)52a7edXwv;X2J>VQidU zR(DJRFJrD;7(M1{OI)nJ&tJJjE?6RiP@;WBh>zD1f*`3~A}J50@=Xr0vP|%>p4{Np zc3}?I;x@`c_oLs3%F2iHg4}(Lu6ag4m?t!{kR2ktCKslEorJ_!g)U-+3BG@6qYM{+ zud3a91G5|eG2e<7eiQXWI}Dz}L{znk(;h+jSKdJmD;U+{78!(S3;D+s81BBZ5&+8U zNqwbGYMYo4W}R9=K>wOBhXF#S@E%E=g#$#UKZae`b4AHZ?}xOA4$jEd;^W}jL;_%dkgS1j10M0F;pFs6beSr zB57&q*^>pwMXP?y%;bTi+3dYcQ_+>IYforPGlja>z-`abXK&c@l~A=sR?`1I7~oQA zm?wiv_5YnpNj@Y6x}>Em54%o683CH5K~n1@BIG2{D1}7NeHiT|K#O~kdbX<&@GBEqQ_%@KD@+>Wp0Uy#`qKI>Y;%F| zfF`x&_KmG!1ytl#^YA1cRet(0xOgPtS$05YZ2abds%_+ln>V}Z;KsJP_akkZq&%ju zcc=fE3ADfb^SgrHTr9W4Ls|I$%pq^W|9`c8{C_Z-#J~2MoajoNxfR0Wru-wXX}Tx)+>guZP;Fe3n?g3~US9<%nnYyES^#sOf)SQei(qiPT6sWI2}~#EW3##2AK{E1L)DA8*e$fBZ9u zO8W3Y(8(|}#oK)*2eb3ebU!V4uyyu0Ys2;Zc{;`W(9so_!ww#-6VI8Rz0J zIE&v>rK)+pW`peP4c|#szI5S>W!?LgkX%3*Ki13Zf4>3#LiPM$ z)O4^76S!1X^YIH#>0r`yG_UX6A8}=TILYEHg9Gk7*VDi2ys5Q#-Y}2*kdBAvzNtnf zW@-vEW+lC`ivU8B4*knRyIYko4nR1LE|ohae>gP*jL zMk8LsZa@CB@vyh_2Mo1CF!4=VF27_a;t8c;8Nud9W!fI-lYNO+WBptG*v1jzy^@S- zMzSOAj3R6U@eSkAO|BlBP98cOL{y(w?AYd#M*1}J;U3SAfPfvXJ^?8J{#47sS!aOUiH z*n_k^oR3y`r<(9}&PLCnHuH@yvzte{{fDd}{tf*qU*8URS~@KM+Ff%&;b-5P)`b40 z2DGgX$KUFRxVI6(rzbn2O^Nwz!$+*!u`z4kMRH!!!%2aVvDn$Pqe;^7p)Mn~_7l^) zPq!frsw$YdW5mg}(7yg1!jBVw`|)id>(5Kyi<4v|L-1rguTxHN&hbw}NE+1%69TAc zhjr`Fyw9t+8|?|XZD})!$byRELztBVw+(6cq+3G0>m|NbJle$m&l%3!$=BNX^}J@v zJ_37pCE|EjP6WHD&v1t^MBSXT&lpi$^|O6Aiuts9qlyNIYEZIS!3?QB=r)3F;Y+MP zCMWw4#>80rvt2f-JhXq-mrR6|NhB&xRcqqk?a*xa>Z>o>m&9UM7O>Gx?h70;(&+xs zgRC^Pd9vAAdV-m6$)OoR;t?6-rJ|xe4GfJW^l5r~Y}$cfy18G#UoJ%{XP<>9Cf-=@!{K0D2W^-4o1TMfgdYA$U1+Haz zW^(}XD}#+w&#WBpfI?9ZSV>waoj~$LkJUcZRYr9xDxD;(4ElzQ50kF$pgR4fvI+X5 zHEmdetMk?r0sGuyeuCgok*m1aXOfEqxH&D_RpL(sbe^~N=Ss-t@OPu zeXUSFbu34aj6Ebx{&sg*$Mmt^ws-&h!DqyAw`E*Ob&V7;9|58Wu(m}}8{fK47LqT9 z)+*_2b9$G>SN_nEf=m{5K6zY#zpUJQOA-v70j^Eg_yhn?ZW_Bb1n&BL?Y z^y%pO&~9pgi(s-z@h|g^h8T9l0n5wfk2JvW(}4%4tmHaZya-J*9D*j;`(p9inc)}f zi|11j!r6V-ipHk@T@zbbau@orS}gx^Rd@A%t2we>1|tl13I1yHcwE=k*;yZcFsdi% zZ_y+DwR%(NecSEc$FLJ11$6{u3Z;bV`GTC z!(i_{*>2_98>@A(NA&B~T7E)I&ot2*9pPoinU5V6O zgdQIGJc06uWW4Ce&S9<&Y^vczIeSNH1yE!#Jr+G1P?)@5I-2Ay%FR`kzo7w9cFlaz2gcL8E(7@Uef2C0vv_kGE)O%Hh|Nv5xU zVN66u+#8=S4`j9f>keSS{Iz&r45z3GkRr8f&CAOebME;lApO|@poRM)-LK^tp-!Y` zN#HhGD+8a*j!gV?$SK=qDXAEh1^wUex%g8wZ0_e)esUq>t&*9k7<+L-#2?e`sQ4!0 z?IZ0;O-E@Vdfp=BOiMg)OHT@2lMod;E60P@N(=3t2OzDAuWI(%btAxjqJ}_k6H4A) z=k4viprQ~rN0Yp=k>DqVg8_Mnp^3(Yv-|%G| z8S-C#QPK`;y0T|CPmXW;w(St*^yO-?GUDLAk^g1>$~Mk!lW_&3^Jm`&l!A z`0-0_KG(yE@KWf1Io5ui9~OzqaFFi)6fdTS%a`Nih5i%#RbEPZ?vU@`roI!pL{L3O zfs7O`?zldfU2&v=hN?Oip59537129!NKHS)Ft3{yqN_Alx@O29u`boS1=C9dMFIj3hu+NKb|>~{Vfvde z+AH%{@=8ZIli{|pQSX^Qo(8WLK1S@%wW8dx`km`JO^YT2W}BKWwv(o@$oePsiJmr8oN_m2Y`yJvAgckD6gZPjqlj@ec?d#+d8XKZYb|3B}5EHZGU`sH(g+ zjLF$N4A@;cjJDNacyg%$dhZUts#jjy6m`(f+KdDc|oW{%;N!uJZ4_;R*#FniOvx zd|NZMa=HP=%3BfrWq?p$NQl1No6Q`56L|Y~x#rfu1Q%J;hP6y5BB*}i?5ni4$iS&j z&qj{lQR)X7{Oo|{#WXh1-l+IiAg-%V&F?DQ>d2n=e}0BIRzEFcxryy; z2;6ch;PaYa89MP+!>83wmx9wN7&`!vA-(@%|Je~O;|E?!|BdW7pFg7&lhXD5T^?-r zOsO~v%Y5msyQ!grqY9Me{BbjsZ?r4ajwqI{HGgSFy*ag0De&VK(RLPLbTm+dy4T~C z=)RuW(W$g%_c6X}|8OHOCXslU?V(dHwp){NZ*D!GU=k!^*Oy>lPy;7ZebiDtmdi2l zQ+qxD6KyTw^9os6c}wXWedm^d<~w|?8}X+2-eVelD&YPNVc@E^<62Sf(bnSRNxi2% zv+wb6V#`IRFC!3{<;6U;`1Q%6YvVF%>e@5{Gc`Mk#~zf!KBGjcOP@SW2_!v!N$|{8 zH$T}gkeZ6p8AP3HTgdn;k1;0?b7f=QefO_;kX{nzn|F)4RNA+bP@zG|?}_%SX+Ajc zaR1UjNfA)~P^JRVLeYMHed{4UTbcm8)mtm^I4CqRnAU#qgFMk5M|SNWS4TIG==@Gd zmD`@9i_@2{_ZT8W0m>f`;o%Qs=}aie%9|MyT@6iMW1kYmK*7G0Gk$#gs|+YLi5Az^ zAkwGhHGp2VWxbISSuDnz?Vy{WB1;dPOYl{PX0@Bo-cU$V!3w|Duu37L<=_afuGR%? z@JC``(p;B5HMZaGSbvOMe95VAMZHGV;JW{kZzn3*d3(_id$dYLGR66__Kd0!hAV&N z5@hzSa{@$@U3j3jb$K*>Zt5+b*CXyLEMt*C9=L+qdC(gGbU#3aTm1(YAWP?gl8l>7{?JEmLw-7JDAMS<}0r zpVn?6-^gl&Lwh%?hGx#9Ua92aPZl%Y617U?2oX%Ddes;1AwtNTu%aS=Esw-dh+D@} zlt_Q&K=GY5txS9#2cX7bZe%g>9_AC_F|6RxFq2m7P~zv&jEZklqX6#AF4o^OS6h-x zcr3i&oa6{3tHn?;>gJ|G8B-1K?^XJcNRDq=oSId7$^rVMJ$uw&zkc=9(F$A0>ICbw zRRH}Y)KXks)mozG=RuUg$i}l^byY6?3v3(PVkefg{0FVlCHm@NY{2JtmzKJ4(2;;L z+=I7UpxG9uPqf`uO*haY3Do7e*!w3Q154L{3je~@<_Q^7$ zC%$Qs>m7k*xgtj`Zr9PETln(7IwYj@X zY_~#NHdgkIHw<|P_h1po8j6a2BTkLQnV(~PduS=up^}p%FTJt-zuzaMYRh2uA`}_` zc+69KE+{WGP-|c}Mf*2-o_6|b9;D>eVSe*9KcUTupz(>|-@*o(MlN^QB@SOV&L%Tf zhkyTCPtpL-6AYn3VJ8D+p^u_S)+@y5UTwCu_YmUQ0P<-%Pbb`8?FZy>5yU+r#)_p; z@kJ&MT<`&77RE<)&|O6+djjn4SpJ(fs3AZ-czBi;Bjhs9iZUsCHsainM@@=;sjP6z zB!iz0LL2{FChV_y=|<-9NIF0MoZ=%%`-Mm9zUM;K-^fs|UU&X(Xoq}9i;QmLp96CA zI@)fvq5`(VK7oE`sHtHl$J^6uyS=4qpTx3d{|G}t0v$x_4DzLShYXHL7oY`r&ppmz z>Dkr(6akT8<~>~&XgcH)<<~ogC(+qNzya#`Hu^&UKA^m8kbLX8)Tucg8)u@#n_vrp zmZ7NPTgOUbY6z*Fpk_$&RO`FM#x*Oar4q4wU-g6rhV8-eRa#YTQf1KRIn0$tjf5*V zq(p=WI+F4G7*TyJm4g?mJ|pdV1B8w2MO+OzISI*sx0;20e>W>+49w4rK@h4nj+f>BEMSv}G)Gkb?f+8&P z>x&vAf5z&`0y`m_$AS3O;3My|5S=hKX14HC>cA(#lSD_LHogpyK{c|ag(t@V`=7r|}KrWels=F&d%jCOTw!p-fp(4YCbR|wI;S819e4CPz z!Xu>rA1F2nh^}Fvr+@NOVq^qB4vGc}j!v2kJ>Co-A%uS1@%9AZuEwEfzJE5{hdx;=>Oqy9${*v z*vdY~Rayhce+XSIdZilbDT`lB-P1MYh4d^@n0?|w^{Mag{D&r_wkW{d#L3LrfNy7{ zI|SnV2cK^A>~~t_$+`qMc?`52>YE(0ab{b{GCm1oi zcMGvSYGTVoqd=f`_z$SSI6N`vqu&@Tga z19V_+aVdn&e`>WEZuXcDg~x1+%{A8q?p8+$Jm8Y8l~Rj6JgG=x=9PWo%U7S$GJ{2a z-mvDTjaQ0dgj^q3iW`Lm#p-mH@I8}%U}jJ_--&JB@OLiOLmm46N-0VzxmN7>iZjuV zbulJ*JR=K@>_wi@c&aqh>9D zYj6Kny;0lXa~rdv=N97eC>Vc*9|l|0Hyp);{u&x;PESoGo@cq$C@`u7i|QOt(>`vv z-E;N2CNblG`Et5M75K-gDC|olGp)c7p^HsAA67l2vypl`(xD~BmuqH<>1a_9LpyscR8g2tQ3(nS zIL?aV7wK0j;rV_y!LOJkWwZSoE?#*acTGf|ron4O?qc=cxH5TuLfn{9$>bDT61!cV@Cv=|CU;7d6p^I33o4qF@sw}ccV0s>)0iC(#F~Yq0`zk*4 zXTZ1!r8(M&_G#|vQGg$~?Dw0uf+yPthGQ~+Er%fGKd+7yZQ zqpaoAm<-J{WO?`}gA_-$A0p?c^fC_5D$TxXom5Rp?YwtlDs~)25n6tE{*_3)*h)_# zRYt%3hhe}$zmk8k7@8j{j{UNqRMVuAw|_2n+wwzoLX0>F>urUroC2sL^z}(0WToov z7&ZPFLm)!CI$huE?po}dJQPiVno)C4ykhx<{|Px9tMvwuoq-oym~<$a5kFo&3o!jpk8EulK*X^fw0Wyu4?q_ z;hsmaslpM16!jzYcZLKZZ3YMhos#<9@+r^Fi6rhW)2-Qi_K9F zYx7@?YaSq84+WL@C@q=bcSk?|w)g4QGlAuOv6W=20Qw%b?sf&w9h^`2pU)xi7GK0d zZVDH9E=3N6pGsU?>V9@~2Yr>>nl zd+H*7GEw|*2%*O;(K*(G-6t-hhk@~b$u3OKF2QOMlJ=Ev$8BK3Bbt8E!2Apb!e(Ae=yWzLx!%w6Wsf2ZVb*^m$YA za9_s8jmtN3J)jS{isbleY_2!barcxuXn0{@AB(^(zx;C~$EKm;7Rr>^LIwr&bS`Aw zMF_XWMO(1>@MbEi4$Jv6rZpliS>FYLX~MuuJ|EXn+nv2DfRrs!!C}yp-&K0}tHm>{ z*}vj=>rjd7W?$C_O8{qr_jyeTk{bOJKhJJpaH`h(zgFGoiiW^%BCjmq+$q3D{#*2| ze5$rp->hKkUfyi0_YJ&CAIz zYFzTbk8Cag@x9f`%5R6~i-z?x;icEFzq5^h`l;&MLT9gN(R<{Au{pZ8vV@0}JIM80z2q6nE_Y4G($nmxXb0ONetba43T z>rZFrZ&;yw{>D>__rJfAen@)e)V9?Y-{p+0J1k*nrh1H+2BU1e4i&S@+02i=DmW$k zpw5V1|B1m?CUV`>VhZ!Ktq!Ir0NJE;zu?QSsa9EXCA`?aTUGKXn4U^sCt{NN?Ok=d z9@mE1f+A&;7>%gMpS*uCaioiT#{X-(B74FD)(n?@2wbuf+IFU-E$M$xN^}KnBJ%jd)7mjp zGB()6hM!3SHS1K3(2cljR9KF7)Pd@S4-go5{;{EffAe`6bH^~8h?Je1yY|Z!C^SJZ z{-g{OmpS9S*~W%Y@M4q7WQ+O;+ayE!(*RRkl*0^5^94x&I{^;Q*AV`72Flq}(}ZO` zP1my@kP8VoFQdWV5Q^6(OB&`Ve4H}ObpxxBva2~C5S^wUZMDJuT!e?7N9v(HpNX1d z(%oLPyim&1#e)f|Yq#^w)A3VvDnH2f>KrqsE{0gxbefhP=4$#5PCE*o(|}t9yK~*G z9U#E9K7@(C^dAG6DR3|UpR@RASVddrEkz9J%b^Ev0U!x~=umBcIJ8|Yn6!^)>Ttlq zp5f*ZOVxydQHw3*W_OZrCQ6@uD7sn!sO^8M8udcVVNTRoh%zJP9kKBNm-Iip=^eXA ziZYs9R-CH*?0XVxX!@&`Cg~U7R|RgNCniXh zRwiM^M0pVeD)sBmlPp*+wYuOtneoA;bR2Xh)B`+@fVh#KI&ngU@|Ki!7c;ik!a5(m z_~8oRQDvr4ZS^S!+TFZUBjh0Z(pctxd;&PAoeNh9MFOVx5KoSqhz@=bgbNl*_cL7i zR0$blkhZBcfB&DiseV6~AD>$okrhLB#e``Zo*|^}Oi!*=e$Kxd;(J2!O5g6|!~TjU zJdzHXFNHro;R0bfzSPYuqEmbq3gKq!de+Ktc-QHM!KA;&GeaxQ0RF9u1VFfNu?^b`!UrtWW2w%x1{Z)>hGbeX45f{-?0-HCO)h6y zP4=r;qD10SpA{lxX=y1WG1VXoiT-pXCvf%9tLF^V$->~YuPDpu@-AMgsl9TM7gS&c zhW|{E0FG{MCudb;7ytVtlYI+cL zG}|P|A}=f6N9hlA!Nu8G(&{1P<64=`;!m$|8dMPfuo$yuRpTKzv)c5pJKPg~lBECf zHq1JUIm{aL>0GDBTb-3yRA5vs1wYG>;(I4#`{W z2%$#WFN0aF4S9L_pk1$T0$;oeBWxDMG9I9kl-bslbpRw0E0Jy>LE2r6JHIBevjxA~ zTE(5KVyqNkpOc=eNAnHhi=rTfFL8l(5q8=8TRTU8{qF_pF}&b?dzimRTRc5xDImdl zFp4pTu9cx^8qpJ<@%euEKu?P=pVYB#=jRO#A0x)r znjiKXd0{_v1qdcgj{d0}%}?vJI|z>a61cXwD7}==b#u!4_c53A>bo_gHSco<=Mqiv zC$!YvWUG|3CyXTuT`c1I;We`!UD?$Z&4b4DE0)leDwG>#;MPUk6(zL#7Pi6{A9(!8 z>#9LHs67FJ&(0eJY_FLM{t7?JHWdW9tWrK+hdy~j`go%T$aUK++qN7#u7mjo)0m4F zwRptZvgq5c5GuWShEMME3h9#}dKC!JyIb1r;<^g1>R+Z#K`T>;)TZ^pIf>8g`79Zb<=N-+@~my1 z*fR>JN76ZVWoW6betW|`Q&HvFpKr2w+lhWLf;S5w{PXSue7p1Rp2#OxL&o|b_z0#k zsk!q)9%LS{lEnRw;o=uP6rw0%2O1b2dO$&C{tx7AB9dAO zVJADdVB{B|&3z3m%JlE;5fZViixOF1IDK zYeLj=lkkq6cxPpTX`kZ29tv@+JT#!@($JF&6)(d;dfx15!0r z^dxCE# z-nd?6OS2rgK|YT5lMWW0bFQkXMGom4g2)QTYV}ZOQ4*n$Y{t46ey8Z_X{?9mMxEUg z7Surim+2jG{QlX^t!p2a?nsHE!`1VQA>p>0)ZM9rp?#rRdxrvowD{v4Z>yt)YmG;Z zp;nJ;KlRcP0V@S3IP{(;x|x!)WiN}wK&D%j+!Nt_a#No%4_b;^<)McoPtfze=|YLUAJ+Yl|S=BI{+xG~v$+Tg#C% z=Ul(1az9&L$mir9u{Ve8ev(y4Kxj#V1Um$0(*8;cg24K%e0!>qDpf{>vPfhpnGX;q z)Eh~w;`cAfd_-`<-JqiS8AEzdPj2m3l9s_O{aMu$I1OHSa_0DSKQO(wusna zs4r1j!CpBawQ|zGZ|Ur%_Ec&?s@Yps1yJ&-iFs|brd0YKVdG_c4OEpi8b<5JGcUXM6>Sv{eT2L>th zpg{XmrB|?Goo>C#Z}aGo{HV?soK}*Y%Xyp%|N0;7>85sC0&If}N%8HhVx3sH&zeIB zE`iTqBHsM_cWbvLpeP*<@8Wow-&$fWb2(}9ho!cG`n)FUhZEAd4>po7@(2X2&;T}s z12IxWj3p^g+@2nvArsbCEgQ-5wx#%sB8SqDs_+^@${MlIJ|;NQFQ&w>TwfSAEtq%X z%4@ft&;6p_33T05#tE=IKVt6G_^!r|1aQ86-6i^pNCHiU?B!*{mEMD6hTvvB$%O3y zIjU~3Q9S*OI69Y0D@?Ymm*Y&`1JyD`ZU0pP0C3VF!8z;g&X1(wsm1wty^X9&YclA>O@*ANg!vru0K@MiC&s@rV$M8ajBUlx5Fu z*%0@gHKz8@&xJm2(f2fDN+92r;g1*!z892>#tO-TQ2_s>WTY~tku9a2S&52STVwUr z34?7~{&=me6H^M)ErgYnK9!zO9;+FqC$I%qELQ684}boe3|UTxwDG;l{+TFG3crJA zd7Z-^-#{FZ=}RDY)_|1Omua#&bB z2FW=z(zsbWtCi}q5nymP7fmT z>WavtomIY_;z-5C2u#{z0y-SsBO2JR)1m8Ca@XeZlQfHW{j4R?9)K<;nhSuA--eoX;B>(j{7pCl{6X%NH{D)*laoh1liDng^RA_Blu(YmkWQv3X6X`K_JiA5Th82V%rR4%oVvqN zO$Q5U>(8|#BIJb|`2_`*!QNP0UwbtK1a?^Gqkrpq^%M%&hQyQTqonXgA?cJPy=<7r z_$!KROYr`{J7`TL)Hs>{RZ#9hCD8{wG57mATU$jsZXodfBy2VN6E!f2I66~b7p-a)D^PC2t zeFLa=|Icd`b#-4IKgouD&QITGEzYRH27peX>w*Ch*p-s94EitHNDSrY|GAFT0MJ?X zPwx;Xr~5BOGU7to|9>APBekI8-@ehvP1S-E;Gg7FXXpPE7V(tp4Mcg@7gc}Vdl*tvP|;VH$r zhb$}E{VPYYHU>ts%wXsbDHx1vYimoKH9=cXPb)OEbLfL1$goUv0-uySB~2cKJi=zY zw!J-fO9Y7C-mFqi-K>Q08@gt0i$^ z+2$G;D(Qpl6B?LA#3Pq+HQ4i{!4mJ-%MHYXW%9~ByL1B4$oaS&GSqyT{Gn|rjQ%QU z7X4hD2LL>NQ z%R3%-%F^@^0(gTj)_>jDZua<@rUoqi1%Ph$l~|QMslfNq;DZdr60)pOG5ZM>% zMSxa*kD!n#y&7w=|AC%@U2bIK^d+?za37-fVlM5XY2!sL0(csZ z>KHs;+xSU3^YzBDJp9k4Bmfr`(~)&=*)ZJ2ulh`3=LwcKEpj)kSKk6CZ-SUIm!%LR zd>sw+xzn{UZW`Wi5uLFC#KJk@kQ9YJysVsX^>RC1)s;*Rptzdy|to!RUz zHzg)E8Njpcyd7ih&%xjXbiXS7Q%ZcYLwxIX=5O7(gjN&s@M@IGeT=yS$#>kfJo!3? zJl@n(>%o&XhB}RJ&GV5pcR#1WE`n%8+wailz6<>#0M$=3ikf@zxWu)y{Yjcp-xE_? zj8F-m??x|xq?knYI|C)-D9`=1)ks_!<=H}DHQ}4qC>uGqtZC=@&mXVb+u!Il1Tn1J zt6(`>NS-`O`VAhx>Zm)|P4iqwhw9lHG38yvFdro4muK>?gV5Rf^4q{_3SoD*Y})G6 z;)YkhI<#69T7B5oRdT8D)ZtlvLAi7HN@BXuwOw^5r}Uwaq9V%xyDuuwXMoyIL5gWZ z85`bAv^{<^4j8+inD&sqnE-N9d2i(=*G!OcJZ3d#f< zu2X*@+4Rqpp^sU-EY`j8-dT}i0#MqUeT&&GAmw?{ll<@BzfZWHDf96WX(h7TV(WaI zRD5H13SEyUxqOJb@y`?ixVL+jiv>Q>{prN?VM!O$a(fM8C2;qT>URpjX2|r#Q`;GN z{}Yg*DQf!!+>kgteR1V9nB=KuC%clD>?#?&K~IQVOpLX8u15tb-sMOo!z8-Z>=8P` z>P`oE2*Dpervh7fmQ#+7S!tSZ=@Hb;qeXUos&&mB`eS3GN4c4}oewx(KJUz?S*You zK%wKIHY&L?K;0K1eKqd7WihSC?$j^jsx8&G4kCIT0!ZyS`c&hGrd{kh&tBMh+r2OYOzytUZ}X+ z$Fu?gW}Do4Ki%K_GRozxC+WOjaWcLC0CC_3uvWoisZR+~kQ)j>xB3H>Z}MY<-5-O* zkjlD8N@|glFzws7^iJ>)A>5~mtPSCyu7y;=$?o=5w*Zi+Pr25w$12TRd z{l!_cpI%I@hhE_QM%OY3-xQvZMsboY(QRXzf03K}3HFJ}MG$?s$R!+hU0ge18zNrW zZR1Yv&D)leUmzZG7VZ@5q(H^*Qs6`uyH=PXo;3vFpCm8NCx8}SAjnT8-YKq2?a zF_jSLOXoEA;v;-mZ9 z(jaH!G{3+@Kp8m%n-uj~gls1>t?m9kiz!9R;N#hWq*b{Dn1_33D`ioU(D~d#V{`|e zfpihW23d*;iph0`@GaYuyI6nN6@rSh02fvOkX&CzxpwSr*#~oASWNfa?;{bmSZWAkd1Jg6mq&2yBC@_9WAFubsk7;8E+vH%`U*t*@^++6rqM&3F1@Zd&i%N}WN|CKok z8@o25#~h3sQ|5<%Zzw$KyC>Jxml(rA9jsy%{)3T&nG~*bbW~tGfnkCyeG>&t^~uB2 zzbt-}pdyvIP#|zTY52(u$g^Fr;f_dv=*^tCC;l|Z`a?|Vg=y!6C*1MC%q;RNwi7(NTmcAFwU`guz6MAADMJ$s-Fd5PDUbv za9uqPT|3L^$fM3`Wc%Y#3+blYnXyxlTiD-S5a3Pvv0KEA+0G|5zM;Ys*84k3hnpn& z)VIiZR%(*py<7XVAQ}y6S$<5&T{A@tcK~w<*jIsC@O6QovxYuq;wUmf%QRusQ+=%L z2T5C*XFYa}+-lZ)$M&DhpY(q!Xtx*GV%v3iJ4?DbWAw#`5f0~E)7#py_H7tEfgr&( z`k@wtc+~)(+KF$QQ$d2^Onw>wkib;fv)bIxL>%DSJnoPC`hUM;*)0iHT_gpMO8D_U z33~lzOZw$}5K-;(z4pe1i6PM!%&U?dB(%v|=ND&D565+}(xP$_bc9(&u6aL2;QV&? z3r2Xi{Eyre!i#`w5kLPVLdgaSFK>k7Xq#!cX`o-h*Z-s&S&TS0L#nLg8ga4~0?-hi z0E}MgHqA@nrNvOO*cge8?(Q1t z8`59$yoxS>36t8GCWH+Rrd_nV*GwlB)!ah+09m@-_UTF_n3XG;o&L2gE?lmiiyj$^ zu0OusyGKJ}Y{5--S1AiXzTD~t&oAT#?rEq#iaRtt@Py7SKfMGUCju~75|)K;@U4!` zIzU_wW&!|K=l?Ip{yHkEFYFt}2N+5k1f)Sy>5zsYR6tTu=>`GmmYh+LP!ItLk&;%r zo1vtoyF*H1=mDnQVorllah4oF+aUp~cC`@06cm}kM7g4@|Fjxvl21u& z3jUn@{5xrn!}>n4rHOUodi)hH9?|~?yMR@#&$fT}W!!dHX$>4+7y|$NKi56x3g;lv z{LfLZGy4B~KuagJ+#VzU_(JpRn_ocw`R)a5V2vN)A}wWUl`+u%+>~=0(Nj;nV7`+Q-EuH)LC3c|FrRyv63ebiM!n7USTgZTR zUqRToN~v)$#SK+7vKD1~0bFfv>fMD4PVYS(wfP4iG)tAEHIN0Aqw+rStBP30zlP_$ zj{CBAvpnFPkFIytqSRYFd%sE=OwL6N@auh7varx0N8Hpwi$+~d;{lBbAGEu>3j(DD zHG}#kJ@+>05~gQ1=X=ghKPyyE z=g8AISwccX?&`P+kM;2rnbmXTonZfY{o^dLHR~f8KZu}uu$B|YYc-LhnB&F$JkE(> zv}y4Vt0^ar%06u%hUZ6El{2h$e?B`np3|fFQCM@Prt2($iw#BF#*NBQKq}ZEd0=dV33Vid4n15Dqln&DBG+!}#4L|HZqp z-^B2=8CT!aBbOPKW`p2CDLEy!Sw z6+ET-9rgDGwVJ^Fr=w3$-H#Q7Gvvk**xXF|bBV~u2D+GrpTWB?uH`rh(81#)w+07E z1(+YMm?&^^U|j6d>usPA{+Q4%x`-ygIRxWkssK9_7{Ie=atjYfZX z?A+{y)RGBwg%+dP?H_)k1Z=gf+0KSa^;T(ww<=|NK7_q^kqkf7Id_}F`xXu)$Iq>4 zV~QF0QE5_EnJ#bLFh@hfL|HPAPkb0TKeBy0zaYPJ&It?>vIt=;&kUBM-L$RrJ+WxK zO8huBweX?*(m$VC}b=!{6GIWP+@KkAx zkuWV{O1vgEPS>iynUoMncR)+>{ml=FvMdKJ9Xhu6z*G<%InLh)0--7!?_|jFu~T`> zA0h9!kt>9{4R-`O{-6NKt}_x1nX#ZCp?hG82;Y zI0a!O-80Uyl^Y4oi@{~dAF*`g^t9}iJ^dDco(q2ltA?sg7J z+wEBM9*y^#AKA8YC>8X6V+nOE*kJi&{!ZL7+KEH4fX|AqL;NECQ!E71$zQ7ey z%0Nv0IEVMP^pk@%sY(D$@u^zgT^w^=Hj3HEA{mspU6G>91%A3N|Ic4Ico+!44j10< z{JHwaHmWmV<)h&Jr>-Az%zxs8BI2@dX&;8MKN~(L_yihTEqgp(Zo$6z%3Okgf+NJ! zoRmpO8*UQQH)6Wt!7_&2P!Pt5ExX9tXv%bM`URd((B1RQt)`5R?z7l@^1_GY=g*)0 zz)T79hX5ImpCXAt9pzrQo>OkdmQOZ6vH_W9BHIYaW?LzT0QrQfy|w&E&)h=zN}+Rw zBdjOw&uyL_jqjys;#xmn>%l*C)-nOzGcND*smck)#>YPuM+=}sj)~J+blzMx6;=73 zc;AU5n)UWIXI-FVBmG&fFv}VU_Bm>1x40mhQ zjMn#K3PHM+x%F{)xBdO5*c`Od!Ij^qeO8>V2LcH}yv1MYUEOKv#Z1;6&alyeKmlw49Ggr^u(qF1w7W5t9M5-i z;H8-IHLu)>gWxS5sZM+eIk>iGE41)!X{F%z84u9V7SL&fiNqqf<@oO3S}r?`#-~oY z6FySt|4=@u($9+5ho4hkneNlkYZYRr&ED=AOR}H5u;c>exA`&ZufDh*OXk6DdSwij zDP|?Oiiq_`sGg290Rb+03I2-3Wek*#;(+sV;#a!Q@Ouv^po4hFbe{>XSpZkIRYZ2? zOHUguFc9jCQ2{I3lK#oNS1`L~v;o;?_F!{{u0GY^Xz0z}c z?~PYJeS=}PzG$@;VCA4wzI0tL|I)5e9TwljB3(jQDL1w}@nI=LQuX`$-kJCPp6`4d zMh<7@rdory^wD_*oHkP$MNS zPDAIDn!COG^f@!7H6WQT1>wE1tCM~1g@5~Q<|h?>Gh#-iCrXFk_)Pu52Nn->{D2Bl zj`){sdU=Zt8BEEfCCi;s6f1!NHjdwr*uBqjq6KoCTjmAfKRG_P)O)V0RonGZN&(L6 zAyXk&fltjGd(XXI7pWEceo&l?YvI~95e9(L<=5{s7i_AGshQZql~zNex}&JNM1HMp zx+$D=5+hWz71@8YWdcH)ZDJ%46#D$di}fLWNbd*K5fLaN!ScV|Y-7_d?GY#i5<)3) zANqLXXI;5lOv%jMyi-RZ=oKqpI`+<4XVk7m2=TL*6+K!dMqbk|D@|FMOTtw+^m2H= zxDbGU?Gku~YV`JbPa4H4gJv7}yLpvNvi3Vmeijg##$6j<>XMpTktaoSo0KXNs~_8JYfyH|?^4Iit2sLMWR|1T^EAdMCf@l7vj53FT%k88;vTWRN63{^+5)=Y8a(eoz3thU z0Sa&geJ1|f6!AUm_vPaE$!Do_Ye(djQ=+lepA{f;df7r~VsedHdG+Ja-Zz*4pERmo zLqi`HV8fjB3n1d8x-AuPbR3>*9~OSn_M%~k&D!c<^-9EcB#3*+JsL=4688uXv-26S z*ZX0Qrp`0e4cfx@G@bZmWHvEgS$cYU(Q@Dd!)DEuw@yKSHtdhWK|j8GR2#2*&e_xe z#p80OoyLu=;%83mPITwldmcXOoSKedPa-X3m##Ux*Nwq{0lJAK2y;DrBGh^OHAb__8R$18Bfx<3P)=3};Q1*kINH^RObr8 z%3ywz0Rw8WZnHUq(vY|SehG1g`a)@{&595!@1KeWzX9ep{CF$LwwIug`QOo+nW8UU zlt17nThH-}o)N*A^+R_8RO>U48y}vCusABCW^88aojR@rmP~70 z+6g#*K47-!#-z9CIC(gOK?hg0w@0xabfC4d&ig#C9K`ntb3R-D;B6WmN^dpA2GeC@ zKzw>%-+daf*o|(&m#utX(!K!(Ia7itT4N!g+PVNPE^$2hs5UFG^?v&kxlr;Jkg0qL z4PdO17d~Xfvo6#B5(y;Z$Tnnaoqk4fPmxZZ?M9C4bgD5U63os;9w=a47Ym_^)TW0q z^Fr&+%U%kyN)wad(b6RzV~#A0apy$lAy4sa`(Ea)yt%z@lTeu+Y+Y9w0}`;qXgu7< z%U_${$?D}dt6!7S=}en?$m-^#8lt#Jq9RZUY#*mUaj`LBv-&r#o0*>gFR;v=heEe( z;F^)VTzDyk3{I05yL>Qd3o2dPj0}<9&695uueh6Qm^JJq#EFit9`l=p#(c)wyn&g4 zfm9PT>pb*{bu^~GV=6E3f&ZM(Zh?AxamToc?q2@@%W~ph-fDz|InwmKq8wEz6UgJZkfZ} zpzomgrx5jocbby-+K;8D`8MxGOC|j#)-USVgV7vgUzGuojRAME2nd5D@0B-ewhh2C z)bR*H*8`9qmg;z@Nk`?|m0g<9E2z$sQxihZQq_0hgW}SkYIdP)3+ao;lb!0j2S=)Z z=bpO?UgLin<*lu&&25-{r)Mbh>{+jbRyZwQnshM3rR(Zjrk$j@3aAO{HVI=0-VCtVZYv?~6q{qQeGByl6)CC=4~C^;|d)r579aroEZom$IA;51lJ z&?}nNkTx<4rM77D_>Mnx{NIc62znQYdV2b}xbCsv9D7FWb5@+(TKQIYvNZ4I)IY9E>ZPzMK&=0>k8pgU5~H;) zz970IEY#%4ga>2sXngDMhs{r0}4x_peRenRkV&8(j_SqUF?{T$W{e=ub zrQxc0*2sq7rxvR)bx6ND7u5KaFwAGKVyzwV%Lw-)Nb39hL~ZJalQRol>YRoKdSZ zco-wV8NEd6s>w;(4)$!#S%k{d)2f!rtW|&@b7rcf|W&8vbgJ_|zgodGgQS`S6%{^Bdko$i_ zEBp>Cym<_<%^|y8-!!Kbn7!)e7%bIa@Ozd?rwjt!NfQo2GW&qN~CkE7JTl6rQX;Az%&OnSSF z05|=>okli-s@JKn7m-CQN&w9zP8pOrH1#%4dZdB>~t&e2{d7sNM?O-pYr4%Q8!e9aOmB5e$uZjzBM_ zDWesBrVc-~!=v;WbX+-KCMe_BU9PEqRq?|t zXji#N)G{_p0GF_CHD}#VjNQ~;Qp9DW+S>1*LNhkn-wom~SNCu?h2-QYOK$Sbf2m=B zJy5`5zdA6D-GP;_!2?5$KDLxxSX^l4v~I|k>fkrOgW|9O&uOiNp>AT7bH6TMd<+A9 zCc!qKw`TQOkChl#?VV{qkK9l>EKzc(I0}}gd4wK5adx2IWk*l0Bfi4s4iPb@W{7Nf zp1P&E%FJF+BunzucwU=2KcXE|+C@&2;l-@Mk&VnD-+hkVR)Y-| z*^W6o;Fyz>yBe5gOJda;Pul0?zAgkil4yle(awY+^kEDK%paD(O_o}b{1V)G`c)6$`nEoSk>YY{3`B#io#LeRunlP^xDwRgbQPk@|Yya2K;?*9)`N z6WfSS7GYfAu!bairlYnKBKOc^8_?0u_V4N_-E5+=N_(fI6sCVh%mYRIFW*4!#CwrmsGUTmv)<;W0 zaxODM+LRqWJ0r;r_PDQfh`E`ao9Td0n_*;_F%&@pT-nJY;G;2=PU8X#kIu!{mYyUnh?cmyKnCvA`3f zaQe8ovyX;XtK)s^=8_yeQrb(EPz)S*g|_T_2R&}UlYtQ>gU-oY{rU0tPKSn$wzlX6 zZ_H&d)qBS``zbdv!y%s>kAf>baKk%7NN!I1+GDLh589QmW@zXA?CZ-b4?JICoLk-d zOlpm0j>er_XCbn4wm&5^?gjV%B)rVJb?ncl66*Jebj_or!C0O|`#Kr!-D__NZA-2g z>93v_9Xof8-dbno?pJbCq@a{3%!p-=Nu>Gl=%D@*i8!1AHSP4WG#++FT~~HfbZE7c zc$BUTCtk`CTSUL5z|Sx;?n!p&cr3tuLSis^eYLRn==m24`y_%5PE1N1fs?DN{muCv zro1NI7e$C)k)`|A>a?f~TG%0KGIh+){4UqUBs%HKs_p55yQ1KLopD!net%q?Qdj>Uwfr-@SRE<)h3#oMfLlZ7xF-Upfo# z`)|KDWV%CWt(OtydqEjTnX?zo_cDRX-*?99i84Vv;T2yTqSHIw9gg$6vr|(wEG<_Y z;U{7j{2K5biAddE3Ga&uObQv=ZjM#5^Xn`4qx=@ER)(oC72JnVCgceB=4#byBXShO zv0I=rn+!@B=`GyRo+FZ{?R~q#`JI3qJc2Lyd$0oSd`|Y3`l~DC(teJd?pypuh#SqP z$k5j61GV~iHplO1!)9Wj?%mjLdOXe{qPg|Y@(1UmnF>buLT2@`y}iB4xD-I9T@9w< zhtkG$2ujSe;sRz}2G(ZnrzY%AUZepuXl=qd+>L90$I@O|ykB*G%BF~}s1XVvh~cm# zxT6NE@R9pse5tu_1_64rcWQK#x6wPBD$%kg2(r(2$+$O@AJ3@%4;4! z8GHZM=+c@-3jq3d4AOnc<}Q?hbd(RqVq?Jr=8a?f3}FJ;V%oeu={z~rjkWTDFP#i zsipmo%pa$!?tHd4<8Vu{s>TN)(IV3l+UM2*=q%hSzxiIYZ@Pb zE4Ut2tfel_6PBT8o|y$J-KkpwZm4*?YZ0@y8b_de+qd}nRo8~m^aJ$9px2#eIgI?u zWRGE7gjrs}!n&}3RJIqT-*+eE@b|^@u*Q@MkJs-~WZCX6J`w(0j61|#McegZ@!!5J zvCyzqAtoWuTJi0K?L#%sK&)CkW-}*mGP=6dKtTC=RLJQ1u6`mK@0>hrz+tO_;YTul zT}%p&%+XiLcIuh9oVb?34n=jT0`-$IGKGK#6rTRU?!^D-=+s5+xbuKt!2RO$ECcWM zLe#864540d->ZR?k(Y4No@ONuPU2+(gEspS+w)9i2=$I?qZk+~krb5d{w>b_qs>JzICw@G-ybYSGUx$A7ldlawzGE>IzW(_Y z{=u~qon22e57uy4ce&*~Rr?gown$>)u3y=5DGM5Q zB`EU;DjM2+CRKr!dA4X4t(L1OJjXPPjBWH;N2@K^UdW!?^-tV#ijxt5Q_Ru-L0zD_ za)0Lebq!{v*Ca$S5F?(~~+k^4@I~^}4sw+{5Xr5cZ9}z0!Ej%R3jl zd=!vR>SKV#;|C4+9PQm*#&T!+w9%YQ+=vdoif`GkYaY=kfx@P>x6$pb8^q}2Wa8}I zA&)IynAU^|?z>v^{*QlxG42s}e&uPQS@xs*`=UQfN~msrZ%KLtozMK#xXE-G8&rj5 zVguaEg6wsm`(@1F;yb2aMqBq$9L=`b0-Srw_mm_FSy z3j6ockGB%{ywL&Gi{4LtpU1cP^&EchnznmCjB`Jr!r{PVI_2m#MHMK{N9Mz0=|mZq z+}dD`=l@-4ggw8aCnz$)uMB9FTh#XM?Ahps8Ag#725=(lRLJm zblJ^&KxTBifN`iGSxe<@P1<8={CtQ1|Hft?s!WfX-}AtZKP`2=X}aU0ERY@Q{{UoI z_{Q1U5^BKmo83#%WroK+&hvVUzuKbZsm>6lAY@I(OaM1xm~uc8Si?8i+r%b)2o7~Bvu%cwrPK_VO(`S$Vc zAA2y>VPD#Kf^F%Qu;2&$tO0is@Q?!5;Lbnl_jl2JFIk=XUPlw!dt*ut-I?MZujp=l zDnA)Oz?T0Gf{Hqxv|1lxO3rv|{LjNxR3<;phL1We}o> z0lnbT OdY+bh%Y>Uc+uYz+5>e7T(EkX6}ai`ZzVfoIS8_Zqw#1_Qr8@^4ROddQ3!Kk6xc^kn$+_;*XW-j|r{&q-+MgEwZ^Ir+WGt~NTd^l)q2*@n(gr3uX3VaX zGSF;EyiZCcrmYqj`P2YPknd}jn25YIFFGa}NNC>Y90lrhGA119M6DzaaIMRES+DyJnH|q5b#*PhUtx-aI|<{FO+6MKk2}e|8i|2hLnt< za3#<{707P1nFdzxAJa{v?&B2Q2yR>aR!1INOd65!Si$YE+U3R1ceuAs(HHaFwk-dr z_biXMVh13H*S3I^7O?mN)^57+g3I-qGc54v{9V8$A$)NN5`6>Rehz5J(0g*gfG%D( zp?eAWH)9pXZHXqyXsDJy zH0x_9y_;3gGyGxP5JY%X?H@G*uhlSUtDgsrb?bTEsM4}eCTb?C^P5d_b4&JDNsmOO zS>X(5kww_%^~8eZ#puo13Lc8;jbu)h^p#8Gr z035c!d{n%7&Z8|eOol^zxgdb8p9+bA?s`&)Rh)TUc^i;|coJd%CbePZ=Cd`AUNH4t zHs-FmD2>wnTi5}l$^cv^ELVb@t;7}MmA@}6%67L%znyc?t07WIB@FaI=*1--rpMe@+7XbXkh#ZOgt483yuz{<=o`(U`S)(_WGDA$F!n0^Ch-JBWU zpoLdndS7LQExexlvdPz1P&4`2`Xq2S3l6XO>mp0m{0W-grcN`ViDZYZe*?4nQmG{V zo5gf`1f9DFG3P|>dja>?FIzpXx55rtW|O{?@iqEAmXjJ;rrXenvw8CNL$4TrAlsKl zsi6_|i!Hc795zV-!zdFu&MAx?Ef|LsPT~StF!=owbs{(~Y1DE$r}k|BIAK%sT4S$R zlI!`7oYbc?dD-#JjtWw~CO0O2dp?7>IsN*G7 zhME)aK3cNx~U4_$fqe4=}DjHD}Sc zv_3}2a|-c72cKM75n1+o)#yKYH#(wy9ax+dCXd;_OQd}(B=#u8>P|ES8L@@syR3lH zwxE5_W)n1FdP{WGQykdM&05=PVUZs!dtB5qCXC{;!TPzAGS*MD|E-=jwZuZPmQ6lA zuKv2t>?It?-@jd?qy8oUNzf`i(S6jY^<6zLUtFgJ^y4jd*e(T!eXYexz%l5(e%rIw zjM$=k|8`?GI!+jl%g2qoGJeY?61>Y-7wNnw3x<^xewu)wEN0e6`Z+T@ak0ZJhA(ld zad>m>#pag2SW?${W}>y+GySy!!mWwFmLLnBcY0byzXWZXXFH!+P^Yem@hsXA72+v> z#OP*X?abvV#KX5b6av}P?-JP<+WyM_96AkA*H&brcuxOjkAx*9lPFf(Nt)+tGtbLi zZdP&G-U7p^LnXFnrrT8C3|Jlv1gID=Ucqp$?w9#rxolwb!|ap{UwlWfeu54`N|+-fbQ zVrdj&jv8CGn(eMo@MGpC+VAoj>f`$J>b9ximCoRVD*`bXzD%$(lLM4+Tfa1TqvK%v zwSlPRD;|w_rzoMHcv8J06>nS&xaaAboull?cJbR+Fq?78x#jHfJ%qq<6&I1HV-v|E z@(4UGI&E557B&s+%y%DU+@3nq*dt0P{EQO&Q3-Td$g_Ccm4u}+Le-cq#Kj|;iKiJ4 zm%QJ}k(6@XUD(6O=qj}l8?a}-z-~trV_iEIc|#C8`#^_hEAwJS>n>oc%0^=$%3TmP zRwY9hQ1V|?-BH#x;MetLV}_2NRgxc*s7k#y{R>&xvNe<%bSnD9x5mM}G{$OUl0_UJ z;bd-lgaGPq6;?^j66nSdR9aw+}m9eBJEEH>Ln4fCRahmy5PT$4Vmy{P71U%!A z^h$rn!2J}rP^>!j8Ejj)h0U`Nx$M!A;yww4WUtpwXP3yewBu51%)&{ z^iYkt>rr%389?~(Qz|xSOtAB{AxNmpmRCV3I{l~iYYf(1+$~S=&6?vYwimPn(m*KlRl1{5HZx$Hw%*T~b%$!%0PqjE)<+sbV;n z&PLsFZ;Hqul#iV#y`_lDfZIc6_U>8*Y=iQkQ+HBwc!e)3qy5AG6%TP@XM)d$V6?FBJtc=nmIKk5 z3R(Z7QJxm{RcKOlOaG6ittS44(wR@?KkfW>H(fFaP``hPskQi~{PH=ZaKjngBgn5{ z{c%dU4_>=j^hlyoI*CA!AIz)UIs%&dUO{WC;^!j?OU?kuS-l znZlj9+WEaP$`9YV_MtIm{q?2m{Pn!YOF;L(E&kjz=W`ZJ@%GBg>sC?4hv+E|? z%GJI~J<#KL!L3C`t60&+4_}e=w|;qU>@!;4DJw4*sqda%#RFJLqlYuHZ}xtB!l_DN zPIwzz*d68zLunf{I~9VEKSn|h<>F~SWAWWaKdCFB&_^R*#^rgv|6vI&`uP@at`8e zz07dy;{_}ZP+2IhyP24iA*TAYjoDWBa8KkzZW8x8Yw2Cg(wUFO1|qp<)uV*$FCy^Q z&tMhyH2eMi{TCI{>7UxZTt7aYz2f`y;6sb4t-p0Dyn>-P6N}YMg;=aY?Q@9&pP$* zow92z_sM)gL!-e`Qc{{QLwzNB-N~zM8TbH@ng!YuOYr7&n(EJYQ21Q&4qsTvsFb9ZvlMZ-^s8rlyH{SiXT)Kuad<&GRz^vbLAczJ5&`@8IBRHm%@yAFpzx?cW^S`3PX5 z6G5V`0J@1^EHvgPh|&5-SxP(dYw0~c3h!`AX79WgcHb?IT#q7_&X5pA9~Kqwz;)r( zHpeN70H4LDVMAe2T2QO~gUbLM`NTSacT$Z&a=>fT3>GWb$&-yPs<^gW09ptTWJ%bTMo^ zxQGaIEfLK;54hpds%-jkJmb-7Xhnb5`h`mItw8+M(zKC}F9d^{9F>qV+RFg4+RMcD zE55a%U=?ZHMAcj^`87Rzv&E(JnIs!F3xH~Wz2J&>$PTbl40~4P(|4UJk7IS;t8?GP zoaOohrDIQxGDFJ@!-COKlSoJh7z7}Np^N;ESwVk)v?5o6Gk|xH#gGSUPT=SJxBd%*n;<9=V=x+QdBG?Ip%Y`3g1ZMkqS$ryMWret<=5hu*geh^GWyrgG{ zdiBc?)i&cM_9m3#*mgQOB{lDdt-M2rB8<6spa`2T(SMk5C!cowdhut5c%VNN5omX@ z9X4Cgg$Pgx+!u7bXtJ`fYOr*ls~)`{x-js2ND}YJePP;V8Eo}<=O%g!`%KkFc z_w7l)y(27SNo#v%gzeiaM@Pp^B#M+MytcO1z}#F%><;=|m*HAB?>$xjfe$A6QD1bn zYp92&d4esWZd@Gu6Yb_Kq#}vT1L>gtfy!U2%c#jES}d!3)$}UjhPxOW)s2MY41owa z9n6fzL@a@Kt?I>RrGf;UIX~c@(BQs(h^Ax{IeHLl+Vg?t03Z5#ru}D{6|d9y1E4 zP3CD+8nR>DE61&$W2l7icF}G|&z~C@7y$XCXTpYxGQ4kz=dDhL-?Ib4Y=taa(=^xv zBY=W7e0mxEz!vGzB*W&q+zt(x%zY93=U!5;c$n+J-#;!I@xox^(Df!qYmJVI`XB!YMe{1ZlQy4TMzRHdV) zBoY1gv*r5X6Xg~y{ey$Kbr0mk+DA{k?m0~4Yso5^WP}7U1>?6|udZTK5V+%@qxOBq zjL^&Z6x8GZFo3Gp%k|Um17irF5~__?OMB?8IQk3;XIAQiAl%Gh%i0(8m(;v27LoR{ zzieh2HqfA(_3ycLH}U&}iA5aE6!>qd{yte8d{*c92(&gMemMpC3gd6V0)-)Gy-&qo zrC}_KGVbHvMl)^OEN_1Kp>SpE&+ga3xEu&lv}nl0-De(p%z_C`poE_KylHlCp}72R zi0j@$aTrjk6hQ8~hlJi+ZCn!qkjd^s-ESb{dRHb23JM{KY9TlnaPB^2xyIm>^}f@uSdM%NHXvk;@<5hB># z&Pl(;A3{nWfS$XwH1H=EXv~{NW^GlTN#1#K!2u`*F#S30d*Wkh5)MyhjbQ-!-x6XE zT;+h=jK?>pv`~>NF3AGibesuogfwq(Mim+T%9L;wnTR7`+-$P8$5MC20R%#&w7lw6_Lq>^-~>76VUr zkf4~HhDv`jeJq+i3w^DG_En24h|A7j4f%6jKATmp{bh&6$lUE4ZXkQL#%fK0cAqM$ z4+&Yb*&k3<2E6Zq6paY2Hp6`$M^Z8DwSD?o<@nyf;c1`oKs3I~J z69mS;_>C%qEWLv!_NcT95~!?yG=TDep;uCP2qtvWkpFeOeIoJVeL8>R z6Q96XEqILF(tm^@&H_2TQwqKWHinLBhamwWp@Vc{5X&}5la`z)@N8?g|J5oo={IA6e z&ujb(+_vuAl6oL*yVWBKu>Y4R;%Nf0F!Y;3ov&&DYfLZn8j;(fCMTMwf#g@SO6|{- z5v(c9T5342Xg-b?w%NJN^v#&EX+n{g>7qjq`$Drwl+;~nc(3^M$rP{u64P3v=MqO1 zUwFzUwlWPTOp)b~0uiSwUS7G)mq?H?WPH|>OGZ>QW1FG!l%rFL8W<#u4t5qobMmZ4 z|0bV~tGW|x3X*VZ0aLG44~c9hWh%^H4)8HwK9D>-|Kb0`jqE)8k$iXWd63KyUdhRop;IYcPj4#>PC97>BdXF7~pQ_n+?K}cW$9NqL-F5<;`G&*_P1eV9sYxp)N<3b_9S}7jivh zMYJ~Wn7uVDIcmSu=(Q*OMa_nQG4AuPJ)I8V_7}c4QMdNo@$N$xFexkO9ZqzVInE|f ztzyRl2f#euPoB^&=K=*uR_epVA>+dhRSP?eKkJQJ>*e<9 z7K=yw`%%QNfj-OV~jf{#4r2wSX3w%7M z9FYH`ibj_t^`3*2jA%S!>*0U$;BSbKJ|3VtK9X+)M8TmTqh_I>#O#fF*u z!$I`7-rEXzVh$SyPV7F}qRK7MuP$8|i8-Kkr>uJcf&C+%$32pw^M9$_P}s1V??HV^ zKZ&fU)Su($06J=Thf_@DP51OeGj->a7ITqH>8LrzT4%~jt{#fnEJ3K>x-m#%Bv6N! zBm93rXK@lh0d;t7!X(;$^~@B_q)Oa}(z%R{Uigc-uC^MSVGFB%>}dPM>E?|nH{VDK zGQ-(QGQUt*3&Q{IYOOzM>F>JoVeiSP&3QIXA+lkWr22?An7`+GiwVMb zL}MuxA0Dd)`TC1#jtPyI%N8R^-NN$vaEjf(7!3HF3J|FZ(K>7eKj=v>g_GG?p$`f# zN}JJl!mv9Z-2yaBxi!0ardaPX*ESI2TenDhEyir;q$l1O82pE&lj9?9i}o6I*=MJE zw4l#7O z^B-HyFPs2-LpSLI5>IM?aF9;|0WVoM1>!=qM!i)+n15fuU~HbmJ(|rlQ>i4D)#ew< zvRjsBmw17{pxPRWpP=K?)ftr4=xZS+v##Lpjfxk!E<&Q+qbu!(@{;DDUA@e%q>qhf z;lW#M{Hw1QJ=WfmPE)@taDdck2O3KhgRQ?pb+SX19l-(l7*6B=@uw9Q)bR7G6A~5O zNzzyTURW4eT`loRZaeMIe#)%Xb-XLCi)a&uDN7~{T7ZUY;6vxombv^=BRxs- z?}_t1T)b;x2Xe>s9ZtkDp>JASgjb1cK7hDnn|iP(jQ5sJO4zQ*nV^q`?CB26_PZnT7W0 zR#Ydk(A6fvDH<2xGdSdlIg=S27MGK4laKECYR9Fz3riVms#(61APdQYCWY)mwv8|4 z4sNh=-rE}DvBqhKMwy))D}m1}F+FN#m)Gwp9_M)XUMY_%0R8$8txgB$FF@A79SND8 zdwp!Y2(zk!Q9tlEqUM1wCl_R*wY3*;&PveF?~RRV+9FL6fJ5usfA9Lr*AXh59q&5u z2k$jJ(Fd$e&quSCE8tF-u9cpzcNFl+8f%(yH>)(p9kgWo9L5F@A53Fz2*^HE8c=1Q zT-%-OAO=V5Ux!f!2pcaTf&pxM?U;?pVtReAfjGa5v0jm6sr8CcLQq?5!0<`rP}Jf+ z&z&>1!kmjg)NH!{X{gDY-TE_|p0Z-(;e@<>FsXZ1NE(v4#oIjz$v1d0tI$&o2}fIz zW^Ik#m~rF)9!w2Y`;+OB3Gl$}8Q>MK8YsVJ#T<0VF?3A{TaXhXjxd{lq6w{zAPIci1ncJ(mdyZ2An>KUNCr=)UQpzAt6 zCrkDsTf){)>rP9g&%3T9}ey`&GeURxgro?tFB- z6=lWz+cAD^i#IR>b$Z{nSI+$6;|fKM`g+QHNK$(jxo=VA(O7~P9nY{+R^;q{K~+_P zMT>uxV-Q)oAwMEQZNa}@qWx6%l@gXf4!MBS-9vKOCZ>U#sKWlT>ej=^DR!a%Pg_?R z7FE=(&(MN&Dcy*4mxNLxrJ{6qch}INbSo)HDAGu$v`8!6-3(GQFwETJcc16}xcAPF zIdf+3XUE!S@4e32@4Hr0P2|sqY0!o9?_a+go-(+go^k>p2nio}qDeUW8mF6oHAil4 zln}3Jdh4qn*l|iCf9}~C`(Oi(l}bt?0dfpbGL|rMDe5g)$8_J z8`$6?_^=o3Ql)vFntbEqU*(_YKb<)jOFq7jCDS|pW80Cqc_ncrsa5N0jjnoqCKu@Y z)%T`d=xfS)jgLrYJna)frn@(M9`}$HO zmWV#vTPPBaB?hOInvrXls`s2;gKvBv=0sAU{VV+ny+^Z?epx$GalgBaLB7hU+>G#=*u!O?^jo#99_{vn>a_{!b4)e za*qNK1&j#f36n4bEoWBAT7J+{`F4Ic80%c8Ztg-WNgV{k@uh+0W7;G$>qEv+AwB=m z7eMJ~J^F6}cZd(eX@~#o*>gkm8F_Q*{Sb7z4ECeLGh~uUV0&IVT@E%a#}(q{gy!&W zni$sl=N^D3B9oJ(+p&U{?kj)l?2k%J?C#&T4#SM+A36?6tZi>KSn}IUAY1FfWjwm6 z4s)?BTnbzl$(*^Q-&)nH&-hA|)Nu1gzGn_2@>3X2NKA~`lXxx-5$)Z%=>e7|!(G&7 zaIt^zi3|RfSMuSt=gxeYC46wI(VG02SQPeh0PjXC1t)A`f)1lsB*i^#vynl`T%Xyn z(dkoXXa3DifQP52y|eRn`!D{po9M?I^nzYZnl-YQXRwyt0(NofoD8)Bj^e#HB%{dH zBH!lY#GKbB2L!geTqL2Q^pymj8n)JHRE84$S#Rfq^ZuZ2x;1~SlQ1MT9Zu@|{RnLm zhcSe1X*n`H2_ZCE^q=UUf=4y%mQsKwzU;ds(ZBirYsJFwE^`GKu1;p9m4OBeth$|} zw!O}&w|>&MO_R0Au9!`A*Nw4D5{N3=a=8%gG6zFp&HY5eHy;7!31N!;z`?u)cZLnq_MFb+&q!$LPFd zNXENh>i3Cfu=U+KQclMSG%P;-EQ|W^5wr!f*iMYqm-^M!^H|)j-O?X|q@ONxdpxPA@`DA1kpdvu21@&>?D+A&@v&EYYV*U?5ry==}AfG07t@T>+(HX+PhL%~eK zlC~^O*j}YbVBjg`#Y8!HG~o%J9%P#jPIH4X9>QbSey5zVlA^Z&y@@p z?YiSdyB=jcY2KU7fImecGX1dR;;e?*$I?%Mt{Hb zBM9E(OGr#qbUifoUG6__S{=KbH5~`pWkC7YuSG>g;oMct;mM?mo_0qe{6JP|g9MLp zN33+GulTskHB*+c4=Zq56_Pa-evb-zc$?-Z#Vu`kSJ*>gs3HGkncu@- zxv`jA|Y& z#0?5}w)}zBfbm)NhP0nJ*&miO96|AF?a#m0;BCVBihfF>gwjaFJKu{{8FW zKg^y5`^jDHHq0JJEbT98ud+a)tH?trf(dytw%8?Twyx=8-?b%Z7fA zu7Y=Y&@k!Ny;jF;A#-ZRFO;s>2})FB&{vr`d)VF9*a|U>fTre+(=TfgcTa|1>O$D| zS2nVUKyTmIYCbD|){dU1o_lFT=52YK1VYA|Y`6wLUb?mu&*p4!Z-sa5^UPRby{&(SKo{*WI$gwbk={R9x8SNbjWWR95z8kJaaB z?y0jg@5zy3{19DU9ysL{rOD|yH4`7p;)mviRa)&(&VK|6F(KeyHusxUt<%WG5F+)^ zX%?Cqw)?B@oX%2z7eihob>XCpImxI6T};^S=_I}BdAgZ8LXNu(E~OiW&Eo#0|4g_M9fVGpnk48Zhpe;R0~}QAS&?-daLVwF&66l`)Aem*kHDK zbZ9R4Ho#1|_>e-kJ%F_NR~1`fpb!uj7d}RRG(b$&1+!>Wc~~2AzjT((6dr3G4U_!l zde4D5FM9b<@Q1t4=}9-m2d5h*Wu9_vy(jp+bD6ITq!-`Ee^~ot@8V(ux=Z`@K{$p# zXq^CgXo|*ID?lSTbxr))iDltTKl%r_;99}6+B*;V6yObU(j+uz~i`{&Qb>9(cSU0jyOSf9~M zb!T*8%7ZX)2k*#0v1g5u3a4G3KD=-wJFL7gmD<%iLu$}&mB+_*griQb5{$rq)b6(b z{3&W}H_Cs0TG;jRjcGcMoIvh01%^pkVv8Pd`_!aIby|UK1>IvohwI znywR4%gNcq2km^YC3-pj2)913CsVk&I`11PYqDlBxQ@~~He$?Z-J=s?jXbn$M|e_gRC>at!Ap z=5zJwtL!UVHHdK3TcTCr*c)@`ARHSW`sP z^VWpkg*LJfQE$5?!U=~|Rrzs!^fw}uYGP#-ReIJ4v5p*ZC_x}--3F&t((EyeGcB~! zq^TD?XSxYkChFn{z`Z*e?*7D7(kFjN+0fRsKum`u4v~%+5XF~~N-edcZ|zlcB=L&L zx-Ubl9(aPg7EkkBVZ*&`2!&ExvO5HwY^HG zpjX?*sAz^moYsz~CGQoOCv>A^JGh>E%vX&-j`6SV%ynx{iQB@1p>vc+x4l(ntJEJk zS}{WY3R3nkw&wjfeAtjSBIa7g2~ujxH*U!a51;QI1vPNNF%?B3=xq5ujwl%h(mtDh zL?ivKafsP?*)Ms|D%QuRaqq!~L>kvM{mK1B(1t1Ty2UP%LTBkhc^d0AH|2!oMaaiS;WzVhH-aV811~RL zaV^TuEB1EUl;+81@UqU-c?{mBPX^|{d*gmMO~cFhZR3l7f8@ro)$JzUCsN8+A;G;i zVwt%=FPjWD$A0|+S;rn1lPcN<1}_2wrCpk6o1_I7prNzi=d}GtqKk&f}w37H~Owsm5ju;x#?hh*-L} zvj%;;@Lf6oi#4%CqvlVooxK)wnKCM|95;=fa`i}S^{?K~`p^R$YUu?QD@itnVuqMr zRiB)+xqX!q18+qTZ3_BW==Se?ex}Aae*Z$abFGknS?!Nc^ken}gyP~eC%7)X!CZF~ zrr@)|!1##by2Qrc%VhRSQ_6whk(ZBGhpdMcg9N=|?@XTkzMX?gHqHYw+f3R~H>QTZ zB>^C%a5!J|(rPOZMx`gLc_Mv{()nj7L%vpxjg=PU>{TI8+*n+_nKz$ovl1_AZIxQK z{>LLT?{#!V8F!xT7=mCtUp}G{sc+&;}Mj0GGvN${hYN{75v0K_`neT?sxIOUW4ZN zM0q0g;x*TQ7;Ag|Af$?~>q5xirC*mQXXHJ_I|XZ-0d>O=Vjq7nhd226uelPS`QEF& z7y`pTWMrA>;<83LUr-{Ch+^*$nGO84wlDTHlU`s^yjvfs(EzR*oXj^Hujd!*-p|0Q zyr@;&u_kq4^{g{u_@vHW0jSw>eU z3tPijcC>*56jH@gyz`O9FS4)rherTT*4DWf_U0!ynxblNpJ0aIKhQ^P${_!5?LlT4 zK!v^u{Hqtt?S3yBqR-%WnMPI>u*J1VB%5Q1@wfa-fx?TpvX=RHv8Dr`mbCV}*{+|( zn)yF6iDzK_)ghO$lCUdLys@!D@i*bQQvVKRh@#B1fQGwErAv5Ovqh+mR>#&G;I|#Fqy_YlNR4<8eU) z?iAwsYy~^Nk9&*#_BW3p9YWt-DzO$AV05o=+Y0^t!hY1@!9ma!n8b_nnw85#^(L5q z03^I)AI1%u(dF7d7#48tpLQdwNkp%%EaQH6U-1XfRVF}KUk(?}w^S+qF(c?}7Vl_Qx$PK2={1OIyw)H!n(E_=lHAtvr0qr8N1n;0s0^RkW$e z@SxhVX`GYR5LNX@J$zVL50bITgnm3<=#a~#d{4s95};!iEGK+_s_OG9-}9ThEC2jp zDj1*@l`q78vOdW0{<^I(S1PJHc-v6|HL~evg=T#WywUyEZ+d#0&$XSbj~zSuHq^jZ z@(MkR=0Ws2dr|_~R>(u9&R1#@t}E^&mx-$Dr-3;YfG-90Qo!11V~^FL;*qCCywz~m z(U5(7Cv+tp{x2;EOp~1T5pzTfBd)tvzO`a>=b%-c5ITfB+x@Xp4rYTSKLat~g%!k- z)mPb#^mQ6IYmg@sV_0)svO8c)wLw1-w}N};me*BXeQPi#I)vtu=c&xx>w0WJVDEhM zLmBE7ahyhr4>{8Az3ZtBj+ zX~ZtlF626VLC;0B1g_!pd7e!9MJ3zFc3=$^V8afrcSgoY?*>sxLw|p~LL-90O;Hxx ze5Wu>mF4YmNcX>Aywt5wCmrNr|5t8+iEGGn>qlx<%zB(aRU#s6QneZ1xMo{YeLk`{ z@75;qS>n){bsN?gHmtkD`#{_w)Rb{X_GmTWAf%bVb|x@F-W4e4!@z*7g#|)OWUoiG z?U(a2UWNjmXdFg$j8-=nzevQmC(t; zYBIpV@%jtDu~gi$`0~9w-}8|eAV%8``GA62APpJzA)M(7Cf62;V+y&rTa^}1jb(XFp!f1UiB%{Of$2jv!8v@)y# zM@SNGauQ}UhDcu4dXMa-P8tW62epIhsxcn2QA-W^N6COxfN9OL26Q6meS39mC-s*R z2&G2dDW#{U_su3HCbCfA_w0Lt-{zq2!h>4N!KuGZ<-Y1VG7D2;Zp|S{JR=(UeTr#* z=*g7E9xo!i7xC5n1^oLRLUrt{X9<w{*-F@SNL?wvCgp-tIR&9p|6ba$>uG2&(7=qmAxj#kK()3V(*sF&)Mp> zrh|@s>Qz3E@{`4t6F859atLCL7%I4LvFJ=I5FiP(@iN-ph9rG?LWvrRotVp;9yT@M zwjAGFxGqFC<4QcTOj;}+#r@r)6}*{niA^jA`nmBMoF(r>EoLJNf)~O&R$sw(2&kM8 z1ZNRsYA;?0NJ+f|foT_)m!KF1(x4J_R1DBs4nJX@-}uZ67L`mkLvN4;LAK6Q+oFMn zue$7I4EVeVcrk!Ja`Z{gNu(_K-2AHO`}?Xm0e|HV_*CxXqzj}A&EOD_#{Yfff=sO1EWf!*N1sRQl zYp;f5pAQ6iWcpn$%T@{@PM;nYAyl}U6-LhK5*52eY^IYY2R=%Hmd+N%Gdjy-G?bep4$xLwrH-rSma2cP*&Y`E{)5%YjNU zsMK`_o_555)~2VK+i)#wYxc+7Sx=0(iZhW;S=lwY-W zLVcrkbdZayU=|{|NJ}l!z^F9)$ z62^$$I(?_;{C)-hr40S2Ry@0A(;hh)m!4i+N@imKun|RIW@jMtG&z-(mDk)P*4*$O z^|9S!GztiuyiT!xOcmBogU#}6bHwgNz;8#LpiLhu7F3YR?T-!q$%~Y(d()&N^{qgi zQio;TL3fTbCKRn%j+E;H=LEFSm=JRnW>Hbm zn#JS#OiId8H0A2bN~hiV?F+Lnm7e4ICZg*hU#S97gTcZ5CZVyT?;OXNaEgubwv8h^ zow3HI9u-m5mKAgLivtYuvJ!d61!s0D=$pI!$4mjoA8W+?TwhB6olUw4#1y_mnIiHt zkxJizy^9@anKr>^YDmBa^(3~NFM3ig&>6l{uJNj<`-t_WrBJ}1E)YD9t``iMDs~~? z#9TmeGDPLj%RPK`wz=qDP}3@7_i!A}1%0 zRkXohlxIr5sJ-!MTjnbf@?j!>eSq=Yx3-2S6B9}D765Sh|HTL(+oDQm)*4nCdrK+S zMISZ8@_Y#5fz9CUXN7FPQ5w<+9Xx(I{q!M&{vige`EmpU!&mohaf9AbR=Vt(RvBmT zoyr>mpimTjeRvYQDTD(!zKJW>8TsCT zs})<#8In_^Sow+_RVvIaTX>8HBl`-~p#y@1uc6!a7#q;rt$vcY`mry;gK*xI9dO7- z&t`xgmXx7fmTo<~U%C|E-iVpG2nW~Qj`*J;@~_=nv47}RS-@Z4-;8Se%z}0oC5dIC zAm}|MX3^b>4-%SaKYtZ;Auj86MGSEP>N1h&pc)8!&fl|MIVr$(6>mYao!g4Mefr$= zl4iwnfHg$sOjk0DFU+*}CZ&r{aQ{6G)&uQhZOfV0_XHK+Vn3?GbrSkW5>Khbu9`~m zHsf1rGiulB%>1eHrtLI}Ur9|ut5TeOiUA1xq=8j8n;y#@SBsD%|F@Kc6n3?MbFs=( zis>r=Lj;il-y0f4I@S4scw;c48vqWVPaC~SwJvn!UDgb7MQmh2dHGL>Z41FBxqRUf z16MhNHs+>II`jtT0S#AcJfG$c(-_2o#E%cpvb9VyfBOgO}ZU@555Qn%Le=y77}tmwclMBqa$ zoO6Cl=(Uf4d?He=Sk{!AO=^Sj|Q%B|;{Gxu9Q-=H3gV z-X(PS#dYVYqOqEbR9n?@ugX7woLhbFbGN_RqE0zBFe~PE$-ts)X8cu1I|eX}n6J29M+# z^9PL=JDIEsP}g~A9mpDbti5S%Gk~9Xy-W)!Qn?6Qn?2Rl`m7g9=YJOU_PmRo#bAF& zy3(y>nUDv_+?%VYZfU>6Je~7!vd)py_Ehk{l-g=}N21NHt{%C5OxqLF<*(AXJ@*sk zaH>%7^Wy4V@-RkZ?4ukd7ScZw>}Lz#g|#h4radP<8{pLddeKn-E5zh5jN*+W5nBZz z0vl0d`1Vl2w5!_f%$A&#w8W-2n$RIIFmTEnWOz`6uzcPUDR?qAKuS7^-(=n!t>0qM zwGt|em}v3bea#2xEdK%GVq@zPR!?Kj-Y6D~Q+LUTh%|iDCe{Z?NJ%T*;?7C;JW1ep zA@Cqsd&x3}IsgnFWPqJIsseM@eA-~$O56#OztYyhLUhs^wvW=QaGonFD$e3k0pLYH z_Fv7fs4O7zii+t`djHC_X8!+@UgzJd`TqSaAx^~J!ND^o5)ff32)dG_a$0OmpuS`V z>tuiJ0BH_F)Gf@-#a0?Nfv0sCL@}6e-@ct|_2yn!SP%+$`;-ODC*=eAzqPyoeUW?+ zwuK?j$64u!EX~XSaBumiFwEE6POh#dExL9Y|MnpR+e%XsMAZ$V(e72xzW*0dv7@6y zuPa1`hK9xs33n%5Q~|q%@fpOs85kIB@B$!QeSe7qte4Db9$P**IJg}4W0>;M1 zMU4?)QR-}YQr?eCINOnbNB)g7(xY3mjGU5^Qo?I5xgnRZyrRNzY#PkCXZajqAusKF mVx&{V309sFVfmk?OrS9>ttSBkjQw!{{HQ8vDpox+3;!=d)Z*;` From 66757d0650f2fabfa0d500663c1ee75a8d8f6479 Mon Sep 17 00:00:00 2001 From: fauxki Date: Tue, 22 Oct 2013 17:58:54 -0700 Subject: [PATCH 026/178] * Should fix bar shutters not working. * Switches floor tiles in beach holodeck because the water effect wasn't working correctly. --- maps/tgstation2.dmm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 00d5d6b2ba..8cc48fd06c 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -338,8 +338,8 @@ "agz" = (/obj/machinery/door/airlock{name = "Internal Affairs"; req_access_txt = "38"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/lawoffice) "agA" = (/turf/simulated/wall,/area/lawoffice) "agB" = (/turf/simulated/wall,/area/crew_quarters/sleep{name = "Security Wing Dormitories"}) -"agC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/security{name = "Security Wing Dorms"; req_access = null; req_access_txt = "63"},/turf/simulated/floor,/area/crew_quarters/sleep{name = "Security Wing Dormitories"}) -"agD" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/security{name = "Security Wing Dorms"; req_access = null; req_access_txt = "63"},/turf/simulated/floor,/area/crew_quarters/sleep{name = "Security Wing Dormitories"}) +"agC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/security{name = "Security Wing Dorms"; req_access = null; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/sleep{name = "Security Wing Dormitories"}) +"agD" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/security{name = "Security Wing Dorms"; req_access = null; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/sleep{name = "Security Wing Dormitories"}) "agE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "agF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "agG" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxport) @@ -1506,7 +1506,7 @@ "aCX" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aCY" = (/obj/structure/disposalpipe/segment{dir = 4},/mob/living/carbon/monkey{name = "Pun Pun"; icon_state = "punpun1"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aCZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/item/weapon/pen/blue{pixel_x = 0; pixel_y = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aDa" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/door_control{id = "Bar"; name = "Bar Shutters"; pixel_y = 25; throw_range = 15},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) +"aDa" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/door_control{id = "bar"; name = "Bar Shutters"; pixel_y = 25; throw_range = 15},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aDb" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aDc" = (/obj/machinery/power/apc{dir = 8; name = "Chapel Office APC"; pixel_x = -25},/obj/structure/cable,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aDd" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) @@ -6891,7 +6891,7 @@ "cCA" = (/obj/structure/flora/grass/green,/turf/simulated/floor/holofloor{icon_state = "snow"},/area/holodeck/source_snowfield) "cCB" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/holofloor{icon_state = "snow"},/area/holodeck/source_snowfield) "cCC" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"cCD" = (/turf/simulated/floor/beach/water{tag = "icon-seashallow"; icon_state = "seashallow"},/area/holodeck/source_beach) +"cCD" = (/turf/simulated/floor/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"; dir = 2},/area/holodeck/source_beach) "cCE" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_boxingcourt) "cCF" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_boxingcourt) "cCG" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_thunderdomecourt) @@ -6904,9 +6904,9 @@ "cCN" = (/obj/structure/stool,/turf/simulated/floor/holofloor{icon_state = "carpet15-0"; dir = 4},/area/holodeck/source_meetinghall) "cCO" = (/obj/structure/stool,/turf/simulated/floor/holofloor{icon_state = "carpet11-0"; dir = 4},/area/holodeck/source_meetinghall) "cCP" = (/obj/structure/stool,/turf/simulated/floor/holofloor{icon_state = "carpet7-0"; dir = 4},/area/holodeck/source_meetinghall) -"cCQ" = (/turf/simulated/floor/beach/water{tag = "icon-beach (SOUTHEAST)"; icon_state = "beach"; dir = 6},/area/holodeck/source_beach) +"cCQ" = (/turf/simulated/floor/beach/sand{tag = "icon-beach (SOUTHEAST)"; icon_state = "beach"; dir = 6},/area/holodeck/source_beach) "cCR" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_basketball) -"cCS" = (/turf/simulated/floor/beach/water{tag = "icon-beach (SOUTHWEST)"; icon_state = "beach"; dir = 10},/area/holodeck/source_beach) +"cCS" = (/turf/simulated/floor/beach/sand{tag = "icon-beach (SOUTHWEST)"; icon_state = "beach"; dir = 10},/area/holodeck/source_beach) "cCT" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) "cCU" = (/turf/unsimulated/wall{icon_state = "iron13"},/area) "cCV" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{icon_state = "iron12"},/area) From 5f6181f665d1388b125d22b39c41eb2bbce0d8fb Mon Sep 17 00:00:00 2001 From: fauxki Date: Tue, 22 Oct 2013 17:59:55 -0700 Subject: [PATCH 027/178] Fixes to icons of snorkel and inflatable to make them appear correctly on sprite. --- icons/mob/belt.dmi | Bin 7971 -> 7969 bytes icons/mob/mask.dmi | Bin 26061 -> 26061 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 2dcf98290ec1662546a1e173431590da8a18c719..2dc3db1b7f42a51d1a690a042c4c2331d25c96ef 100644 GIT binary patch delta 528 zcmV+r0`L8!KA}F4Bmp3iB`kl4CT0R|%wS=&ZTHvjAxVK$XkK6TmPn5uW_Udq9?h@k z-}_gyd)XI%xQnh8vo)I^Ka0h?D^qQ@X1yvFHM^=#mp?I4VzV_5iJRal@k6mFT^G&P zEQ`gdqlPcPzkw^2ta=%k%`BsfYLe3Sr;}>Cfq;_9r<#QP=U?u0@dSU@_3YWEt`%oh z^?>SH>nTQO4@XL^j?JjbJ^t5u8mUXF7KMot_hjZySD$s3S`3XZWVNt0lOlw09zrj0QmoOOX<+Ek3oJ+$fuXaJ8}2F=`>DVF+{g^+fu(Y|`M^@S9DUjLN6#4-xGc~w z(I@9!(r?O@(}l6^eN3(Jk$qCNGxUtx$s60$>MzIN!MSSt7+8Nw?xJ4m7pmWchD&G3 ztIjJ2Y;tGM^r3HnD+k1c8Y8T%P-O)xOH^6H$~Us-nwkdq#2QfGezNU5WRPy4uDtuC zn(=|3QnschIKX!Ub>*2738}&h2Arv_Z;w<~de~p2E_HJ9ln8lt4(P1*(LBHI%vKBGR6Bmp9kB`kkHgPDLEGgx4@?f&{bBq@*z&FjnF66x{746i4SAI-1l z-^W*TcsXW&xa(ajW^Z;serBt8SH{}x&32QmYIao}FJJmdk=qeaRFjl;IGt464Fr@-KGr1UKmT&4i)Vkhu4m6ScC9$8 zsz+4UT2FoNY+g`oC5_hQf%Uio1EOk>e2pZZZy;(5QERNQ4Tf#;T{-PlL!WRop@1EZ zZWG!{sNgAq1riuLOJIS>##sYGo4|T(6F8|1J-P|3hc|67sSY5(X^Uw+Ceg^`&3=uM z`I|2Qrf|L>xg=mB=L>&;xx8ySxh7;r@7n$kE077ldsWa;2JDK!0&IoA0^}c9fY1XA zkaS?^Gz%<9rh%bDFR&n41cuH=Zn&#h?5FdLz- z)q)SaO4*v4-~itZ)Rkw7B%}&27;vVxzAdP%^sv83UFziIDN^BCzy6KvqW94}zaGrt V<(T~g=N{*RZf64aW3x>H)Ev_h21Nh> diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index f768b7ee7be482f3950d6bdeefb073de777cbe86..6be896d5bd73fe5cc4a433480617b2065350acf1 100644 GIT binary patch delta 576 zcmV-G0>Ayu%K^>H0gyR=m(6bCFc5&x$x~SE6;=!M&`T~WsuhR!70_T$Y;PPpavW0n z^gZyCv<1zetT-Wk{_L5tXW&u%dHK6}6YJMazQ@?w;6)*xe*Mm~-l}9oAy&&gGibF* z$1iPygrX1+b@%b%@FCBXjjbreQ=XL(YHURz7T>Yuz%8zG8rp4t4Q)jV&mgU=QCSI& zKH`z1g>AxU88M$YhOmcp-L}dzg$@p)5Ubg0w#u`Jz4hwn`Ww6O1RB~cxEp8q$mdXIK%J;-GDbRQe}uPmZB zQV8mfO|}X_-4%%pQQLcVkRfW@bWL+0S2YfFhbqVv=t_)X#$d8FV{qD(I3cq~YAVG0sQ=z8`q=;zBZiiWGc>2i8xL0p*>QRsS={ z=(%Cn*aj!{%#(uA$#&pCI@r^9?n2TbxK0{SjE8mxnM%zQYNn2PKE~;Wgx^u$2_vns zbSfIl$iwkxjp97E0j0I+u=OY_2aQy(7p)%}MHz`Sky@Xl&_ zCyp~wT&STkt>!XB&QuxEw7d!)z}N^rkm?c3=+i#L3h6&HC+?>3QM|mZ#rk!Ve*$C3 OXacid&&ac90%l`sKN^Vu delta 576 zcmV-G0>Ayu%K^>H0gyR=md$SBFc5&x$x~SE6;=!Mu$Np`R4WecE1Gu#I=?|JgS#d)8{Mj>O&*V}3e*Uw272B6xe#F??;6)*xe*Da{-l}9oAvWtgGibF* z!=E-mLQ#l^x_f_j_>gDH##R*KDbLCXHMXJ`dXIK*J;-E_bRV1ezga|Y zq!82{o9q>Wx+@YHqPF+!AVbu)>6+$5u4)|U4popT(3P0NjKO4U#^AIyXM!xf^?!jL zNdrd(I3cq~YAVDb7d&zMXjU;z}}qiWGc>C)Ov)i1NjFHw@ zIu(s&-h_8w*BK+-Q`!ZO4mB(vnZKj5@}?!)80y8mzin78d1-dIiV z%yA})3pKPd)l!DYnJN>SmRG?87#qO{QaxcAecFdupq OXfx}YuAZ}J0%l`KTpt1e From 5234b1394bca4a7776738992469031444f370dbc Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 23 Oct 2013 22:01:48 +0100 Subject: [PATCH 028/178] Moves around some ZAS stuff and fixes some things in FEA gas mixtures. ShareSpace now can take a gas mixture as an argument, alongside the usual list of tiles. Three new procs on gas mixtures, add() multiply() and divide(). Self explanatory. Zones with unsimulated tiles that sleep will now reset themselves to the average air. assume_air will only add air to sleeping zones with unsimulated tiles if it can wake the zone up. Signed-off-by: Mloc --- code/ZAS/FEA_gas_mixture.dm | 108 +++++++++++++++++--------- code/ZAS/ZAS_Zones.dm | 147 +++++++++++++++++++++++++++++------- 2 files changed, 191 insertions(+), 64 deletions(-) diff --git a/code/ZAS/FEA_gas_mixture.dm b/code/ZAS/FEA_gas_mixture.dm index cea0efc3ab..3eccad7e91 100644 --- a/code/ZAS/FEA_gas_mixture.dm +++ b/code/ZAS/FEA_gas_mixture.dm @@ -965,6 +965,7 @@ What are the archived variables for? //Outputs: 1 if can rebuild, 0 if not. if(!sample) return 0 + if((abs(oxygen-sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \ ((oxygen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen))) return 0 @@ -972,52 +973,61 @@ What are the archived variables for? ((nitrogen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen) || (nitrogen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen))) return 0 if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \ - ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide))) + ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (carbon_dioxide > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide))) return 0 if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \ ((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins))) return 0 + if(total_moles() > MINIMUM_AIR_TO_SUSPEND) if((abs(temperature-sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \ ((temperature < (1-MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature) || (temperature > (1+MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature))) //world << "temp fail [temperature] & [sample.temperature]" return 0 - + var/check_moles if(sample.trace_gases.len) for(var/datum/gas/trace_gas in sample.trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(corresponding) - if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \ - ((corresponding.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (corresponding.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles))) - return 0 - else - return 0 + var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases + if(corresponding) + check_moles = corresponding.moles + else + check_moles = 0 + + if((abs(trace_gas.moles - check_moles) > MINIMUM_AIR_TO_SUSPEND) && \ + ((check_moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (check_moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles))) + return 0 if(trace_gases.len) for(var/datum/gas/trace_gas in trace_gases) - if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) - var/datum/gas/corresponding = locate(trace_gas.type) in sample.trace_gases - if(corresponding) - if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \ - ((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles))) - return 0 - else - return 0 + var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases + if(corresponding) + check_moles = corresponding.moles + else + check_moles = 0 + + if((abs(trace_gas.moles - check_moles) > MINIMUM_AIR_TO_SUSPEND) && \ + ((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*check_moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*check_moles))) + return 0 + return 1 -/datum/gas_mixture/proc/compare_unsim(turf/list/samples) - //Purpose: Compares a list of unsimulated tiles to self to see if within acceptable ranges that group processing may be enabled - //Called by: ZAS sleeping detection. - //Inputs: List of unsimulated turfs to compare to - //Outputs: 1 if within an acceptable range to sleep, 0 otherwise. - var/datum/gas_mixture/after_share = new - after_share.copy_from(src) +/datum/gas_mixture/proc/add(datum/gas_mixture/right_side) + oxygen += right_side.oxygen + carbon_dioxide += right_side.carbon_dioxide + nitrogen += right_side.nitrogen + toxins += right_side.toxins - ShareSpace(after_share, samples) + if(trace_gases.len || right_side.trace_gases.len) + for(var/datum/gas/trace_gas in right_side.trace_gases) + var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases + if(!corresponding) + corresponding = new trace_gas.type() + trace_gases += corresponding + corresponding.moles += trace_gas.moles - return src.compare(after_share) + update_values() + return 1 /datum/gas_mixture/proc/subtract(datum/gas_mixture/right_side) //Purpose: Subtracts right_side from air_mixture. Used to help turfs mingle @@ -1025,18 +1035,42 @@ What are the archived variables for? //Inputs: Gas mix to remove //Outputs: 1 - oxygen -= right_side.oxygen - carbon_dioxide -= right_side.carbon_dioxide - nitrogen -= right_side.nitrogen - toxins -= right_side.toxins + oxygen = max(oxygen - right_side.oxygen) + carbon_dioxide = max(carbon_dioxide - right_side.carbon_dioxide) + nitrogen = max(nitrogen - right_side.nitrogen) + toxins = max(toxins - right_side.toxins) - if((trace_gases.len > 0)||(right_side.trace_gases.len > 0)) + if(trace_gases.len || right_side.trace_gases.len) for(var/datum/gas/trace_gas in right_side.trace_gases) var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - trace_gases += corresponding + if(corresponding) + corresponding.moles = max(0, corresponding.moles - trace_gas.moles) - corresponding.moles -= trace_gas.moles update_values() - return 1 \ No newline at end of file + return 1 + +/datum/gas_mixture/proc/multiply(factor) + oxygen *= factor + carbon_dioxide *= factor + nitrogen *= factor + toxins *= factor + + if(trace_gases && trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + trace_gas.moles *= factor + + update_values() + return 1 + +/datum/gas_mixture/proc/divide(factor) + oxygen /= factor + carbon_dioxide /= factor + nitrogen /= factor + toxins /= factor + + if(trace_gases && trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + trace_gas.moles /= factor + + update_values() + return 1 diff --git a/code/ZAS/ZAS_Zones.dm b/code/ZAS/ZAS_Zones.dm index b58cdd1903..2a5c5818a4 100644 --- a/code/ZAS/ZAS_Zones.dm +++ b/code/ZAS/ZAS_Zones.dm @@ -10,6 +10,9 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs var/list/contents //All the tiles that are contained in this zone. var/list/unsimulated_tiles // Any space tiles in this list will cause air to flow out. + var/datum/gas_mixture/air_unsim //Overall average of the air in connected unsimualted tiles. + var/unsim_air_needs_update = 0 //Set to 1 on geometry changes, marks air_unsim as needing update. + var/list/connections //connection objects which refer to connections with other zones, e.g. through a door. var/list/direct_connections //connections which directly connect two zones. @@ -126,6 +129,8 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs unsimulated_tiles += T contents -= T + unsim_air_needs_update = 1 + /zone/proc/RemoveTurf(turf/T) //Same, but in reverse. if(istype(T, /turf/simulated)) @@ -146,6 +151,45 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs if(!unsimulated_tiles.len) unsimulated_tiles = null + unsim_air_needs_update = 1 + +//Updates the air_unsim var +/zone/proc/UpdateUnsimAvg() + if(!unsim_air_needs_update) + return + + unsim_air_needs_update = 0 + + if(!air_unsim) + air_unsim = new /datum/gas_mixture + + air_unsim.oxygen = 0 + air_unsim.nitrogen = 0 + air_unsim.carbon_dioxide = 0 + air_unsim.toxins = 0 + air_unsim.temperature = 0 + + var/correction_ratio = max(1, max(max(1, air.group_multiplier) + 3, 1) + unsimulated_tiles.len) / unsimulated_tiles.len + + for(var/turf/T in unsimulated_tiles) + if(!istype(T, /turf/simulated)) + air_unsim.oxygen += T.oxygen + air_unsim.carbon_dioxide += T.carbon_dioxide + air_unsim.nitrogen += T.nitrogen + air_unsim.toxins += T.toxins + air_unsim.temperature += T.temperature/unsimulated_tiles.len + + //These values require adjustment in order to properly represent a room of the specified size. + air_unsim.oxygen *= correction_ratio + air_unsim.carbon_dioxide *= correction_ratio + air_unsim.nitrogen *= correction_ratio + air_unsim.toxins *= correction_ratio + + air_unsim.group_multiplier = unsimulated_tiles.len + + air_unsim.update_values() + return + ////////////// //PROCESSING// ////////////// @@ -180,20 +224,23 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs progress = "problem with: ShareSpace()" + if(unsim_air_needs_update) + unsim_air_needs_update = 0 + UpdateUnsimAvg() + if(unsimulated_tiles) if(locate(/turf/simulated) in unsimulated_tiles) for(var/turf/simulated/T in unsimulated_tiles) unsimulated_tiles -= T if(unsimulated_tiles.len) - var/old_pressure = air.return_pressure() - var/moved_air = ShareSpace(air,unsimulated_tiles) + var/moved_air = ShareSpace(air, air_unsim) + + if(!air.compare(air_unsim)) + interactions_with_unsim++ if(moved_air > vsc.airflow_lightest_pressure) AirflowSpace(src) - - if(old_pressure && (moved_air / old_pressure) > MINIMUM_AIR_RATIO_TO_SUSPEND) //Check if we've moved enough air to be considered awake. - interactions_with_unsim++ else unsimulated_tiles = null @@ -310,11 +357,11 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs Z.interactions_with_neighbors++ interactions_with_neighbors++ - if(!interactions_with_neighbors && !interactions_with_unsim) - SetStatus(ZONE_SLEEPING) + if(!interactions_with_neighbors && !interactions_with_unsim) + SetStatus(ZONE_SLEEPING) - interactions_with_neighbors = 0 - interactions_with_unsim = 0 + interactions_with_neighbors = 0 + interactions_with_unsim = 0 progress = "all components completed successfully, the problem is not here" @@ -327,6 +374,11 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs else if(status == ZONE_ACTIVE && new_status == ZONE_SLEEPING) air_master.active_zones.Remove(src) status = ZONE_SLEEPING + + if(unsimulated_tiles && unsimulated_tiles.len) + UpdateUnsimAvg() + air.copy_from(air_unsim) + if(!archived_air) archived_air = new archived_air.copy_from(air) @@ -342,12 +394,13 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs var/difference = 0 if(unsimulated_tiles && unsimulated_tiles.len) - if(air.compare_unsim(unsimulated_tiles)) + UpdateUnsimAvg() + if(!air.compare(air_unsim)) difference = 1 if(!difference) for(var/zone/Z in connected_zones) //Check adjacent zones for air difference. - if(air.compare(Z.air)) + if(!air.compare(Z.air)) difference = 1 break @@ -362,11 +415,20 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs return air.merge(giver) else + if(unsimulated_tiles && unsimulated_tiles.len) + UpdateUnsimAvg() + var/datum/gas_mixture/compare_air = new + compare_air.copy_from(giver) + compare_air.add(air_unsim) + compare_air.divide(air.group_multiplier) + + if(air_unsim.compare(compare_air)) + return 0 + var/result = air.merge(giver) if(!archived_air.compare(air)) SetStatus(ZONE_ACTIVE) - return result @@ -443,6 +505,7 @@ proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles) if(H) var/G_avg = (G.moles*size + H.moles*share_size) / (size+share_size) G.moles = (G.moles - G_avg) * (1-ratio) + G_avg + H.moles = (H.moles - G_avg) * (1-ratio) + G_avg else H = new G.type @@ -451,6 +514,15 @@ proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles) G.moles = (G.moles - G_avg) * (1-ratio) + G_avg H.moles = (H.moles - G_avg) * (1-ratio) + G_avg + for(var/datum/gas/G in B.trace_gases) + var/datum/gas/H = locate(G.type) in A.trace_gases + if(H) + H = new G.type + A.trace_gases += H + var/G_avg = (G.moles*size) / (size+share_size) + G.moles = (G.moles - G_avg) * (1-ratio) + G_avg + H.moles = (H.moles - G_avg) * (1-ratio) + G_avg + A.update_values() B.update_values() @@ -459,7 +531,7 @@ proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles) proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output) //A modified version of ShareRatio for spacing gas at the same rate as if it were going into a large airless room. - if(!unsimulated_tiles || !unsimulated_tiles.len) + if(!unsimulated_tiles) return 0 var @@ -472,6 +544,22 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output) size = max(1,A.group_multiplier) + var/tileslen + var/share_size + + if(istype(unsimulated_tiles, /datum/gas_mixture)) + var/datum/gas_mixture/avg_unsim = unsimulated_tiles + unsim_oxygen = avg_unsim.oxygen + unsim_co2 = avg_unsim.carbon_dioxide + unsim_nitrogen = avg_unsim.nitrogen + unsim_plasma = avg_unsim.toxins + unsim_temperature = avg_unsim.temperature + share_size = max(1, max(size + 3, 1) + avg_unsim.group_multiplier) + tileslen = avg_unsim.group_multiplier + + else if(istype(unsimulated_tiles, /list)) + if(!unsimulated_tiles.len) + return 0 // We use the same size for the potentially single space tile // as we use for the entire room. Why is this? // Short answer: We do not want larger rooms to depressurize more @@ -479,20 +567,25 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output) // oh-shit effect when large rooms get breached, but still having small // rooms remain pressurized for long enough to make escape possible. share_size = max(1, max(size + 3, 1) + unsimulated_tiles.len) - correction_ratio = share_size / unsimulated_tiles.len + var/correction_ratio = share_size / unsimulated_tiles.len - for(var/turf/T in unsimulated_tiles) - unsim_oxygen += T.oxygen - unsim_co2 += T.carbon_dioxide - unsim_nitrogen += T.nitrogen - unsim_plasma += T.toxins - unsim_temperature += T.temperature/unsimulated_tiles.len + for(var/turf/T in unsimulated_tiles) + unsim_oxygen += T.oxygen + unsim_co2 += T.carbon_dioxide + unsim_nitrogen += T.nitrogen + unsim_plasma += T.toxins + unsim_temperature += T.temperature/unsimulated_tiles.len + + //These values require adjustment in order to properly represent a room of the specified size. + unsim_oxygen *= correction_ratio + unsim_co2 *= correction_ratio + unsim_nitrogen *= correction_ratio + unsim_plasma *= correction_ratio + tileslen = unsimulated_tiles.len + + else //invalid input type + return 0 - //These values require adjustment in order to properly represent a room of the specified size. - unsim_oxygen *= correction_ratio - unsim_co2 *= correction_ratio - unsim_nitrogen *= correction_ratio - unsim_plasma *= correction_ratio unsim_heat_capacity = HEAT_CAPACITY_CALCULATION(unsim_oxygen, unsim_co2, unsim_nitrogen, unsim_plasma) var @@ -517,8 +610,8 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output) if((full_heat_capacity + unsim_heat_capacity) > 0) temp_avg = (A.temperature * full_heat_capacity + unsim_temperature * unsim_heat_capacity) / (full_heat_capacity + unsim_heat_capacity) - if(sharing_lookup_table.len >= unsimulated_tiles.len) //6 or more interconnecting tiles will max at 42% of air moved per tick. - ratio = sharing_lookup_table[unsimulated_tiles.len] + if(sharing_lookup_table.len >= tileslen) //6 or more interconnecting tiles will max at 42% of air moved per tick. + ratio = sharing_lookup_table[tileslen] A.oxygen = max(0, (A.oxygen - oxy_avg) * (1 - ratio) + oxy_avg ) A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1 - ratio) + nit_avg ) From 5f7ee544307c4a0cf880940d2fa0c5999e3221d1 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Wed, 23 Oct 2013 19:51:01 -0700 Subject: [PATCH 029/178] Fix for sunglasses and night vision goggles --- code/modules/mob/living/carbon/human/life.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0f0cf418e3..cf3356a595 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1251,8 +1251,12 @@ see_invisible = SEE_INVISIBLE_LIVING else see_invisible = SEE_INVISIBLE_LIVING - else if(!seer) + else if(!seer) // this works on BYOND 500 + + see_in_dark = species.darksight see_invisible = SEE_INVISIBLE_LIVING + /* else if(!glasses || !seer) // On previous tests, this worked, but as of BYOND 500, it works for all but sunglasses + see_in_dark = species.darksight + see_invisible = SEE_INVISIBLE_LIVING */ if(healths) if (analgesic) From 5698addc7515c3b38c4ce2c89e9ea5015707ad4f Mon Sep 17 00:00:00 2001 From: Segrain Date: Thu, 24 Oct 2013 09:54:15 +0300 Subject: [PATCH 030/178] Code cleanup. --- code/modules/clothing/glasses/glasses.dm | 1 - code/modules/mob/living/carbon/human/human.dm | 6 --- code/modules/mob/living/carbon/human/life.dm | 45 +++++++------------ 3 files changed, 15 insertions(+), 37 deletions(-) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index aed3517d03..be7a028f2a 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -35,7 +35,6 @@ icon_state = "night" item_state = "glasses" origin_tech = "magnets=2" - vision_flags = SEE_TURFS darkness_view = 3 /obj/item/clothing/glasses/eyepatch diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index cc0db4e932..6599bf0bfd 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1267,12 +1267,6 @@ mob/living/carbon/human/yank_out_object() species = all_species[new_species] - see_in_dark = species.darksight - if(see_in_dark > 2) - see_invisible = SEE_INVISIBLE_LEVEL_ONE - else - see_invisible = SEE_INVISIBLE_LIVING - spawn(0) update_icons() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index cf3356a595..aec9fe44c6 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1173,6 +1173,8 @@ if(healths) healths.icon_state = "health7" //DEAD healthmeter else sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_in_dark = species.darksight + see_invisible = see_in_dark>2 ? SEE_INVISIBLE_LEVEL_ONE : SEE_INVISIBLE_LIVING if(dna) switch(dna.mutantrace) if("slime") @@ -1217,46 +1219,29 @@ if(!druggy) see_invisible = SEE_INVISIBLE_LIVING if(glasses) - if(istype(glasses, /obj/item/clothing/glasses/meson)) - sight |= SEE_TURFS - if(!druggy) - see_invisible = SEE_INVISIBLE_MINIMUM - else if(istype(glasses, /obj/item/clothing/glasses/night)) - see_in_dark = 5 - if(!druggy) - see_invisible = SEE_INVISIBLE_MINIMUM - else if(istype(glasses, /obj/item/clothing/glasses/thermal)) - sight |= SEE_MOBS - if(!druggy) - see_invisible = SEE_INVISIBLE_MINIMUM - else if(istype(glasses, /obj/item/clothing/glasses/material)) - sight |= SEE_OBJS - if(!druggy) - see_invisible = SEE_INVISIBLE_MINIMUM + var/obj/item/clothing/glasses/G = glasses + if(istype(G)) + see_in_dark += G.darkness_view + if(G.vision_flags) + sight |= G.vision_flags + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM /* HUD shit goes here, as long as it doesn't modify sight flags */ // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - else if(istype(glasses, /obj/item/clothing/glasses/sunglasses)) - see_in_dark = 1 - if(istype(glasses, /obj/item/clothing/glasses/sunglasses/sechud)) - var/obj/item/clothing/glasses/sunglasses/sechud/O = glasses - if(O.hud) O.hud.process_hud(src) - if(!druggy) see_invisible = SEE_INVISIBLE_LIVING - + if(istype(glasses, /obj/item/clothing/glasses/sunglasses/sechud)) + var/obj/item/clothing/glasses/sunglasses/sechud/O = glasses + if(O.hud) O.hud.process_hud(src) + if(!druggy) see_invisible = SEE_INVISIBLE_LIVING else if(istype(glasses, /obj/item/clothing/glasses/hud)) var/obj/item/clothing/glasses/hud/O = glasses O.process_hud(src) if(!druggy) see_invisible = SEE_INVISIBLE_LIVING - else - see_invisible = SEE_INVISIBLE_LIVING - else if(!seer) // this works on BYOND 500 + - see_in_dark = species.darksight + + else if(!seer) see_invisible = SEE_INVISIBLE_LIVING - /* else if(!glasses || !seer) // On previous tests, this worked, but as of BYOND 500, it works for all but sunglasses - see_in_dark = species.darksight - see_invisible = SEE_INVISIBLE_LIVING */ if(healths) if (analgesic) From bc9f57e66d99585c6279827e2a7c5f918ecdbd0b Mon Sep 17 00:00:00 2001 From: Segrain Date: Thu, 24 Oct 2013 19:09:45 +0300 Subject: [PATCH 031/178] Sprite fix. --- code/game/machinery/computer/camera.dm | 8 +++++++- maps/tgstation2.dmm | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 1b21ecac95..05d0ccea8d 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -200,4 +200,10 @@ name = "Engineering Cameras" desc = "Used to monitor fires and breaches." icon_state = "engineeringcameras" - network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms") + network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms") + +/obj/machinery/computer/security/nuclear + name = "Mission Monitor" + desc = "Used to access the built-in cameras in helmets." + icon_state = "syndicam" + network = list("NUKE") \ No newline at end of file diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 00d5d6b2ba..3e969e6dce 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -5959,7 +5959,7 @@ "ckE" = (/obj/structure/table,/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/glasses/welding,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/turf/simulated/floor,/area/engine/engineering) "ckF" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engine/engineering) "ckG" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/table,/obj/item/device/modkit/tajaran,/turf/simulated/floor,/area/engine/engineering) -"ckH" = (/obj/machinery/computer/security{desc = ""; icon_state = "syndicam"; name = "Mission Monitor"; network = list("NUKE")},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"ckH" = (/obj/machinery/computer/security/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ckI" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor,/area/engine/engineering) "ckJ" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/tracker_electronics,/obj/item/weapon/paper/solar,/obj/machinery/light{dir = 1},/obj/machinery/power/apc{cell_type = 15000; dir = 1; name = "Engineering APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/engine/engineering) "ckK" = (/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/obj/machinery/computer/atmos_alert,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) From c8fcabc181df420d43e6d4fef2ea9e62e185796b Mon Sep 17 00:00:00 2001 From: Segrain Date: Thu, 24 Oct 2013 19:11:04 +0300 Subject: [PATCH 032/178] Smallfix. --- code/modules/admin/verbs/vox_raiders.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm index 7359a026b4..f1e6204d22 100644 --- a/code/modules/admin/verbs/vox_raiders.dm +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -66,7 +66,7 @@ var/global/vox_tick = 1 C.registered_user = src var/obj/item/weapon/storage/wallet/W = new(src) W.handle_item_insertion(C) - spawn_money(rand(100,300)*5,W) + spawn_money(rand(50,150)*10,W) equip_to_slot_or_del(W, slot_wear_id) var/obj/item/weapon/implant/cortical/I = new(src) From 6cf485deaee8023f2c6f2567517e55dba218d60f Mon Sep 17 00:00:00 2001 From: Segrain Date: Thu, 24 Oct 2013 19:13:05 +0300 Subject: [PATCH 033/178] Quickfix. --- code/modules/reagents/Chemistry-Reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 8f16252455..2121ce13aa 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -3084,7 +3084,7 @@ datum var/datum/organ/internal/heart/L = H.internal_organs["heart"] if (istype(L)) L.take_damage(100, 0) - + holder.remove_reagent(src.id, FOOD_METABOLISM) ethanol/deadrum name = "Deadrum" From 7af80660524288cd2630b2aefa71084473f5b236 Mon Sep 17 00:00:00 2001 From: Segrain Date: Thu, 24 Oct 2013 19:14:39 +0300 Subject: [PATCH 034/178] Balance fix. --- code/game/machinery/Sleeper.dm | 190 ++++++++++++++++----------------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 93d87635da..fc7202bd17 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -72,16 +72,16 @@ for(var/chemical in connected.available_chemicals) dat += "[connected.available_chemicals[chemical]]: [occupant.reagents.get_reagent_amount(chemical)] units
" dat += "


Refresh meter readings each second
" - if(src.connected.beaker) - if(src.connected.filtering) - dat += "
Stop Dialysis
" - dat += text("Output Beaker has [] units of free space remaining

", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume) - else - dat += "
Start Dialysis
" - dat += text("Output Beaker has [] units of free space remaining

", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume) - else - dat += "
No Dialysis Output Beaker is present.

" - + if(src.connected.beaker) + if(src.connected.filtering) + dat += "
Stop Dialysis
" + dat += text("Output Beaker has [] units of free space remaining

", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume) + else + dat += "
Start Dialysis
" + dat += text("Output Beaker has [] units of free space remaining

", src.connected.beaker.reagents.maximum_volume - src.connected.beaker.reagents.total_volume) + else + dat += "
No Dialysis Output Beaker is present.

" + for(var/chemical in connected.available_chemicals) dat += "Inject [connected.available_chemicals[chemical]]: " for(var/amount in connected.amounts) @@ -110,9 +110,9 @@ usr << "\red \b This person is not in good enough condition for sleepers to be effective! Use another means of treatment, such as cryogenics!" if (href_list["refresh"]) src.updateUsrDialog() - if (href_list["togglefilter"]) - src.connected.toggle_filter() - src.updateUsrDialog() + if (href_list["togglefilter"]) + src.connected.toggle_filter() + src.updateUsrDialog() src.add_fingerprint(usr) return @@ -143,15 +143,15 @@ density = 1 anchored = 1 var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r" - var/mob/living/carbon/human/occupant = null + var/mob/living/carbon/human/occupant = null var/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "dermaline" = "Dermaline", "bicaridine" = "Bicaridine", "dexalin" = "Dexalin") var/amounts = list(5, 10) - var/obj/item/weapon/reagent_containers/glass/beaker = null - var/filtering = 0 + var/obj/item/weapon/reagent_containers/glass/beaker = null + var/filtering = 0 New() ..() - beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large() + beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large() spawn( 5 ) if(orient == "RIGHT") icon_state = "sleeper_0-r" @@ -164,14 +164,14 @@ process() - if(filtering > 0) - if(beaker) - if(beaker.reagents.total_volume < beaker.reagents.maximum_volume) - src.occupant.vessel.trans_to(beaker, 1) - for(var/datum/reagent/x in src.occupant.reagents.reagent_list) -// world << "FILTERING CHEMS" - src.occupant.reagents.trans_to(beaker, 3) - src.occupant.vessel.trans_to(beaker, 1) + if(filtering > 0) + if(beaker) + if(beaker.reagents.total_volume < beaker.reagents.maximum_volume) + src.occupant.vessel.trans_to(beaker, 1) + for(var/datum/reagent/x in src.occupant.reagents.reagent_list) + if(x.volume > 20) + src.occupant.reagents.trans_id_to(beaker, x.id, 2) + src.occupant.vessel.trans_to(beaker, 1) src.updateDialog() return @@ -184,59 +184,59 @@ del(src) return - attackby(var/obj/item/weapon/G as obj, var/mob/user as mob) - if(istype(G, /obj/item/weapon/reagent_containers/glass)) - if(!beaker) - beaker = G - user.drop_item() - G.loc = src - user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!") - return - else - user << "\red The sleeper has a beaker already." + attackby(var/obj/item/weapon/G as obj, var/mob/user as mob) + if(istype(G, /obj/item/weapon/reagent_containers/glass)) + if(!beaker) + beaker = G + user.drop_item() + G.loc = src + user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!") + return + else + user << "\red The sleeper has a beaker already." return - else if(istype(G, /obj/item/weapon/grab)) - if(!ismob(G:affecting)) - return + else if(istype(G, /obj/item/weapon/grab)) + if(!ismob(G:affecting)) + return if(src.occupant) user << "\blue The sleeper is already occupied!" return - for(var/mob/living/carbon/slime/M in range(1,G:affecting)) - if(M.Victim == G:affecting) - usr << "[G:affecting.name] will not fit into the sleeper because they have a slime latched onto their head." - return - - visible_message("[user] starts putting [G:affecting:name] into the sleeper.", 3) - - if(do_after(user, 20)) - if(src.occupant) - user << "\blue The sleeper is already occupied!" - return - if(!G || !G:affecting) return - var/mob/M = G:affecting - if(M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - M.loc = src - src.occupant = M - src.icon_state = "sleeper_1" - if(orient == "RIGHT") - icon_state = "sleeper_1-r" - - M << "\blue You feel cool air surround you. You go numb as your senses turn inward." - - src.add_fingerprint(user) - del(G) + for(var/mob/living/carbon/slime/M in range(1,G:affecting)) + if(M.Victim == G:affecting) + usr << "[G:affecting.name] will not fit into the sleeper because they have a slime latched onto their head." + return + + visible_message("[user] starts putting [G:affecting:name] into the sleeper.", 3) + + if(do_after(user, 20)) + if(src.occupant) + user << "\blue The sleeper is already occupied!" + return + if(!G || !G:affecting) return + var/mob/M = G:affecting + if(M.client) + M.client.perspective = EYE_PERSPECTIVE + M.client.eye = src + M.loc = src + src.occupant = M + src.icon_state = "sleeper_1" + if(orient == "RIGHT") + icon_state = "sleeper_1-r" + + M << "\blue You feel cool air surround you. You go numb as your senses turn inward." + + src.add_fingerprint(user) + del(G) return return ex_act(severity) - if(filtering) - toggle_filter() + if(filtering) + toggle_filter() switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) @@ -260,8 +260,8 @@ return return emp_act(severity) - if(filtering) - toggle_filter() + if(filtering) + toggle_filter() if(stat & (BROKEN|NOPOWER)) ..(severity) return @@ -286,15 +286,15 @@ if (M:reagents.get_reagent_amount("inaprovaline") < 5) M:reagents.add_reagent("inaprovaline", 5) return - proc/toggle_filter() - if(filtering) - filtering = 0 - else - filtering = 1 + proc/toggle_filter() + if(filtering) + filtering = 0 + else + filtering = 1 proc/go_out() - if(filtering) - toggle_filter() + if(filtering) + toggle_filter() if(!src.occupant) return if(src.occupant.client) @@ -337,10 +337,10 @@ user << text("[]\t -Burn Severity %: []", (src.occupant.getFireLoss() < 60 ? "\blue " : "\red "), src.occupant.getFireLoss()) user << "\blue Expected time till occupant can safely awake: (note: If health is below 20% these times are inaccurate)" user << text("\blue \t [] second\s (if around 1 or 2 the sleeper is keeping them asleep.)", src.occupant.paralysis / 5) - if(src.beaker) - user << text("\blue \t Dialysis Output Beaker has [] of free space remaining.", src.beaker.reagents.maximum_volume - src.beaker.reagents.total_volume) - else - user << "\blue No Dialysis Output Beaker loaded." + if(src.beaker) + user << text("\blue \t Dialysis Output Beaker has [] of free space remaining.", src.beaker.reagents.maximum_volume - src.beaker.reagents.total_volume) + else + user << "\blue No Dialysis Output Beaker loaded." else user << "\blue There is no one inside!" return @@ -359,19 +359,19 @@ add_fingerprint(usr) return - verb/remove_beaker() - set name = "Remove Beaker" - set category = "Object" - set src in oview(1) - if(usr.stat != 0) - return - if(beaker) - filtering = 0 - beaker.loc = usr.loc - beaker = null - add_fingerprint(usr) - return - + verb/remove_beaker() + set name = "Remove Beaker" + set category = "Object" + set src in oview(1) + if(usr.stat != 0) + return + if(beaker) + filtering = 0 + beaker.loc = usr.loc + beaker = null + add_fingerprint(usr) + return + verb/move_inside() set name = "Enter Sleeper" set category = "Object" @@ -402,10 +402,10 @@ if(orient == "RIGHT") icon_state = "sleeper_1-r" - usr << "\blue You feel cool air surround you. You go numb as your senses turn inward." - + usr << "\blue You feel cool air surround you. You go numb as your senses turn inward." + for(var/obj/O in src) del(O) src.add_fingerprint(usr) return - return + return From 858df5ca64af7580ae3c38d1b73dccdc12b13eae Mon Sep 17 00:00:00 2001 From: Segrain Date: Thu, 24 Oct 2013 19:16:54 +0300 Subject: [PATCH 035/178] Fix for #3804. --- code/game/objects/structures/tables_racks.dm | 108 ++++++++++--------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 58ed13b9d9..f95a2b5d93 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -48,29 +48,30 @@ /obj/structure/table/update_icon() - if(flipped) - var/type = 0 - var/tabledirs = 0 - for(var/direction in list(turn(dir,90), turn(dir,-90)) ) - var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction)) - if (T && T.flipped) - type++ - tabledirs |= direction - var/base = "table" - if (istype(src, /obj/structure/table/woodentable)) - base = "wood" - if (istype(src, /obj/structure/table/reinforced)) - base = "rtable" - - icon_state = "[base]flip[type]" - if (type==1) - if (tabledirs & turn(dir,90)) - icon_state = icon_state+"-" - if (tabledirs & turn(dir,-90)) - icon_state = icon_state+"+" - return 1 - spawn(2) //So it properly updates when deleting + + if(flipped) + var/type = 0 + var/tabledirs = 0 + for(var/direction in list(turn(dir,90), turn(dir,-90)) ) + var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction)) + if (T && T.flipped && T.dir == src.dir) + type++ + tabledirs |= direction + var/base = "table" + if (istype(src, /obj/structure/table/woodentable)) + base = "wood" + if (istype(src, /obj/structure/table/reinforced)) + base = "rtable" + + icon_state = "[base]flip[type]" + if (type==1) + if (tabledirs & turn(dir,90)) + icon_state = icon_state+"-" + if (tabledirs & turn(dir,-90)) + icon_state = icon_state+"+" + return 1 + var/dir_sum = 0 for(var/direction in list(1,2,4,8,5,6,9,10)) var/skip_sum = 0 @@ -393,20 +394,19 @@ return /obj/structure/table/proc/straight_table_check(var/direction) - var/turf/left = get_step(src,turn(direction,90)) - var/turf/right = get_step(src,turn(direction,-90)) - var/turf/next = get_step(src,direction) - if(locate(/obj/structure/table,left) || locate(/obj/structure/table,right)) - return 0 - var/obj/structure/table/T = locate(/obj/structure/table, next) + var/obj/structure/table/T + for(var/angle in list(-90,90)) + T = locate() in get_step(src.loc,turn(direction,angle)) + if(T && !T.flipped) + return 0 + T = locate() in get_step(src.loc,direction) + if (!T || T.flipped) + return 1 if (istype(T,/obj/structure/table/reinforced/)) var/obj/structure/table/reinforced/R = T if (R.status == 2) return 0 - if (!T) - return 1 - else - return T.straight_table_check(direction) + return T.straight_table_check(direction) /obj/structure/table/verb/do_flip() set name = "Flip table" @@ -423,21 +423,35 @@ usr.visible_message("[usr] flips \the [src]!") return +/obj/structure/table/proc/unflipping_check(var/direction) + for(var/mob/M in oview(src,0)) + return 0 + + var/list/L = list() + if(direction) + L.Add(direction) + else + L.Add(turn(src.dir,-90)) + L.Add(turn(src.dir,90)) + for(var/new_dir in L) + var/obj/structure/table/T = locate() in get_step(src.loc,new_dir) + if(T) + if(T.flipped && T.dir == src.dir && !T.unflipping_check(new_dir)) + return 0 + return 1 + /obj/structure/table/proc/do_put() set name = "Put table back" set desc = "Puts flipped table back" set category = "Object" set src in oview(1) - if (!unflip()) + if (!unflipping_check()) usr << "It won't budge." return - + unflip() /obj/structure/table/proc/flip(var/direction) - if (flipped) - return 0 - if( !straight_table_check(turn(direction,90)) || !straight_table_check(turn(direction,-90)) ) return 0 @@ -456,8 +470,8 @@ flipped = 1 flags |= ON_BORDER for(var/D in list(turn(direction, 90), turn(direction, -90))) - if(locate(/obj/structure/table,get_step(src,D))) - var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,D)) + var/obj/structure/table/T = locate() in get_step(src,D) + if(T && !T.flipped) T.flip(direction) update_icon() update_adjacent() @@ -465,16 +479,6 @@ return 1 /obj/structure/table/proc/unflip() - if (!flipped) - return 0 - - var/can_flip = 1 - for (var/mob/A in oview(src,0))//src.loc) - if (istype(A)) - can_flip = 0 - if (!can_flip) - return 0 - verbs -=/obj/structure/table/proc/do_put verbs +=/obj/structure/table/verb/do_flip @@ -482,8 +486,8 @@ flipped = 0 flags &= ~ON_BORDER for(var/D in list(turn(dir, 90), turn(dir, -90))) - if(locate(/obj/structure/table,get_step(src,D))) - var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,D)) + var/obj/structure/table/T = locate() in get_step(src.loc,D) + if(T && T.flipped && T.dir == src.dir) T.unflip() update_icon() update_adjacent() @@ -646,4 +650,4 @@ del(src) /obj/structure/rack/attack_tk() // no telehulk sorry - return + return \ No newline at end of file From c9dea9b89d85d6403a545a7c0a0ee8637577fea9 Mon Sep 17 00:00:00 2001 From: Nanai Date: Thu, 24 Oct 2013 15:47:26 -0400 Subject: [PATCH 036/178] New working supermatter engine! Virgil and Skymarshal's work. Functional! Uguu! --- .../Cael_Aislinn/Supermatter/SuperMatter.dm | 186 -------- code/WorkInProgress/Yinadele/Supermatter.dm | 444 ++++++++++++++++++ 2 files changed, 444 insertions(+), 186 deletions(-) delete mode 100644 code/WorkInProgress/Cael_Aislinn/Supermatter/SuperMatter.dm create mode 100644 code/WorkInProgress/Yinadele/Supermatter.dm diff --git a/code/WorkInProgress/Cael_Aislinn/Supermatter/SuperMatter.dm b/code/WorkInProgress/Cael_Aislinn/Supermatter/SuperMatter.dm deleted file mode 100644 index fd3bf8eea6..0000000000 --- a/code/WorkInProgress/Cael_Aislinn/Supermatter/SuperMatter.dm +++ /dev/null @@ -1,186 +0,0 @@ -#define NITROGEN_RETARDATION_FACTOR 12 //Higher == N2 slows reaction more -#define THERMAL_RELEASE_MODIFIER 0.55 //Percentage of output power given to heat generation. - -#define PLASMA_RELEASE_MODIFIER 0.24 //Percentage of output power given to plasma generation. -#define PLASMA_CONVERSION_FACTOR 50 //How much energy per mole of plasma -#define MAX_PLASMA_RELATIVE_INCREASE 0.3 //Percentage of current plasma amounts that can be added to preexisting plasma. - -#define OXYGEN_RELEASE_MODIFIER 0.13 //Percentage of output power given to oxygen generation. -#define OXYGEN_CONVERSION_FACTOR 150 //How much energy per mole of oxygen. -#define MAX_OXYGEN_RELATIVE_INCREASE 0.2 //Percentage of current oxygen amounts that can be added to preexisting oxygen. - -#define RADIATION_POWER_MODIFIER 0.03 //How much power goes to irradiating the area. -#define RADIATION_FACTOR 10 -#define HALLUCINATION_POWER_MODIFIER 0.05 //How much power goes to hallucinations. -#define HALLUCINATION_FACTOR 20 - -#define REACTION_POWER_MODIFIER 4 //Higher == more overall power - -#define WARNING_DELAY 45 //45 seconds between warnings. - -/obj/machinery/power/supermatter - name = "Supermatter" - desc = "A strangely translucent and iridescent crystal. \red You get headaches just from looking at it." - icon = 'icons/obj/engine.dmi' - icon_state = "darkmatter" - density = 1 - anchored = 0 - - var/gasefficency = 0.25 - - var/base_icon_state = "darkmatter" - - var/damage = 0 - var/damage_archived = 0 - var/safe_alert = "Crystaline hyperstructure returning to safe operating levels." - var/warning_point = 100 - var/warning_alert = "Danger! Crystal hyperstructure instability!" - var/emergency_point = 700 - var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT" - var/explosion_point = 1000 - - var/emergency_issued = 0 - - var/explosion_power = 8 - - var/lastwarning = 0 // Time in 1/10th of seconds since the last sent warning - - var/power = 0 - - - shard //Small subtype, less efficient and more sensitive, but less boom. - name = "Supermatter Shard" - desc = "A strangely translucent and iridescent crystal. Looks like it used to be part of a larger structure. \red You get headaches just from looking at it." - icon_state = "darkmatter_shard" - base_icon_state = "darkmatter_shard" - - warning_point = 50 - emergency_point = 500 - explosion_point = 900 - - gasefficency = 0.125 - - explosion_power = 3 //3,6,9,12? Or is that too small? - - - process() - - var/turf/L = loc - - if(!istype(L)) //If we are not on a turf, uh oh. - del src - - //Ok, get the air from the turf - var/datum/gas_mixture/env = L.return_air() - - //Remove gas from surrounding area - var/datum/gas_mixture/removed = env.remove(gasefficency * env.total_moles) - - if (!removed) - return 1 - - if(damage > warning_point) // while the core is still damaged and it's still worth noting its status - if((world.timeofday - lastwarning) / 10 >= WARNING_DELAY) - - if(damage > emergency_point) - //radioalert("states, \"[emergency_alert]\"","Supermatter Monitor") - lastwarning = world.timeofday - else if(damage >= damage_archived) // The damage is still going up - //radioalert("states, \"[warning_alert]\"","Supermatter Monitor") - lastwarning = world.timeofday-150 - else // Phew, we're safe - //radioalert("states, \"[safe_alert]\"","Supermatter Monitor") - lastwarning = world.timeofday - - if(damage > explosion_point) - explosion(loc,explosion_power,explosion_power*2,explosion_power*3,explosion_power*4,1) - del src - - damage_archived = damage - damage = max( damage + ( (removed.temperature - 800) / 150 ) , 0 ) - - if(!removed.total_moles) - damage += max((power-1600)/10,0) - power = max(power,1600) - return 1 - - var/nitrogen_mod = abs((removed.nitrogen / removed.total_moles)) * NITROGEN_RETARDATION_FACTOR - var/oxygen = max(min(removed.oxygen / removed.total_moles - nitrogen_mod, 1), 0) - - var/temp_factor = 0 - if(oxygen > 0.8) - // with a perfect gas mix, make the power less based on heat - temp_factor = 100 - icon_state = "[base_icon_state]_glow" - else - // in normal mode, base the produced energy around the heat - temp_factor = 60 - icon_state = base_icon_state - - //Calculate power released as heat and gas, in as the sqrt of the power. - var/power_factor = (power/500) ** 3 - var/device_energy = oxygen * power_factor - power = max(round((removed.temperature - T0C) / temp_factor) + power - power_factor, 0) //Total laser power plus an overload factor - - //Final energy calcs. - device_energy = max(device_energy * REACTION_POWER_MODIFIER,0) - - //To figure out how much temperature to add each tick, consider that at one atmosphere's worth - //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature - //that the device energy is around 2140. At that stage, we don't want too much heat to be put out - //Since the core is effectively "cold" - - //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock - //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall. - - var/plasma_energy = device_energy * PLASMA_RELEASE_MODIFIER - var/oxygen_energy = device_energy * OXYGEN_RELEASE_MODIFIER - var/other_energy = device_energy * (1- (OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) - - //Put as much plasma out as is permitted. - if( plasma_energy > removed.total_moles * PLASMA_CONVERSION_FACTOR * MAX_PLASMA_RELATIVE_INCREASE / gasefficency) - removed.toxins += (MAX_PLASMA_RELATIVE_INCREASE * removed.total_moles / gasefficency) - other_energy += plasma_energy - (removed.total_moles * PLASMA_CONVERSION_FACTOR * MAX_PLASMA_RELATIVE_INCREASE / gasefficency) - else - removed.toxins += plasma_energy/PLASMA_CONVERSION_FACTOR - - //Put as much plasma out as is permitted. - if( oxygen_energy > removed.total_moles * OXYGEN_CONVERSION_FACTOR * MAX_OXYGEN_RELATIVE_INCREASE / gasefficency) - removed.oxygen += (MAX_OXYGEN_RELATIVE_INCREASE * removed.total_moles / gasefficency) - other_energy += oxygen_energy - (removed.total_moles * OXYGEN_CONVERSION_FACTOR * MAX_OXYGEN_RELATIVE_INCREASE / gasefficency) - else - removed.oxygen += oxygen_energy/OXYGEN_CONVERSION_FACTOR - - - var/heat_energy = (other_energy*THERMAL_RELEASE_MODIFIER)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) - var/hallucination_energy = (other_energy*HALLUCINATION_POWER_MODIFIER*HALLUCINATION_FACTOR)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) - var/rad_energy = (other_energy*RADIATION_POWER_MODIFIER*RADIATION_FACTOR)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) - - var/heat_applied = max(heat_energy,0) - if(heat_applied + removed.temperature > 800) - removed.temperature = 800 - var/energy_to_reconsider = (heat_applied + removed.temperature - 800) - hallucination_energy += (energy_to_reconsider*HALLUCINATION_POWER_MODIFIER)/(HALLUCINATION_POWER_MODIFIER+RADIATION_POWER_MODIFIER) - rad_energy += (energy_to_reconsider*RADIATION_POWER_MODIFIER)/(HALLUCINATION_POWER_MODIFIER+RADIATION_POWER_MODIFIER) - else - removed.temperature += heat_applied - - removed.update_values() - - env.merge(removed) - - for(var/mob/living/carbon/human/l in view(src, round(hallucination_energy**0.25))) // you have to be seeing the core to get hallucinations - if(prob(10) && !istype(l.glasses, /obj/item/clothing/glasses/meson)) - l.hallucination += hallucination_energy/((get_dist(l,src)**2)) - - for(var/mob/living/l in range(src,round(rad_energy**0.25))) - var/rads = rad_energy/((get_dist(l,src)**2)) - l.apply_effect(rads, IRRADIATE) - - return 1 - - - bullet_act(var/obj/item/projectile/Proj) - if(Proj.flag != "bullet") - power += Proj.damage - return 0 \ No newline at end of file diff --git a/code/WorkInProgress/Yinadele/Supermatter.dm b/code/WorkInProgress/Yinadele/Supermatter.dm new file mode 100644 index 0000000000..e74d861112 --- /dev/null +++ b/code/WorkInProgress/Yinadele/Supermatter.dm @@ -0,0 +1,444 @@ +//THIS IS VIRGIL AND SKYMARSHAL'S WORK, NOT MINE/YINADELE'S. + +#define NITROGEN_RETARDATION_FACTOR 4 //Higher == N2 slows reaction more +#define THERMAL_RELEASE_MODIFIER 10 //Higher == less heat released during reaction +#define PLASMA_RELEASE_MODIFIER 1500 //Higher == less plasma released by reaction +#define OXYGEN_RELEASE_MODIFIER 750 //Higher == less oxygen released at high temperature/power +#define REACTION_POWER_MODIFIER 1.1 //Higher == more overall power + + +//These would be what you would get at point blank, decreases with distance +#define DETONATION_RADS 200 +#define DETONATION_HALLUCINATION 600 + + +#define WARNING_DELAY 60 //45 seconds between warnings. + +/obj/machinery/power/supermatter + name = "Supermatter" + desc = "A strangely translucent and iridescent crystal. \red You get headaches just from looking at it." + icon = 'icons/obj/engine.dmi' + icon_state = "darkmatter" + density = 1 + anchored = 0 + + var/gasefficency = 0.25 + + var/base_icon_state = "darkmatter" + + var/damage = 0 + var/damage_archived = 0 + var/safe_alert = "Crystaline hyperstructure returning to safe operating levels." + var/warning_point = 100 + var/warning_alert = "Danger! Crystal hyperstructure instability!" + var/emergency_point = 700 + var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT" + var/explosion_point = 1000 + + var/emergency_issued = 0 + + var/explosion_power = 8 + + var/lastwarning = 0 // Time in 1/10th of seconds since the last sent warning + + var/power = 0 + + //Temporary values so that we can optimize this + //How much the bullets damage should be multiplied by when it is added to the internal variables + var/config_bullet_energy = 2 + //How much of the power is left after processing is finished? +// var/config_power_reduction_per_tick = 0.5 + //How much hallucination should it produce per unit of power? + var/config_hallucination_power = 0.1 + + var/obj/item/device/radio/radio + + shard //Small subtype, less efficient and more sensitive, but less boom. + name = "Supermatter Shard" + desc = "A strangely translucent and iridescent crystal that looks like it used to be part of a larger structure. \red You get headaches just from looking at it." + icon_state = "darkmatter_shard" + base_icon_state = "darkmatter_shard" + + warning_point = 50 + emergency_point = 500 + explosion_point = 900 + + gasefficency = 0.125 + + explosion_power = 3 //3,6,9,12? Or is that too small? + + +/obj/machinery/power/supermatter/New() + . = ..() + radio = new (src) + + +/obj/machinery/power/supermatter/Del() + del radio + explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) + . = ..() + + +/obj/machinery/power/supermatter/process() + + var/turf/L = loc + + if(!istype(L)) //If we are not on a turf, uh oh. + del src + + //Ok, get the air from the turf + var/datum/gas_mixture/env = L.return_air() + + //Remove gas from surrounding area + var/datum/gas_mixture/removed = env.remove(gasefficency * env.total_moles) + + if(!removed || !removed.total_moles) + damage += max((power-1600)/10, 0) + power = min(power, 1600) + return 1 + + if (!removed) + return 1 + + damage_archived = damage + damage = max( damage + ( (removed.temperature - 800) / 150 ) , 0 ) + + if(damage > warning_point) // while the core is still damaged and it's still worth noting its status + if((world.timeofday - lastwarning) / 10 >= WARNING_DELAY) + + if(damage > emergency_point) + radio.autosay(emergency_alert, "Supermatter Monitor") + lastwarning = world.timeofday + + else if(damage >= damage_archived) // The damage is still going up + radio.autosay(warning_alert, "Supermatter Monitor") + lastwarning = world.timeofday - 150 + + else // Phew, we're safe + radio.autosay(safe_alert, "Supermatter Monitor") + lastwarning = world.timeofday + + if(damage > explosion_point) + for(var/mob/living/mob in living_mob_list) + if(istype(mob, /mob/living/carbon/human)) + //Hilariously enough, running into a closet should make you get hit the hardest. + mob:hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) + var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(mob, src) + 1) ) + mob.apply_effect(rads, IRRADIATE) + + del src + + //Ok, 100% oxygen atmosphere = best reaction + //Maxes out at 100% oxygen pressure + var/oxygen = max(min((removed.oxygen - (removed.nitrogen * NITROGEN_RETARDATION_FACTOR)) / MOLES_CELLSTANDARD, 1), 0) + + var/temp_factor = 100 + + if(oxygen > 0.8) + // with a perfect gas mix, make the power less based on heat + icon_state = "[base_icon_state]_glow" + else + // in normal mode, base the produced energy around the heat + temp_factor = 60 + icon_state = base_icon_state + + power = max( (removed.temperature * temp_factor / T0C) * oxygen + power, 0) //Total laser power plus an overload + + //We've generated power, now let's transfer it to the collectors for storing/usage + transfer_energy() + + var/device_energy = power * REACTION_POWER_MODIFIER + + //To figure out how much temperature to add each tick, consider that at one atmosphere's worth + //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature + //that the device energy is around 2140. At that stage, we don't want too much heat to be put out + //Since the core is effectively "cold" + + //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock + //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall. + removed.temperature += (device_energy / THERMAL_RELEASE_MODIFIER) + + removed.temperature = max(0, min(removed.temperature, 2500)) + + //Calculate how much gas to release + removed.toxins += max(device_energy / PLASMA_RELEASE_MODIFIER, 0) + + removed.oxygen += max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0) + + removed.update_values() + + env.merge(removed) + + for(var/mob/living/carbon/human/l in view(src, round(power ** 0.25))) // you have to be seeing the core to get hallucinations + if(!istype(l.glasses, /obj/item/clothing/glasses/meson)) + l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / get_dist(l, src) ) ) ) + + for(var/mob/living/l in range(src, round((power / 100) ** 0.25))) + var/rads = (power / 10) * sqrt( 1 / get_dist(l, src) ) + l.apply_effect(rads, IRRADIATE) + + power -= (power/500)**3 + + return 1 + + +/obj/machinery/power/supermatter/bullet_act(var/obj/item/projectile/Proj) + if(Proj.flag != "bullet") + power += Proj.damage * config_bullet_energy + else + damage += Proj.damage * config_bullet_energy + return 0 + + +/obj/machinery/power/supermatter/attack_paw(mob/user as mob) + return attack_hand(user) + + +/obj/machinery/power/supermatter/attack_robot(mob/user as mob) + return attack_hand(user) + + +/obj/machinery/power/supermatter/attack_hand(mob/user as mob) + user.visible_message("\The [user] reaches out and touches \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ + "You reach out and touch \the [src], everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\ + "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") + + Consume(user) + +/obj/machinery/power/supermatter/proc/transfer_energy() + for(var/obj/machinery/power/rad_collector/R in rad_collectors) + if(get_dist(R, src) <= 15) // Better than using orange() every process + R.receive_pulse(power) + return + +/obj/machinery/power/supermatter/attackby(obj/item/weapon/W as obj, mob/living/user as mob) + user.visible_message("\The [user] touches \a [W] to \the [src] as a silence fills the room...",\ + "You touch \the [W] to \the [src] when everything suddenly goes silent.\"\n\The [W] flashes into dust as you flinch away from \the [src].",\ + "Everything suddenly goes silent.") + + user.drop_from_inventory(W) + Consume(W) + + user.apply_effect(150, IRRADIATE) + + +/obj/machinery/power/supermatter/Bumped(atom/AM as mob|obj) + if(istype(AM, /mob/living)) + AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ + "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ + "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") + else + AM.visible_message("\The [AM] smacks into \the [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + + Consume(AM) + + +/obj/machinery/power/supermatter/proc/Consume(var/mob/living/user) + if(istype(user)) + user.dust() + power += 200 + else + del user + + power += 200 //nomnomnom + + //This could kill people who are too close when a person is vaporized. + for(var/mob/living/l in range(10)) + if(l in view()) + l.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\ + "The unearthly ringing subsides and you notice you have new radiation burns.", 2) + else + l.show_message("You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.", 2) + var/rads = 500 * sqrt( 1 / (get_dist(l, src) + 1) ) + l.apply_effect(rads, IRRADIATE) + +/* + +#define NITROGEN_RETARDATION_FACTOR 12 //Higher == N2 slows reaction more +#define THERMAL_RELEASE_MODIFIER 0.55 //Percentage of output power given to heat generation. + +#define PLASMA_RELEASE_MODIFIER 0.24 //Percentage of output power given to plasma generation. +#define PLASMA_CONVERSION_FACTOR 50 //How much energy per mole of plasma +#define MAX_PLASMA_RELATIVE_INCREASE 0.3 //Percentage of current plasma amounts that can be added to preexisting plasma. + +#define OXYGEN_RELEASE_MODIFIER 0.13 //Percentage of output power given to oxygen generation. +#define OXYGEN_CONVERSION_FACTOR 150 //How much energy per mole of oxygen. +#define MAX_OXYGEN_RELATIVE_INCREASE 0.2 //Percentage of current oxygen amounts that can be added to preexisting oxygen. + +#define RADIATION_POWER_MODIFIER 0.03 //How much power goes to irradiating the area. +#define RADIATION_FACTOR 10 +#define HALLUCINATION_POWER_MODIFIER 0.05 //How much power goes to hallucinations. +#define HALLUCINATION_FACTOR 20 + +#define REACTION_POWER_MODIFIER 4 //Higher == more overall power + +#define WARNING_DELAY 45 //45 seconds between warnings. + +/obj/machinery/power/supermatter + name = "Supermatter" + desc = "A strangely translucent and iridescent crystal. \red You get headaches just from looking at it." + icon = 'icons/obj/engine.dmi' + icon_state = "darkmatter" + density = 1 + anchored = 0 + + var/gasefficency = 0.25 + + var/base_icon_state = "darkmatter" + + var/damage = 0 + var/damage_archived = 0 + var/safe_alert = "Crystaline hyperstructure returning to safe operating levels." + var/warning_point = 100 + var/warning_alert = "Danger! Crystal hyperstructure instability!" + var/emergency_point = 700 + var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT" + var/explosion_point = 1000 + + var/emergency_issued = 0 + + var/explosion_power = 8 + + var/lastwarning = 0 // Time in 1/10th of seconds since the last sent warning + + var/power = 0 + + + shard //Small subtype, less efficient and more sensitive, but less boom. + name = "Supermatter Shard" + desc = "A strangely translucent and iridescent crystal. Looks like it used to be part of a larger structure. \red You get headaches just from looking at it." + icon_state = "darkmatter_shard" + base_icon_state = "darkmatter_shard" + + warning_point = 50 + emergency_point = 500 + explosion_point = 900 + + gasefficency = 0.125 + + explosion_power = 3 //3,6,9,12? Or is that too small? + + + process() + + var/turf/L = loc + + if(!istype(L)) //If we are not on a turf, uh oh. + del src + + //Ok, get the air from the turf + var/datum/gas_mixture/env = L.return_air() + + //Remove gas from surrounding area + var/datum/gas_mixture/removed = env.remove(gasefficency * env.total_moles) + + if (!removed) + return 1 + + if(damage > warning_point) // while the core is still damaged and it's still worth noting its status + if((world.timeofday - lastwarning) / 10 >= WARNING_DELAY) + + if(damage > emergency_point) + //radioalert("states, \"[emergency_alert]\"","Supermatter Monitor") + lastwarning = world.timeofday + else if(damage >= damage_archived) // The damage is still going up + //radioalert("states, \"[warning_alert]\"","Supermatter Monitor") + lastwarning = world.timeofday-150 + else // Phew, we're safe + //radioalert("states, \"[safe_alert]\"","Supermatter Monitor") + lastwarning = world.timeofday + + if(damage > explosion_point) + explosion(loc,explosion_power,explosion_power*2,explosion_power*3,explosion_power*4,1) + del src + + damage_archived = damage + damage = max( damage + ( (removed.temperature - 800) / 150 ) , 0 ) + + if(!removed.total_moles) + damage += max((power-1600)/10,0) + power = max(power,1600) + return 1 + + var/nitrogen_mod = abs((removed.nitrogen / removed.total_moles)) * NITROGEN_RETARDATION_FACTOR + var/oxygen = max(min(removed.oxygen / removed.total_moles - nitrogen_mod, 1), 0) + + var/temp_factor = 0 + if(oxygen > 0.8) + // with a perfect gas mix, make the power less based on heat + temp_factor = 100 + icon_state = "[base_icon_state]_glow" + else + // in normal mode, base the produced energy around the heat + temp_factor = 60 + icon_state = base_icon_state + + //Calculate power released as heat and gas, in as the sqrt of the power. + var/power_factor = (power/500) ** 3 + var/device_energy = oxygen * power_factor + power = max(round((removed.temperature - T0C) / temp_factor) + power - power_factor, 0) //Total laser power plus an overload factor + + //Final energy calcs. + device_energy = max(device_energy * REACTION_POWER_MODIFIER,0) + + //To figure out how much temperature to add each tick, consider that at one atmosphere's worth + //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature + //that the device energy is around 2140. At that stage, we don't want too much heat to be put out + //Since the core is effectively "cold" + + //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock + //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall. + + var/plasma_energy = device_energy * PLASMA_RELEASE_MODIFIER + var/oxygen_energy = device_energy * OXYGEN_RELEASE_MODIFIER + var/other_energy = device_energy * (1- (OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) + + //Put as much plasma out as is permitted. + if( plasma_energy > removed.total_moles * PLASMA_CONVERSION_FACTOR * MAX_PLASMA_RELATIVE_INCREASE / gasefficency) + removed.toxins += (MAX_PLASMA_RELATIVE_INCREASE * removed.total_moles / gasefficency) + other_energy += plasma_energy - (removed.total_moles * PLASMA_CONVERSION_FACTOR * MAX_PLASMA_RELATIVE_INCREASE / gasefficency) + else + removed.toxins += plasma_energy/PLASMA_CONVERSION_FACTOR + + //Put as much plasma out as is permitted. + if( oxygen_energy > removed.total_moles * OXYGEN_CONVERSION_FACTOR * MAX_OXYGEN_RELATIVE_INCREASE / gasefficency) + removed.oxygen += (MAX_OXYGEN_RELATIVE_INCREASE * removed.total_moles / gasefficency) + other_energy += oxygen_energy - (removed.total_moles * OXYGEN_CONVERSION_FACTOR * MAX_OXYGEN_RELATIVE_INCREASE / gasefficency) + else + removed.oxygen += oxygen_energy/OXYGEN_CONVERSION_FACTOR + + + var/heat_energy = (other_energy*THERMAL_RELEASE_MODIFIER)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) + var/hallucination_energy = (other_energy*HALLUCINATION_POWER_MODIFIER*HALLUCINATION_FACTOR)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) + var/rad_energy = (other_energy*RADIATION_POWER_MODIFIER*RADIATION_FACTOR)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) + + var/heat_applied = max(heat_energy,0) + if(heat_applied + removed.temperature > 800) + removed.temperature = 800 + var/energy_to_reconsider = (heat_applied + removed.temperature - 800) + hallucination_energy += (energy_to_reconsider*HALLUCINATION_POWER_MODIFIER)/(HALLUCINATION_POWER_MODIFIER+RADIATION_POWER_MODIFIER) + rad_energy += (energy_to_reconsider*RADIATION_POWER_MODIFIER)/(HALLUCINATION_POWER_MODIFIER+RADIATION_POWER_MODIFIER) + else + removed.temperature += heat_applied + + removed.update_values() + + env.merge(removed) + + + for(var/mob/living/carbon/human/l in view(src, round(hallucination_energy**0.25))) // you have to be seeing the core to get hallucinations + if(prob(10) && !istype(l.glasses, /obj/item/clothing/glasses/meson)) + l.hallucination += hallucination_energy/((get_dist(l,src)**2)) + + for(var/mob/living/l in range(src,round(rad_energy**0.25))) + var/rads = rad_energy/((get_dist(l,src)**2)) + l.apply_effect(rads, IRRADIATE) + + return 1 + + + bullet_act(var/obj/item/projectile/Proj) + if(Proj.flag != "bullet") + power += Proj.damage + return 0*/ \ No newline at end of file From c9d8fa15ab54fa4ea3c90797be8fd759d858e939 Mon Sep 17 00:00:00 2001 From: Nanai Date: Thu, 24 Oct 2013 18:25:36 -0400 Subject: [PATCH 037/178] Del rework, as requested. --- code/WorkInProgress/Yinadele/Supermatter.dm | 203 +------------------- 1 file changed, 8 insertions(+), 195 deletions(-) diff --git a/code/WorkInProgress/Yinadele/Supermatter.dm b/code/WorkInProgress/Yinadele/Supermatter.dm index e74d861112..b9af01b938 100644 --- a/code/WorkInProgress/Yinadele/Supermatter.dm +++ b/code/WorkInProgress/Yinadele/Supermatter.dm @@ -1,4 +1,3 @@ -//THIS IS VIRGIL AND SKYMARSHAL'S WORK, NOT MINE/YINADELE'S. #define NITROGEN_RETARDATION_FACTOR 4 //Higher == N2 slows reaction more #define THERMAL_RELEASE_MODIFIER 10 //Higher == less heat released during reaction @@ -32,7 +31,7 @@ var/warning_point = 100 var/warning_alert = "Danger! Crystal hyperstructure instability!" var/emergency_point = 700 - var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT" + var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT." var/explosion_point = 1000 var/emergency_issued = 0 @@ -75,9 +74,12 @@ /obj/machinery/power/supermatter/Del() del radio - explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) . = ..() +/obj/machinery/power/supermatter/proc/explode() + explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) + del src + return /obj/machinery/power/supermatter/process() @@ -126,7 +128,7 @@ var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(mob, src) + 1) ) mob.apply_effect(rads, IRRADIATE) - del src + explode() //Ok, 100% oxygen atmosphere = best reaction //Maxes out at 100% oxygen pressure @@ -241,9 +243,9 @@ else del user - power += 200 //nomnomnom + power += 200 - //This could kill people who are too close when a person is vaporized. + //Some poor sod got eaten, go ahead and irradiate people nearby. for(var/mob/living/l in range(10)) if(l in view()) l.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\ @@ -253,192 +255,3 @@ var/rads = 500 * sqrt( 1 / (get_dist(l, src) + 1) ) l.apply_effect(rads, IRRADIATE) -/* - -#define NITROGEN_RETARDATION_FACTOR 12 //Higher == N2 slows reaction more -#define THERMAL_RELEASE_MODIFIER 0.55 //Percentage of output power given to heat generation. - -#define PLASMA_RELEASE_MODIFIER 0.24 //Percentage of output power given to plasma generation. -#define PLASMA_CONVERSION_FACTOR 50 //How much energy per mole of plasma -#define MAX_PLASMA_RELATIVE_INCREASE 0.3 //Percentage of current plasma amounts that can be added to preexisting plasma. - -#define OXYGEN_RELEASE_MODIFIER 0.13 //Percentage of output power given to oxygen generation. -#define OXYGEN_CONVERSION_FACTOR 150 //How much energy per mole of oxygen. -#define MAX_OXYGEN_RELATIVE_INCREASE 0.2 //Percentage of current oxygen amounts that can be added to preexisting oxygen. - -#define RADIATION_POWER_MODIFIER 0.03 //How much power goes to irradiating the area. -#define RADIATION_FACTOR 10 -#define HALLUCINATION_POWER_MODIFIER 0.05 //How much power goes to hallucinations. -#define HALLUCINATION_FACTOR 20 - -#define REACTION_POWER_MODIFIER 4 //Higher == more overall power - -#define WARNING_DELAY 45 //45 seconds between warnings. - -/obj/machinery/power/supermatter - name = "Supermatter" - desc = "A strangely translucent and iridescent crystal. \red You get headaches just from looking at it." - icon = 'icons/obj/engine.dmi' - icon_state = "darkmatter" - density = 1 - anchored = 0 - - var/gasefficency = 0.25 - - var/base_icon_state = "darkmatter" - - var/damage = 0 - var/damage_archived = 0 - var/safe_alert = "Crystaline hyperstructure returning to safe operating levels." - var/warning_point = 100 - var/warning_alert = "Danger! Crystal hyperstructure instability!" - var/emergency_point = 700 - var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT" - var/explosion_point = 1000 - - var/emergency_issued = 0 - - var/explosion_power = 8 - - var/lastwarning = 0 // Time in 1/10th of seconds since the last sent warning - - var/power = 0 - - - shard //Small subtype, less efficient and more sensitive, but less boom. - name = "Supermatter Shard" - desc = "A strangely translucent and iridescent crystal. Looks like it used to be part of a larger structure. \red You get headaches just from looking at it." - icon_state = "darkmatter_shard" - base_icon_state = "darkmatter_shard" - - warning_point = 50 - emergency_point = 500 - explosion_point = 900 - - gasefficency = 0.125 - - explosion_power = 3 //3,6,9,12? Or is that too small? - - - process() - - var/turf/L = loc - - if(!istype(L)) //If we are not on a turf, uh oh. - del src - - //Ok, get the air from the turf - var/datum/gas_mixture/env = L.return_air() - - //Remove gas from surrounding area - var/datum/gas_mixture/removed = env.remove(gasefficency * env.total_moles) - - if (!removed) - return 1 - - if(damage > warning_point) // while the core is still damaged and it's still worth noting its status - if((world.timeofday - lastwarning) / 10 >= WARNING_DELAY) - - if(damage > emergency_point) - //radioalert("states, \"[emergency_alert]\"","Supermatter Monitor") - lastwarning = world.timeofday - else if(damage >= damage_archived) // The damage is still going up - //radioalert("states, \"[warning_alert]\"","Supermatter Monitor") - lastwarning = world.timeofday-150 - else // Phew, we're safe - //radioalert("states, \"[safe_alert]\"","Supermatter Monitor") - lastwarning = world.timeofday - - if(damage > explosion_point) - explosion(loc,explosion_power,explosion_power*2,explosion_power*3,explosion_power*4,1) - del src - - damage_archived = damage - damage = max( damage + ( (removed.temperature - 800) / 150 ) , 0 ) - - if(!removed.total_moles) - damage += max((power-1600)/10,0) - power = max(power,1600) - return 1 - - var/nitrogen_mod = abs((removed.nitrogen / removed.total_moles)) * NITROGEN_RETARDATION_FACTOR - var/oxygen = max(min(removed.oxygen / removed.total_moles - nitrogen_mod, 1), 0) - - var/temp_factor = 0 - if(oxygen > 0.8) - // with a perfect gas mix, make the power less based on heat - temp_factor = 100 - icon_state = "[base_icon_state]_glow" - else - // in normal mode, base the produced energy around the heat - temp_factor = 60 - icon_state = base_icon_state - - //Calculate power released as heat and gas, in as the sqrt of the power. - var/power_factor = (power/500) ** 3 - var/device_energy = oxygen * power_factor - power = max(round((removed.temperature - T0C) / temp_factor) + power - power_factor, 0) //Total laser power plus an overload factor - - //Final energy calcs. - device_energy = max(device_energy * REACTION_POWER_MODIFIER,0) - - //To figure out how much temperature to add each tick, consider that at one atmosphere's worth - //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature - //that the device energy is around 2140. At that stage, we don't want too much heat to be put out - //Since the core is effectively "cold" - - //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock - //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall. - - var/plasma_energy = device_energy * PLASMA_RELEASE_MODIFIER - var/oxygen_energy = device_energy * OXYGEN_RELEASE_MODIFIER - var/other_energy = device_energy * (1- (OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) - - //Put as much plasma out as is permitted. - if( plasma_energy > removed.total_moles * PLASMA_CONVERSION_FACTOR * MAX_PLASMA_RELATIVE_INCREASE / gasefficency) - removed.toxins += (MAX_PLASMA_RELATIVE_INCREASE * removed.total_moles / gasefficency) - other_energy += plasma_energy - (removed.total_moles * PLASMA_CONVERSION_FACTOR * MAX_PLASMA_RELATIVE_INCREASE / gasefficency) - else - removed.toxins += plasma_energy/PLASMA_CONVERSION_FACTOR - - //Put as much plasma out as is permitted. - if( oxygen_energy > removed.total_moles * OXYGEN_CONVERSION_FACTOR * MAX_OXYGEN_RELATIVE_INCREASE / gasefficency) - removed.oxygen += (MAX_OXYGEN_RELATIVE_INCREASE * removed.total_moles / gasefficency) - other_energy += oxygen_energy - (removed.total_moles * OXYGEN_CONVERSION_FACTOR * MAX_OXYGEN_RELATIVE_INCREASE / gasefficency) - else - removed.oxygen += oxygen_energy/OXYGEN_CONVERSION_FACTOR - - - var/heat_energy = (other_energy*THERMAL_RELEASE_MODIFIER)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) - var/hallucination_energy = (other_energy*HALLUCINATION_POWER_MODIFIER*HALLUCINATION_FACTOR)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) - var/rad_energy = (other_energy*RADIATION_POWER_MODIFIER*RADIATION_FACTOR)/(1-(OXYGEN_RELEASE_MODIFIER + PLASMA_RELEASE_MODIFIER)) - - var/heat_applied = max(heat_energy,0) - if(heat_applied + removed.temperature > 800) - removed.temperature = 800 - var/energy_to_reconsider = (heat_applied + removed.temperature - 800) - hallucination_energy += (energy_to_reconsider*HALLUCINATION_POWER_MODIFIER)/(HALLUCINATION_POWER_MODIFIER+RADIATION_POWER_MODIFIER) - rad_energy += (energy_to_reconsider*RADIATION_POWER_MODIFIER)/(HALLUCINATION_POWER_MODIFIER+RADIATION_POWER_MODIFIER) - else - removed.temperature += heat_applied - - removed.update_values() - - env.merge(removed) - - - for(var/mob/living/carbon/human/l in view(src, round(hallucination_energy**0.25))) // you have to be seeing the core to get hallucinations - if(prob(10) && !istype(l.glasses, /obj/item/clothing/glasses/meson)) - l.hallucination += hallucination_energy/((get_dist(l,src)**2)) - - for(var/mob/living/l in range(src,round(rad_energy**0.25))) - var/rads = rad_energy/((get_dist(l,src)**2)) - l.apply_effect(rads, IRRADIATE) - - return 1 - - - bullet_act(var/obj/item/projectile/Proj) - if(Proj.flag != "bullet") - power += Proj.damage - return 0*/ \ No newline at end of file From 2aae6327864bb5a585a95959de0cd597b7531e54 Mon Sep 17 00:00:00 2001 From: Kilakk Date: Sat, 26 Oct 2013 13:21:56 -0400 Subject: [PATCH 038/178] Added the ability to send faxes between departments --- code/WorkInProgress/kilakk/fax.dm | 59 ++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 8 deletions(-) diff --git a/code/WorkInProgress/kilakk/fax.dm b/code/WorkInProgress/kilakk/fax.dm index 7ab0440a6b..81c411a904 100644 --- a/code/WorkInProgress/kilakk/fax.dm +++ b/code/WorkInProgress/kilakk/fax.dm @@ -1,19 +1,35 @@ +var/list/obj/machinery/faxmachine/allfaxes = list() +var/list/alldepartments = list("Central Command") + /obj/machinery/faxmachine name = "fax machine" icon = 'icons/obj/library.dmi' icon_state = "fax" - req_access = list(access_lawyer) + req_one_access = list(access_lawyer, access_heads) anchored = 1 density = 1 use_power = 1 idle_power_usage = 30 active_power_usage = 200 power_channel = EQUIP + var/obj/item/weapon/card/id/scan = null // identification var/authenticated = 0 - var/obj/item/weapon/paper/tofax = null // what we're sending to central + + var/obj/item/weapon/paper/tofax = null // what we're sending var/sendcooldown = 0 // to avoid spamming fax messages + var/department = "Unknown" // our department + + var/dpt = "Central Command" // the department we're sending to + +/obj/machinery/faxmachine/New() + ..() + allfaxes += src + + if( !("[department]" in alldepartments) ) + alldepartments += department + /obj/machinery/faxmachine/process() return 0 @@ -26,7 +42,7 @@ /obj/machinery/faxmachine/attack_hand(mob/user as mob) user.set_machine(src) - var/dat = "Central Command Fax Machine
" + var/dat = "Fax Machine
" var/scan_name if(scan) @@ -54,14 +70,15 @@ else dat += "Send
" - dat += "Currently sending: [tofax.name]" + dat += "Currently sending: [tofax.name]
" + dat += "Sending to: [dpt]
" else if(sendcooldown) - dat += "Please insert paper to send to Central Command via secure connection.

" + dat += "Please insert paper to send via secure connection.

" dat += "Transmitter arrays realigning. Please stand by.
" else - dat += "Please insert paper to send to Central Command via secure connection.

" + dat += "Please insert paper to send via secure connection.

" else dat += "Proper authentication is required to use this device.

" @@ -76,8 +93,14 @@ /obj/machinery/faxmachine/Topic(href, href_list) if(href_list["send"]) if(tofax) - Centcomm_fax(tofax.info, tofax.name, usr) - usr << "Message transmitted." + + if(dpt == "Central Command") + Centcomm_fax(tofax.info, tofax.name, usr) + + else + SendFax(tofax.info, tofax.name, usr, dpt) + + usr << "Message transmitted successfully." sendcooldown = 1 spawn(3000) // three minute cooldown. might mess with this number a bit as time goes on sendcooldown = 0 @@ -107,6 +130,9 @@ scan = I authenticated = 0 + if(href_list["dept"]) + dpt = input(usr, "Which department?", "Choose a department", "") as null|anything in alldepartments + if(href_list["auth"]) if ( (!( authenticated ) && (scan)) ) if (check_access(scan)) @@ -148,3 +174,20 @@ var/msg = "\blue CENTCOMM FAX: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (RPLY): Receiving '[sentname]' via secure connection ... view message" admins << msg + +proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt) + + for(var/obj/machinery/faxmachine/F in allfaxes) + if( F.department == dpt ) + if(! (F.stat & (BROKEN|NOPOWER) ) ) + + flick("faxreceive", F) + + // give the sprite some time to flick + spawn(20) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( F.loc ) + P.name = "[sentname]" + P.info = "[sent]" + P.update_icon() + + playsound(F.loc, "sound/items/polaroid1.ogg", 50, 1) From 133a06ddc4661ff5918eb9bcbd20b1ec1f4ce5d4 Mon Sep 17 00:00:00 2001 From: Kilakk Date: Sat, 26 Oct 2013 13:29:07 -0400 Subject: [PATCH 039/178] Gave fax machines on the map their "department" variables --- maps/tgstation2.dmm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 8cc48fd06c..d12f204e31 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -2373,7 +2373,7 @@ "aTG" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/crew_quarters/sleep{name = "Cabin Two"}) "aTH" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep{name = "Security Wing Dormitories"}) "aTI" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/sleep{name = "Security Wing Dormitories"}) -"aTJ" = (/obj/structure/table/reinforced,/obj/machinery/faxmachine,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) +"aTJ" = (/obj/structure/table/reinforced,/obj/machinery/faxmachine{department = "Internal Affairs"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aTK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/lawoffice) "aTL" = (/obj/structure/closet/lawcloset,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aTM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) @@ -4736,7 +4736,7 @@ "bNd" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bNe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bNf" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bNg" = (/obj/machinery/faxmachine,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bNg" = (/obj/machinery/faxmachine{department = "Captain's Office"},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bNh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/crew_quarters/captain) "bNi" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bNj" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -4823,7 +4823,7 @@ "bOM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bON" = (/obj/machinery/turret{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bOO" = (/obj/machinery/camera{c_tag = "Central Hallway West"; dir = 8},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central) -"bOP" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/machinery/faxmachine,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/bridge/meeting_room) +"bOP" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/machinery/faxmachine{department = "Bridge"},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bOQ" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bOR" = (/obj/machinery/door/window/eastright{dir = 1; name = "Bridge Delivery"; req_access_txt = "19"},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room) "bOS" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/quartermaster/office) From 1ed2ea6ec24f60f99c604b254a4198c55398c81d Mon Sep 17 00:00:00 2001 From: Kilakk Date: Sat, 26 Oct 2013 13:35:31 -0400 Subject: [PATCH 040/178] Fiddling with cooldown times --- code/WorkInProgress/kilakk/fax.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/WorkInProgress/kilakk/fax.dm b/code/WorkInProgress/kilakk/fax.dm index 81c411a904..76bcc0baa4 100644 --- a/code/WorkInProgress/kilakk/fax.dm +++ b/code/WorkInProgress/kilakk/fax.dm @@ -96,13 +96,15 @@ var/list/alldepartments = list("Central Command") if(dpt == "Central Command") Centcomm_fax(tofax.info, tofax.name, usr) + sendcooldown = 1800 else SendFax(tofax.info, tofax.name, usr, dpt) + sendcooldown = 600 usr << "Message transmitted successfully." - sendcooldown = 1 - spawn(3000) // three minute cooldown. might mess with this number a bit as time goes on + + spawn(sendcooldown) // cooldown time sendcooldown = 0 if(href_list["remove"]) From 97ddfc1007a6b247c64df8843b9b7e2e2ac1e4e4 Mon Sep 17 00:00:00 2001 From: Kilakk Date: Sat, 26 Oct 2013 13:36:34 -0400 Subject: [PATCH 041/178] Removed a silly duplicate entry in the changelog --- html/changelog.html | 8 -------- 1 file changed, 8 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 3c772085c6..2e6c07904c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -74,14 +74,6 @@ should be listed in the changelog upon commit though. Thanks. -->
  • Return of dreaded side effects. They now manifest well after their cause disappears, so curing them should be possible without them reappearing immediately. They also lost last stage damaging effects.
  • -
    -

    18 September 2013

    -

    Kilakk updated:

    -
      -
    • Fax machines! The Captain and IA agents can use the fax machine to send properly formatted messages to Central Command.
    • -
    • Gave the fax machine a fancy animated sprite. Thanks Cajoes!
    • -
    -

    September 24th, 2013

    From 91e440e26cfd28866e242aec3e742ec7045eeeee Mon Sep 17 00:00:00 2001 From: Kilakk Date: Sun, 27 Oct 2013 00:42:11 -0400 Subject: [PATCH 042/178] Fixes #3801, C4 will no longer destroy the analyzer it's inside of Committed to dev-freeze because the fix doesn't work with the click code on master --- code/modules/research/destructive_analyzer.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 72430976b8..15aafd77e9 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -99,6 +99,7 @@ Note: Must be placed within 3 tiles of the R&D Console spawn(10) icon_state = "d_analyzer_l" busy = 0 + return 1 return //For testing purposes only. From cfbe1c6ad128b9014164b2d447174506a2ad2cb0 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sat, 26 Oct 2013 21:52:13 -0700 Subject: [PATCH 043/178] Added the Booze Dispenser, the Soda Dispenser, the Bluespace Beaker, and the Cryostasis Beaker. --- code/modules/reagents/Chemistry-Machinery.dm | 86 +++-- .../reagents/reagent_containers/glass.dm | 318 ------------------ code/modules/research/designs.dm | 22 ++ icons/obj/chemical.dmi | Bin 30318 -> 32652 bytes 4 files changed, 87 insertions(+), 339 deletions(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 8b5400fa40..55add77cc0 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -15,6 +15,8 @@ var/amount = 30 var/beaker = null var/recharged = 0 + var/hackingstep = 0 + var/hackedcheck = 0 var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", "copper","mercury","radium","water","ethanol","sugar","sacid","tungsten") @@ -74,11 +76,10 @@ * * @param user /mob The mob who is interacting with this ui * @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main") - * @param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open ui * * @return nothing */ -/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) +/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main") if(stat & (BROKEN|NOPOWER)) return if(user.stat || user.restrained()) return @@ -111,13 +112,10 @@ chemicals.Add(list(list("title" = temp.name, "id" = temp.id, "commands" = list("dispense" = temp.id)))) // list in a list because Byond merges the first list... data["chemicals"] = chemicals - if (!ui) // no ui has been passed, so we'll search for one - { - ui = nanomanager.get_open_ui(user, src, ui_key) - } + var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, ui_key) if (!ui) // the ui does not exist, so we'll create a new one - ui = new(user, src, ui_key, "chem_dispenser.tmpl", "Chem Dispenser 5000", 374, 640) + ui = new(user, src, ui_key, "chem_dispenser.tmpl", "Chem Dispenser 5000", 370, 605) // When the UI is first opened this is the data it will use ui.set_initial_data(data) ui.open() @@ -159,18 +157,16 @@ if(isrobot(user)) return - if(!istype(B, /obj/item/weapon/reagent_containers/glass)) - return - if(src.beaker) - user << "A beaker is already loaded into the machine." + user << "Something is already loaded into the machine." + return + if(istype(B, /obj/item/weapon/reagent_containers/glass||/obj/item/weapon/reagent_containers/food)) + src.beaker = B + user.drop_item() + B.loc = src + user << "You set [B] on the machine." + nanomanager.update_uis(src) // update all UIs attached to src return - - src.beaker = B - user.drop_item() - B.loc = src - user << "You add the beaker to the machine!" - nanomanager.update_uis(src) // update all UIs attached to src /obj/machinery/chem_dispenser/attack_ai(mob/user as mob) return src.attack_hand(user) @@ -184,6 +180,54 @@ ui_interact(user) +/obj/machinery/chem_dispenser/soda + icon_state = "soda_dispenser" + name = "soda fountain" + desc = "A drink fabricating machine, capable of producing many sugary drinks with just one touch." + energy = 100 + max_energy = 100 + dispensable_reagents = list("water","ice","coffee","tea","icetea","space_cola","spacemountainwind","dr_gibb","space_up","tonic","sodawater","lemon_lime","sugar","orangejuice","limejuice") + + /obj/machinery/chem_dispenser/soda/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob) + ..() + if(istype(B, /obj/item/device/multitool) && hackingstep == 0||hackingstep == 1) + if(hackedcheck == 0) + user << "You change the mode from 'McNano' to 'Pizza King'." + dispensable_reagents = list("water","ice","coffee","tea","icetea","space_cola","spacemountainwind","dr_gibb","space_up","tonic","sodawater","lemon_lime","sugar","orangejuice","limejuice","thirteenloko") + hackingstep = 1 + hackedcheck = 1 + return + + else + user << "You change the mode from 'Pizza King' to 'McNano'." + dispensable_reagents = list("water","ice","coffee","tea","icetea","space_cola","spacemountainwind","dr_gibb","space_up","tonic","sodawater","lemon_lime","sugar","orangejuice","limejuice") + hackingstep = 0 + hackedcheck = 0 + return +/obj/machinery/chem_dispenser/beer + icon_state = "booze_dispenser" + name = "booze dispenser" + energy = 100 + max_energy = 100 + desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." + dispensable_reagents = list("water","ice","coffee","tea","cream","lemon_lime","sugar","orangejuice","limejuice","cola","sodawater","tonic","beer","kahlua","whisky","wine","vodka","gin","rum","tequila","vermouth","cognac","ale","mead") + + /obj/machinery/chem_dispenser/beer/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob) + ..() + if(istype(B, /obj/item/device/multitool) && hackingstep == 0||hackingstep == 1) + if(hackedcheck == 0) + user << "You disable the 'nanotrasen-are-cheap-bastards' lock, enabling hidden and very expensive boozes." + dispensable_reagents = list("water","ice","coffee","tea","cream","lemon_lime","sugar","orangejuice","limejuice","cola","sodawater","tonic","beer","kahlua","whisky","wine","vodka","gin","rum","tequila","vermouth","cognac","ale","goldschlager","patron","mead","watermelonjuice","berryjuice") + hackingstep = 1 + hackedcheck = 1 + return + + else + user << "You re-enable the 'nanotrasen-are-cheap-bastards' lock, disabling hidden and very expensive boozes." + dispensable_reagents = list("water","ice","coffee","tea","cream","lemon_lime","sugar","orangejuice","limejuice","cola","sodawater","tonic","beer","kahlua","whisky","wine","vodka","gin","rum","tequila","vermouth","cognac","ale","mead") + hackingstep = 0 + hackedcheck = 0 + return ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -347,15 +391,15 @@ reagents.clear_reagents() icon_state = "mixer0" else if (href_list["createpill"] || href_list["createpill_multiple"]) + var/name = reject_bad_text(input(usr,"Name:","Name your pill!",reagents.get_master_reagent_name())) var/count = 1 if (href_list["createpill_multiple"]) count = isgoodnumber(input("Select the number of pills to make.", 10, pillamount) as num) if (count > 20) count = 20 //Pevent people from creating huge stacks of pills easily. Maybe move the number to defines? var/amount_per_pill = reagents.total_volume/count if (amount_per_pill > 50) amount_per_pill = 50 - var/name = reject_bad_text(input(usr,"Name:","Name your pill!","[reagents.get_master_reagent_name()] ([amount_per_pill] units)")) while (count--) var/obj/item/weapon/reagent_containers/pill/P = new/obj/item/weapon/reagent_containers/pill(src.loc) - if(!name) name = "[reagents.get_master_reagent_name()] ([amount_per_pill] units)" + if(!name) name = reagents.get_master_reagent_name() P.name = "[name] pill" P.pixel_x = rand(-7, 7) //random position P.pixel_y = rand(-7, 7) @@ -367,9 +411,9 @@ src.updateUsrDialog() else if (href_list["createbottle"]) if(!condi) - var/name = reject_bad_text(input(usr,"Name:","Name your bottle!","[reagents.get_master_reagent_name()] ([reagents.total_volume] units)")) + var/name = reject_bad_text(input(usr,"Name:","Name your bottle!",reagents.get_master_reagent_name())) var/obj/item/weapon/reagent_containers/glass/bottle/P = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc) - if(!name) name = "[reagents.get_master_reagent_name()] ([reagents.total_volume] units)" + if(!name) name = reagents.get_master_reagent_name() P.name = "[name] bottle" P.pixel_x = rand(-7, 7) //random position P.pixel_y = rand(-7, 7) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index ad68c27b67..e69de29bb2 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -1,318 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////// -/// (Mixing)Glass. -//////////////////////////////////////////////////////////////////////////////// -/obj/item/weapon/reagent_containers/glass - name = " " - var/base_name = " " - desc = " " - icon = 'icons/obj/chemical.dmi' - icon_state = "null" - item_state = "null" - amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,25,30,50) - volume = 50 - flags = FPRINT | TABLEPASS | OPENCONTAINER - - var/label_text = "" - - var/list/can_be_placed_into = list( - /obj/machinery/chem_master/, - /obj/machinery/chem_dispenser/, - /obj/machinery/reagentgrinder, - /obj/structure/table, - /obj/structure/closet, - /obj/structure/sink, - /obj/item/weapon/storage, - /obj/machinery/atmospherics/unary/cryo_cell, - /obj/machinery/dna_scannernew, - /obj/item/weapon/grenade/chem_grenade, - /obj/machinery/bot/medbot, - /obj/machinery/computer/pandemic, - /obj/item/weapon/storage/secure/safe, - /obj/machinery/iv_drip, - /obj/machinery/disease2/incubator, - /obj/machinery/disposal, - /obj/machinery/apiary, - /mob/living/simple_animal/cow, - /mob/living/simple_animal/hostile/retaliate/goat, - /obj/machinery/computer/centrifuge, - /obj/machinery/sleeper ) - - New() - ..() - base_name = name - - examine() - set src in view() - ..() - if (!(usr in view(2)) && usr!=src.loc) return - usr << "\blue It contains:" - if(reagents && reagents.reagent_list.len) - usr << "\blue [src.reagents.total_volume] units of liquid." - else - usr << "\blue Nothing." - if (!is_open_container()) - usr << "\blue Airtight lid seals it completely." - - attack_self() - ..() - if (is_open_container()) - usr << "You put the lid on \the [src]." - flags ^= OPENCONTAINER - else - usr << "You take the lid off \the [src]." - flags |= OPENCONTAINER - update_icon() - - afterattack(obj/target, mob/user, proximity) - if(!proximity) return - if (!is_open_container()) - return - - for(var/type in src.can_be_placed_into) - if(istype(target, type)) - return - - if(ismob(target) && target.reagents && reagents.total_volume) - user << "\blue You splash the solution onto [target]." - - var/mob/living/M = target - var/list/injected = list() - for(var/datum/reagent/R in src.reagents.reagent_list) - injected += R.name - var/contained = english_list(injected) - M.attack_log += text("\[[time_stamp()]\] Has been splashed with [src.name] by [user.name] ([user.ckey]). Reagents: [contained]") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to splash [M.name] ([M.key]). Reagents: [contained]") - msg_admin_attack("[user.name] ([user.ckey]) splashed [M.name] ([M.key]) with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") - - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] has been splashed with something by []!", target, user), 1) - src.reagents.reaction(target, TOUCH) - spawn(5) src.reagents.clear_reagents() - return - else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. - - if(!target.reagents.total_volume && target.reagents) - user << "\red [target] is empty." - return - - if(reagents.total_volume >= reagents.maximum_volume) - user << "\red [src] is full." - return - - var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) - user << "\blue You fill [src] with [trans] units of the contents of [target]." - - else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it. - if(!reagents.total_volume) - user << "\red [src] is empty." - return - - if(target.reagents.total_volume >= target.reagents.maximum_volume) - user << "\red [target] is full." - return - - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) - user << "\blue You transfer [trans] units of the solution to [target]." - - //Safety for dumping stuff into a ninja suit. It handles everything through attackby() and this is unnecessary. - else if(istype(target, /obj/item/clothing/suit/space/space_ninja)) - return - - else if(istype(target, /obj/machinery/bunsen_burner)) - return - - else if(istype(target, /obj/machinery/anomaly)) - return - - else if(reagents.total_volume) - user << "\blue You splash the solution onto [target]." - src.reagents.reaction(target, TOUCH) - spawn(5) src.reagents.clear_reagents() - return - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen)) - var/tmp_label = sanitize(input(user, "Enter a label for [src.name]","Label",src.label_text)) - if(length(tmp_label) > 10) - user << "\red The label can be at most 10 characters long." - else - user << "\blue You set the label to \"[tmp_label]\"." - src.label_text = tmp_label - src.update_name_label() - - proc/update_name_label() - if(src.label_text == "") - src.name = src.base_name - else - src.name = "[src.base_name] ([src.label_text])" - -/obj/item/weapon/reagent_containers/glass/beaker - name = "beaker" - desc = "A beaker. Can hold up to 50 units." - icon = 'icons/obj/chemical.dmi' - icon_state = "beaker" - item_state = "beaker" - m_amt = 0 - g_amt = 500 - - on_reagent_change() - update_icon() - - pickup(mob/user) - ..() - update_icon() - - dropped(mob/user) - ..() - update_icon() - - attack_hand() - ..() - update_icon() - - update_icon() - overlays.Cut() - - if(reagents.total_volume) - var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10") - - var/percent = round((reagents.total_volume / volume) * 100) - switch(percent) - if(0 to 9) filling.icon_state = "[icon_state]-10" - if(10 to 24) filling.icon_state = "[icon_state]10" - if(25 to 49) filling.icon_state = "[icon_state]25" - if(50 to 74) filling.icon_state = "[icon_state]50" - if(75 to 79) filling.icon_state = "[icon_state]75" - if(80 to 90) filling.icon_state = "[icon_state]80" - if(91 to INFINITY) filling.icon_state = "[icon_state]100" - - filling.icon += mix_color_from_reagents(reagents.reagent_list) - overlays += filling - - if (!is_open_container()) - var/image/lid = image(icon, src, "lid_[initial(icon_state)]") - overlays += lid - -/obj/item/weapon/reagent_containers/glass/beaker/large - name = "large beaker" - desc = "A large beaker. Can hold up to 100 units." - icon_state = "beakerlarge" - g_amt = 5000 - volume = 100 - amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,25,30,50,100) - flags = FPRINT | TABLEPASS | OPENCONTAINER - -/obj/item/weapon/reagent_containers/glass/beaker/vial - name = "vial" - desc = "A small glass vial. Can hold up to 25 units." - icon_state = "vial" - g_amt = 250 - volume = 25 - amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,25) - flags = FPRINT | TABLEPASS | OPENCONTAINER - -/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone - New() - ..() - reagents.add_reagent("cryoxadone", 30) - update_icon() - -/obj/item/weapon/reagent_containers/glass/beaker/sulphuric - New() - ..() - reagents.add_reagent("sacid", 50) - update_icon() - -/obj/item/weapon/reagent_containers/glass/beaker/slime - New() - ..() - reagents.add_reagent("slimejelly", 50) - update_icon() - -/obj/item/weapon/reagent_containers/glass/bucket - desc = "It's a bucket." - name = "bucket" - icon = 'icons/obj/janitor.dmi' - icon_state = "bucket" - item_state = "bucket" - m_amt = 200 - g_amt = 0 - w_class = 3.0 - amount_per_transfer_from_this = 20 - possible_transfer_amounts = list(10,20,30,50,70) - volume = 70 - flags = FPRINT | OPENCONTAINER - - attackby(var/obj/D, mob/user as mob) - if(isprox(D)) - user << "You add [D] to [src]." - del(D) - user.put_in_hands(new /obj/item/weapon/bucket_sensor) - user.drop_from_inventory(src) - del(src) - -// vials are defined twice, what? -/* -/obj/item/weapon/reagent_containers/glass/beaker/vial - name = "vial" - desc = "Small glass vial. Looks fragile." - icon_state = "vial" - g_amt = 500 - volume = 15 - amount_per_transfer_from_this = 5 - possible_transfer_amounts = list(1,5,15) - flags = FPRINT | TABLEPASS | OPENCONTAINER */ - -/* -/obj/item/weapon/reagent_containers/glass/blender_jug - name = "Blender Jug" - desc = "A blender jug, part of a blender." - icon = 'icons/obj/kitchen.dmi' - icon_state = "blender_jug_e" - volume = 100 - - on_reagent_change() - switch(src.reagents.total_volume) - if(0) - icon_state = "blender_jug_e" - if(1 to 75) - icon_state = "blender_jug_h" - if(76 to 100) - icon_state = "blender_jug_f" - -/obj/item/weapon/reagent_containers/glass/canister //not used apparantly - desc = "It's a canister. Mainly used for transporting fuel." - name = "canister" - icon = 'icons/obj/tank.dmi' - icon_state = "canister" - item_state = "canister" - m_amt = 300 - g_amt = 0 - w_class = 4.0 - - amount_per_transfer_from_this = 20 - possible_transfer_amounts = list(10,20,30,60) - volume = 120 - flags = FPRINT - -/obj/item/weapon/reagent_containers/glass/dispenser - name = "reagent glass" - desc = "A reagent glass." - icon = 'icons/obj/chemical.dmi' - icon_state = "beaker0" - amount_per_transfer_from_this = 10 - flags = FPRINT | TABLEPASS | OPENCONTAINER - -/obj/item/weapon/reagent_containers/glass/dispenser/surfactant - name = "reagent glass (surfactant)" - icon_state = "liquid" - - New() - ..() - reagents.add_reagent("fluorosurfactant", 20) - -*/ diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index ac14453316..e861826e0f 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1340,6 +1340,28 @@ datum/design/nanopaste build_type = PROTOLATHE materials = list("$metal" = 7000, "$glass" = 7000) build_path = "/obj/item/stack/nanopaste" + +datum/design/bluespacebeaker + name = "bluespace beaker" + desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." + id = "bluespacebeaker" + req_tech = list("bluespace" = 2, "materials" = 6) + build_type = PROTOLATHE + materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500) + reliability_base = 76 + build_path = "/obj/item/weapon/reagent_containers/glass/beaker/bluespace" + category = "Misc" + +datum/design/noreactbeaker + name = "cryostasis beaker" + desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." + id = "splitbeaker" + req_tech = list("materials" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 3000) + reliability_base = 76 + build_path = "/obj/item/weapon/reagent_containers/glass/beaker/noreact" + category = "Misc" ///////////////////////////////////////// /////////////////Weapons///////////////// ///////////////////////////////////////// diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 60370fdc8cccac4794da8717f80237a5be51d960..fb6e7f8a92b344593c7e018f1adb856342cb8dcf 100644 GIT binary patch literal 32652 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