From c32bcf785aaf5ae508b10b8b5bd611079768cfc5 Mon Sep 17 00:00:00 2001 From: Woodratt Date: Wed, 25 Apr 2018 22:10:39 -0700 Subject: [PATCH] PoI Stage 0.5 Doing this in smaller bits - New random sif mob selector, peaceful animals - Drone lootpile (basic placeholder loot right now until we figure out how to give them proper drone loot) - New random spider mob selector, nurse spider and nurse hat spider (hat spider has 10 more health points and is a rare chance to spawn, woo) - New spacesuit random spawn, medical space suits - New Random Shotgun spawn - New random gun spawns - Fixed icon for random medicine spawn - Fixed broken icon for 44 magazines - Fixed Ice Cave dungeon walls being called 'steel' - Added new Crystal type, to avoid the SM style crystal from spawning in crystal PoIs --- code/game/objects/random/guns_and_ammo.dm | 278 +++++++++++++++++- code/game/objects/random/mapping.dm | 4 +- code/game/objects/random/misc.dm | 4 +- code/game/objects/random/mob.dm | 29 ++ code/game/objects/random/spacesuits.dm | 25 ++ code/game/objects/structures/loot_piles.dm | 39 +++ code/game/turfs/simulated/dungeon/wall.dm | 3 + .../simple_animal/animals/giant_spider.dm | 9 + .../projectiles/ammunition/magazines.dm | 2 +- .../projectiles/guns/projectile/shotgun.dm | 3 + code/modules/xenoarcheaology/finds/misc.dm | 14 + icons/obj/ammo.dmi | Bin 25616 -> 25635 bytes 12 files changed, 403 insertions(+), 7 deletions(-) diff --git a/code/game/objects/random/guns_and_ammo.dm b/code/game/objects/random/guns_and_ammo.dm index a910881a769..62dde5a3df0 100644 --- a/code/game/objects/random/guns_and_ammo.dm +++ b/code/game/objects/random/guns_and_ammo.dm @@ -1,6 +1,16 @@ +/obj/random/gun/random + name = "Random Weapon" + desc = "This is a random energy or ballistic weapon." + icon = 'icons/obj/gun.dmi' + icon_state = "energystun100" + +/obj/random/gun/random/item_to_spawn() + return pick(prob(5);/obj/random/energy, + prob(5);/obj/random/projectile/random) + /obj/random/energy name = "Random Energy Weapon" - desc = "This is a random security weapon." + desc = "This is a random weapon." icon = 'icons/obj/gun.dmi' icon_state = "energykill100" @@ -83,6 +93,18 @@ prob(2);/obj/item/weapon/gun/projectile/automatic/wt550, prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat) +/obj/random/projectile/shotgun + name = "Random Projectile Weapon" + desc = "This is a random projectile weapon." + icon = 'icons/obj/gun.dmi' + icon_state = "shotgun" + +/obj/random/projectile/item_to_spawn() + return pick(prob(4);/obj/item/weapon/gun/projectile/shotgun/doublebarrel, + prob(3);/obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn, + prob(3);/obj/item/weapon/gun/projectile/shotgun/pump, + prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat) + /obj/random/handgun name = "Random Handgun" desc = "This is a random sidearm." @@ -126,4 +148,256 @@ prob(4);/obj/item/ammo_magazine/m45/rubber, prob(4);/obj/item/ammo_magazine/m45/flash, prob(2);/obj/item/ammo_magazine/m9mmt, - prob(6);/obj/item/ammo_magazine/m9mmt/rubber) \ No newline at end of file + prob(6);/obj/item/ammo_magazine/m9mmt/rubber) + +/obj/random/projectile/random + name = "Random Projectile Weapon" + desc = "This is a random weapon." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/projectile/random/item_to_spawn() + return pick(prob(3);/obj/random/multiple/gun/projectile/handgun, + prob(2);/obj/random/multiple/gun/projectile/smg, + prob(2);/obj/random/multiple/gun/projectile/shotgun, + prob(1);/obj/random/multiple/gun/projectile/rifle) + +/obj/random/multiple/gun/projectile/smg + name = "random smg projectile gun" + desc = "Loot for PoIs." + icon = 'icons/obj/gun.dmi' + icon_state = "saber" + +/obj/random/multiple/gun/projectile/smg/item_to_spawn() + return pick( + prob(3);list( + /obj/item/weapon/gun/projectile/automatic/wt550, + /obj/item/ammo_magazine/m9mmt, + /obj/item/ammo_magazine/m9mmt + ), + prob(3);list( + /obj/item/weapon/gun/projectile/automatic/mini_uzi, + /obj/item/ammo_magazine/m45uzi, + /obj/item/ammo_magazine/m45uzi + ), + prob(3);list( + /obj/item/weapon/gun/projectile/automatic/tommygun, + /obj/item/ammo_magazine/m45tommy, + /obj/item/ammo_magazine/m45tommy + ), + prob(2);list( + /obj/item/weapon/gun/projectile/automatic/c20r, + /obj/item/ammo_magazine/m10mm, + /obj/item/ammo_magazine/m10mm + ), + prob(1);list( + /obj/item/weapon/gun/projectile/automatic/p90, + /obj/item/ammo_magazine/m9mmp90 + ) + ) + +/obj/random/multiple/gun/projectile/rifle + name = "random rifle projectile gun" + desc = "Loot for PoIs." + icon = 'icons/obj/gun.dmi' + icon_state = "carbine" + +//Concerns about the bullpup, but currently seems to be only a slightly stronger z8. But we shall see. + +/obj/random/multiple/gun/projectile/rifle/item_to_spawn() + return pick( + prob(2);list( + /obj/item/weapon/gun/projectile/automatic/sts35, + /obj/item/ammo_magazine/m545, + /obj/item/ammo_magazine/m545 + ), + prob(2);list( + /obj/item/weapon/gun/projectile/automatic/z8, + /obj/item/ammo_magazine/m762, + /obj/item/ammo_magazine/m762 + ), + prob(4);list( + /obj/item/weapon/gun/projectile/shotgun/pump/rifle, + /obj/item/ammo_magazine/clip/c762, + /obj/item/ammo_magazine/clip/c762 + ), + prob(3);list( + /obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever, + /obj/item/ammo_magazine/clip/c762, + /obj/item/ammo_magazine/clip/c762 + ), + prob(1);list( + /obj/item/weapon/gun/projectile/garand, + /obj/item/ammo_magazine/m762garand, + /obj/item/ammo_magazine/m762garand + ), + prob(1);list( + /obj/item/weapon/gun/projectile/automatic/bullpup, + /obj/item/ammo_magazine/m762, + /obj/item/ammo_magazine/m762 + ) + ) + +/obj/random/multiple/gun/projectile/handgun + name = "random handgun projectile gun" + desc = "Loot for PoIs." + icon = 'icons/obj/gun.dmi' + icon_state = "revolver" + +/obj/random/multiple/gun/projectile/handgun/item_to_spawn() + return pick( + prob(5);list( + /obj/item/weapon/gun/projectile/colt, + /obj/item/ammo_magazine/m45, + /obj/item/ammo_magazine/m45 + ), + prob(4);list( + /obj/item/weapon/gun/projectile/contender, + /obj/item/ammo_magazine/s357, + /obj/item/ammo_magazine/s357 + ), + prob(3);list( + /obj/item/weapon/gun/projectile/contender/tacticool, + /obj/item/ammo_magazine/s357, + /obj/item/ammo_magazine/s357 + ), + prob(2);list( + /obj/item/weapon/gun/projectile/deagle, + /obj/item/ammo_magazine/m44, + /obj/item/ammo_magazine/m44 + ), + prob(1);list( + /obj/item/weapon/gun/projectile/deagle/camo, + /obj/item/ammo_magazine/m44, + /obj/item/ammo_magazine/m44 + ), + prob(1);list( + /obj/item/weapon/gun/projectile/deagle/gold, + /obj/item/ammo_magazine/m44, + /obj/item/ammo_magazine/m44 + ), + prob(4);list( + /obj/item/weapon/gun/projectile/derringer, + /obj/item/ammo_magazine/s357, + /obj/item/ammo_magazine/s357 + ), + prob(5);list( + /obj/item/weapon/gun/projectile/luger, + /obj/item/ammo_magazine/m9mm/compact, + /obj/item/ammo_magazine/m9mm/compact + ), + prob(4);list( + /obj/item/weapon/gun/projectile/luger/brown, + /obj/item/ammo_magazine/m9mm/compact, + /obj/item/ammo_magazine/m9mm/compact + ), + prob(5);list( + /obj/item/weapon/gun/projectile/sec, + /obj/item/ammo_magazine/m45, + /obj/item/ammo_magazine/m45 + ), + prob(4);list( + /obj/item/weapon/gun/projectile/sec/wood, + /obj/item/ammo_magazine/m45, + /obj/item/ammo_magazine/m45 + ), + prob(5);list( + /obj/item/weapon/gun/projectile/p92x, + /obj/item/ammo_magazine/m9mm, + /obj/item/ammo_magazine/m9mm + ), + prob(4);list( + /obj/item/weapon/gun/projectile/p92x/brown, + /obj/item/ammo_magazine/m9mm, + /obj/item/ammo_magazine/m9mm + ), + prob(2);list( + /obj/item/weapon/gun/projectile/p92x/large, + /obj/item/ammo_magazine/m9mm/large, + /obj/item/ammo_magazine/m9mm/large + ), + prob(5);list( + /obj/item/weapon/gun/projectile/pistol, + /obj/item/ammo_magazine/m9mm/compact, + /obj/item/ammo_magazine/m9mm/compact + ), + prob(2);list( + /obj/item/weapon/gun/projectile/silenced, + /obj/item/ammo_magazine/m45, + /obj/item/ammo_magazine/m45 + ), + prob(2);list( + /obj/item/weapon/gun/projectile/revolver, + /obj/item/ammo_magazine/s357, + /obj/item/ammo_magazine/s357 + ), + prob(4);list( + /obj/item/weapon/gun/projectile/revolver/deckard, + /obj/item/ammo_magazine/s38, + /obj/item/ammo_magazine/s38 + ), + prob(4);list( + /obj/item/weapon/gun/projectile/revolver/detective, + /obj/item/ammo_magazine/s38, + /obj/item/ammo_magazine/s38 + ), + prob(2);list( + /obj/item/weapon/gun/projectile/revolver/judge, + /obj/item/ammo_magazine/clip/c12g, + /obj/item/ammo_magazine/clip/c12g, + /obj/item/ammo_magazine/clip/c12g + ), + prob(2);list( + /obj/item/weapon/gun/projectile/revolver/lemat, + /obj/item/ammo_magazine/s38, + /obj/item/ammo_magazine/s38, + /obj/item/ammo_magazine/clip/c12g + ), + prob(2);list( + /obj/item/weapon/gun/projectile/revolver/mateba, + /obj/item/ammo_magazine/s357, + /obj/item/ammo_magazine/s357 + ), + prob(2);list( + /obj/item/weapon/gun/projectile/revolver/webley, + /obj/item/ammo_magazine/s44, + /obj/item/ammo_magazine/s44 + ), + prob(1);list( + /obj/item/weapon/gun/projectile/revolver/webley/auto, + /obj/item/ammo_magazine/s44, + /obj/item/ammo_magazine/s44 + ) + ) + +/obj/random/multiple/gun/projectile/shotgun + name = "random shotgun projectile gun" + desc = "Loot for PoIs." + icon = 'icons/obj/gun.dmi' + icon_state = "shotgun" + +/obj/random/multiple/gun/projectile/shotgun/item_to_spawn() + return pick( + prob(4);list( + /obj/item/weapon/gun/projectile/shotgun/doublebarrel/pellet, + /obj/item/ammo_magazine/clip/c12g/pellet, + /obj/item/ammo_magazine/clip/c12g/pellet, + /obj/item/ammo_magazine/clip/c12g/pellet, + /obj/item/ammo_magazine/clip/c12g/pellet + ), + prob(3);list( + /obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn, + /obj/item/ammo_magazine/clip/c12g/pellet, + /obj/item/ammo_magazine/clip/c12g/pellet, + /obj/item/ammo_magazine/clip/c12g/pellet, + /obj/item/ammo_magazine/clip/c12g/pellet + ), + prob(3);list( + /obj/item/weapon/gun/projectile/shotgun/pump/slug, + /obj/item/weapon/storage/box/shotgunammo + ), + prob(1);list( + /obj/item/weapon/gun/projectile/shotgun/pump/combat, + /obj/item/weapon/storage/box/shotgunammo + ) + ) \ No newline at end of file diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index 57ff7acdcdd..aba62d08069 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -92,8 +92,8 @@ /obj/random/multiple/minevault name = "random vault loot" desc = "Loot for mine vaults." - icon = 'icons/misc/mark.dmi' - icon_state = "rup" + icon = 'icons/obj/storage.dmi' + icon_state = "crate" /obj/random/multiple/minevault/item_to_spawn() return pick( diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 29b597d460b..c918425221f 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -159,8 +159,8 @@ /obj/random/medical name = "Random Medicine" desc = "This is a random medical item." - icon = 'icons/obj/items.dmi' - icon_state = "advfirstaid" + icon = 'icons/obj/stacks.dmi' + icon_state = "traumakit" /obj/random/medical/item_to_spawn() return pick(prob(21);/obj/random/medical/lite, diff --git a/code/game/objects/random/mob.dm b/code/game/objects/random/mob.dm index 2043ef02400..3aefa9a84c5 100644 --- a/code/game/objects/random/mob.dm +++ b/code/game/objects/random/mob.dm @@ -74,6 +74,23 @@ prob(1);/mob/living/simple_animal/hostile/goose, prob(20);/mob/living/simple_animal/giant_crab) + +/obj/random/mob/sif/peaceful + name = "Random Peaceful Sif Animal" + desc = "This is a random peaceful cold weather animal." + icon_state = "penguin" + + mob_returns_home = 1 + mob_wander_distance = 12 + +/obj/random/mob/sif/peaceful/item_to_spawn() + return pick(prob(30);/mob/living/simple_animal/retaliate/diyaab, + prob(15);/mob/living/simple_animal/crab, + prob(15);/mob/living/simple_animal/penguin, + prob(15);/mob/living/simple_animal/mouse, + prob(15);/mob/living/simple_animal/corgi/tamaskan, + prob(20);/mob/living/simple_animal/giant_crab) + /obj/random/mob/sif/hostile name = "Random Hostile Sif Animal" desc = "This is a random hostile cold weather animal." @@ -97,6 +114,18 @@ prob(33);/mob/living/simple_animal/hostile/giant_spider/hunter, prob(45);/mob/living/simple_animal/hostile/giant_spider) +/obj/random/mob/spider/nurse + name = "Random Nurse Spider" + desc = "This is a random nurse spider." + icon_state = "nurse" + + mob_returns_home = 1 + mob_wander_distance = 4 + +/obj/random/mob/spider/nurse/item_to_spawn() + return pick(prob(22);/mob/living/simple_animal/hostile/giant_spider/nurse/hat, + prob(45);/mob/living/simple_animal/hostile/giant_spider/nurse) + /obj/random/mob/spider/mutant name = "Random Mutant Spider" desc = "This is a random mutated spider." diff --git a/code/game/objects/random/spacesuits.dm b/code/game/objects/random/spacesuits.dm index cb4ec6d4e9c..29bd799c5ca 100644 --- a/code/game/objects/random/spacesuits.dm +++ b/code/game/objects/random/spacesuits.dm @@ -97,6 +97,31 @@ ) ) +/obj/random/multiple/voidsuit/medical + name = "Random Mining Voidsuit" + desc = "This is a random mining voidsuit." + icon = 'icons/obj/clothing/suits.dmi' + icon_state = "rig-mining" + +/obj/random/multiple/voidsuit/medical/item_to_spawn() + return pick( + prob(5);list( + /obj/item/clothing/suit/space/void/medical, + /obj/item/clothing/head/helmet/space/void/medical + ), + prob(1);list( + /obj/item/clothing/suit/space/void/medical/alt, + /obj/item/clothing/head/helmet/space/void/medical/alt + ), + prob(3);list( + /obj/item/clothing/suit/space/void/medical/bio, + /obj/item/clothing/head/helmet/space/void/medical/bio + ), + prob(4);list( + /obj/item/clothing/suit/space/void/medical/emt, + /obj/item/clothing/head/helmet/space/void/medical/emt + ) + ) /obj/random/rigsuit name = "Random rigsuit" diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index 353dbe31a72..96416e02291 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -830,3 +830,42 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/mecha_parts/mecha_equipment/repair_droid, /obj/item/mecha_parts/mecha_equipment/teleporter ) + +/obj/structure/loot_pile/surface/drone + name = "drone wreckage" + desc = "The ruins of some unfortunate drone. Perhaps something is salvageable." + icon = 'icons/mob/animal.dmi' + icon_state = "drone_dead" + +// Since the actual drone loot is a bit stupid in how it is handled, this is a sparse and empty list with items I don't exactly want in it. But until we can get the proper items in . . . + + common_loot = list( + /obj/random/tool, + /obj/item/stack/cable_coil/random, + /obj/random/tank, + /obj/random/tech_supply/component, + /obj/item/stack/material/steel{amount = 25}, + /obj/item/stack/material/glass{amount = 10}, + /obj/item/stack/material/plasteel{amount = 5}, + /obj/item/weapon/cell, + /obj/item/weapon/material/shard + ) + + uncommon_loot = list( + /obj/item/weapon/cell/high, + /obj/item/robot_parts/robot_component/actuator, + /obj/item/robot_parts/robot_component/armour, + /obj/item/robot_parts/robot_component/binary_communication_device, + /obj/item/robot_parts/robot_component/camera, + /obj/item/robot_parts/robot_component/diagnosis_unit, + /obj/item/robot_parts/robot_component/radio + ) + + rare_loot = list( + /obj/item/weapon/cell/super, + /obj/item/borg/upgrade/restart, + /obj/item/borg/upgrade/jetpack, + /obj/item/borg/upgrade/tasercooler, + /obj/item/borg/upgrade/syndicate, + /obj/item/borg/upgrade/vtec + ) \ No newline at end of file diff --git a/code/game/turfs/simulated/dungeon/wall.dm b/code/game/turfs/simulated/dungeon/wall.dm index 156fddac6a6..176c10142c4 100644 --- a/code/game/turfs/simulated/dungeon/wall.dm +++ b/code/game/turfs/simulated/dungeon/wall.dm @@ -13,6 +13,9 @@ return /turf/simulated/wall/solidrock //for more stylish anti-cheese. + name = "solid rock" + desc = "This rock seems dense, impossible to drill." + description_info = "Probably not going to be able to drill or bomb your way through this, best to try and find a way around." icon_state = "bedrock" var/base_state = "bedrock" block_tele = TRUE diff --git a/code/modules/mob/living/simple_animal/animals/giant_spider.dm b/code/modules/mob/living/simple_animal/animals/giant_spider.dm index 439e401e089..26c35c1ba3c 100644 --- a/code/modules/mob/living/simple_animal/animals/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/animals/giant_spider.dm @@ -82,6 +82,15 @@ Nurse Family var/atom/cocoon_target var/egg_inject_chance = 5 +/mob/living/simple_animal/hostile/giant_spider/nurse/hat + desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes and a tiny nurse hat" + icon_state = "nursemed" + icon_living = "nursemed" + icon_dead = "nursemed_dead" + + maxHealth = 50 + health = 50 + /mob/living/simple_animal/hostile/giant_spider/nurse/queen desc = "Absolutely gigantic, this creature is horror itself." icon = 'icons/mob/64x64.dmi' diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 94cf0ab21ed..0c3c76caaf3 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -472,7 +472,7 @@ /obj/item/ammo_magazine/m44 name = "magazine (.44)" - icon_state = "44" + icon_state = "m44" origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE caliber = ".44" diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 087543091d7..183ead39d1a 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -41,6 +41,9 @@ update_icon() +/obj/item/weapon/gun/projectile/shotgun/pump/slug + ammo_type = /obj/item/ammo_casing/a12g + /obj/item/weapon/gun/projectile/shotgun/pump/combat name = "combat shotgun" desc = "Built for close quarters combat, the Hephaestus Industries KS-40 is widely regarded as a weapon of choice for repelling boarders. Uses 12g rounds." diff --git a/code/modules/xenoarcheaology/finds/misc.dm b/code/modules/xenoarcheaology/finds/misc.dm index 129033bf6e9..cc02a7f41b0 100644 --- a/code/modules/xenoarcheaology/finds/misc.dm +++ b/code/modules/xenoarcheaology/finds/misc.dm @@ -19,6 +19,20 @@ else set_light(3, 3, "#33CC33") +/obj/machinery/crystal/alt + name = "Crystal" + icon = 'icons/obj/mining.dmi' + icon_state = "crystal" + density = TRUE + anchored = TRUE + +/obj/machinery/crystal/alt/New() + if(prob(50)) + icon_state = "crystal2" + set_light(3, 3, "#CC00CC") + else + set_light(3, 3, "#33CC33") + /obj/machinery/crystal/ice //slightly more thematic crystals name = "ice crystal" desc = "A large crystalline ice formation." diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index ceea8bf2b7ecc9a53b4f7c1543523532599af852..7c7082c2ba2df5882d6aa43dcd98b3ffab1b7b48 100644 GIT binary patch delta 1165 zcmV;81akY3$N{6s0gxnrX?j#xbVOxyV{&P5bZKvH004NLt(n1Y+c*%0&-POY?X_B% z5=mPJUy2lq9MXf=cY~2=nJC8=L^|8#>Gwb-WnI|w8`zr-d>jpD$oYrl=i=+PzaPIB z4^NNt7dr-bIu`3f{v*XUv5MS95QUxGW zeK=U}L97geJw_IO#%w;{Wz&O3{XJF(%;<2B&HYWAv%@Kd;S`H?A(}5${pF95w?A`h zyrtym&UoI<90q59_C5p#LAwFWZMZA9A)b$*-FFhT{5ra0Z_CzwSMynCy?HIxh02%Dwq5~6TdDw3yp!8{1yE82KmfM&3ZSG4fJ|)b z6-e=7B2@q>UUIhe3ZSG4fG}Y{CzZ%Nc1b57;)ao{PSt_sKBWicN)2`cl3){|M(7vSsH2y(?mi?t& zd6T=edWDu^1!P$YsKN`VDhsII3Z#-s0aa1~RX>5$H7WQVrZxXHtu+vLtu+vLtu+vL ztu+vLtu+vTcda!Lcda!Lcda!L_b1c;GgveJf1s#$2jP+9TW6bqtK@DWKI(5fwn zfPya;L_ki(f(TfWOFr*Q1$ebYG|ecfN(FKf*2of?aR_XnLBBXTJ0%oqb`4VyM{kWL)G1QN$DsKoKhvom81 zyFkW!)XRwmeVu5~#EV46md#x>AE%t=OHoeqvCV046HYX^3nv=fh7%3$!-)nr;zaX#k0+wn zvK!C*HBmyz00)Dk@u&7jdvN?ky{P)uyW!ayUc)jL2wP6`VasXYDlF01GiwgxekUA% zc0A#@=l%@6%)YaC`0daA9d7&c)%V(r?pqJ6rM~qJc|uAYU%C>31Aa--{9GfP?D~tpOhq-|15D3*q+xSKaws feEa@TJUl(l{{vr1os(l)PjLVMAOK0Thy;jV`YarY delta 1165 zcmV;81akYM$N`YZ0gxnrR(e!ebVOxyV{&P5bZKvH004NL?U})j<0ue@&&g9*GuQFT z*g)b#E~_4``p|R8<{r^DvC%?e0qLFYr{4qa9wwut{z!A&TOxgwi@%_%fX~IBU;ldi zRy;gCE?=|{=5#DJ1^=U3F8(!r9E(lS)XT-F%`nFFCqxx>u_-=(eOfMh<3q72*m803 z%IWm`18AKinMSP23ZfW9)ezM{6o)7QQ4*q72t_i!>q#a|TKD#(dhPexP4Sf+!9@Tf zHH1-H3u0xM^f8j~GiLMoE}IrKYVWZ+VMeEWY#wgfT#Tm}rc*371#7?5&6i(B-u}$3 z@!BOv_sY_4<}f&av-cq|2-*!`Y{Ol#4e@*g?Y@(!l@ z6vpbIWOUYK^>A(X*ULq(t$Hmsg~*rBu2};~n~MNaw3EAL4NzPJpaATeH9&C@fHJXb z)*wX}6D|Ts(IscstO1IP02HQOv&JakdnKa_4Hv-YxPaz=2MG#9kPB$ZKx-7*6hJ|4 zzq58KY1P~Bterq>^jAaKsbG#-mRjEiFH_|e+@p5=op#N^YS?xLgZ8zXK;s`IXxU!c z%RjZr> z5xZVzfg zp?(%>prMW(I!H87#R7^4N2&rx3JgbT6-UY*M=B_PM~X2ARNBH6{lP8d`xcU63n{vV zg0qFU^`UuPQhc&34))8%bYd9Y>}>7LyoWx`=4#|bXV;1qD%^#espUPc2_y!7Qt z(&3nYIb>dlIfvUqHTpo26T5Q}=`vd9BGNY|j-GbwTtqGkoQptuXq}7TWJzdhX+u+6 zl?}cAr?vvTI+zz7^ou_JriKDIK>pu#bkbGI{ARd7^2H3&TFoFm^%(?b0_327#Gz9`XM#=yT*{LP@kG~#j4j){Xj-S7 zrgKnE)7s`VxCv((+=Vj@Zo`=d_u))~8*!%TxW|)ouVwGg^zBeWodV7SM`cglKiz2P z`*~Imoi)?5R&?pgSU|R%re(`%;07$w*z0Nz<9;U`c0A#@=k^Re$iB08_-)U_9d6ry z^VMhCj2=1*tfir|26;J39G$unN2j60(FrJVbm~bQopcgMr<=sl5lkE%yTpMndHciJ z+F;)39_eQsslFE@&;g?v#!i86hwpUB=!Nj}fUE9&F1~(yC?1|3m;V9EZJECNA8fDy f03ZNKL_t(|ob26ud=&M)KmOO`wh)rDt^{>oxtB4^