From d7c7cacc52c9cd88da826079ebe1bb0fca008e54 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Wed, 6 Mar 2024 08:25:38 -0500 Subject: [PATCH] Adds The Qani-Laaca Sensory Computer and mephedrone. Ready for review into merge (#23926) * Surely this will not have any critical balance implications * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * oops * marm fixes * fixes signal * how on earth did I do that * adds twitch to nanocalcium * respect armor, lowers throw * IPC can use, fuck up heartless people * no crawl slowdown / meth * *slightly* turns down the drug effect * renames it will deal with pr desc soon * finishes it * rnd version empable * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Nerfs twitches visuals, due to a reported novastation bug where the visuals would endlessly stack * Apply suggestions from code review Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * C-C-C-Changes * Epilepsy Warning: Drug has vibrant visual effects! * safety * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * removes twitch name, make mix explode * oops --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --- code/__DEFINES/dcs/signals.dm | 7 + code/__DEFINES/directions.dm | 3 + code/__DEFINES/misc_defines.dm | 4 +- code/__HELPERS/filters.dm | 4 +- code/__HELPERS/trait_helpers.dm | 2 + code/_globalvars/traits.dm | 4 +- code/_onclick/hud/human_hud.dm | 1 + code/datums/elements/shatters_when_thrown.dm | 56 ++++ code/datums/uplink_items/uplink_general.dm | 2 +- code/datums/uplink_items/uplink_traitor.dm | 12 + code/game/atoms.dm | 3 + .../effects/temporary_visuals/misc_visuals.dm | 10 +- code/game/objects/items/weapons/twohanded.dm | 2 + .../mob/living/carbon/human/human_defense.dm | 2 +- .../living/carbon/human/species/_species.dm | 2 +- code/modules/projectiles/projectile_base.dm | 5 +- .../reagents/chemistry/reagents/drugs.dm | 300 ++++++++++++++++++ .../reagents/chemistry/reagents/medicine.dm | 9 +- .../reagents/chemistry/reagents_datum.dm | 3 + .../reagents/chemistry/reagents_holder.dm | 1 + .../chemistry/recipes/drugs_reactions.dm | 15 + .../research/designs/medical_designs.dm | 15 + .../surgery/organs/augments_internal.dm | 128 ++++++++ code/modules/surgery/organs/autosurgeon.dm | 14 + code/modules/surgery/organs/organ_internal.dm | 1 + icons/mob/human_races/robotic.dmi | Bin 1538 -> 2505 bytes icons/obj/surgery.dmi | Bin 30742 -> 31650 bytes paradise.dme | 1 + 28 files changed, 589 insertions(+), 17 deletions(-) create mode 100644 code/datums/elements/shatters_when_thrown.dm diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index f680b67faab..4628c23ba2c 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -185,6 +185,10 @@ #define COMSIG_ATOM_HITBY "atom_hitby" /// Called when an atom is sharpened or dulled. #define COMSIG_ATOM_UPDATE_SHARPNESS "atom_update_sharpness" +///from base of atom/atom_prehit(obj/item/projectile/P): +#define COMSIG_ATOM_PREHIT "atom_prehit" + #define ATOM_PREHIT_SUCCESS (1<<0) + #define ATOM_PREHIT_FAILURE (1<<1) // Attack signals. These should share the returned flags, to standardize the attack chain. // The chain currently works like: @@ -774,6 +778,9 @@ #define COMSIG_HUMAN_CHECK_SHIELDS "human_check_shields" #define SHIELD_BLOCK (1<<0) +///from /mob/living/carbon/human/create_mob_hud() +#define COMSIG_HUMAN_CREATE_MOB_HUD "human_create_mob_hud" + // /datum/species signals ///from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species) diff --git a/code/__DEFINES/directions.dm b/code/__DEFINES/directions.dm index dfe3b2ecc78..7e4dd3c9769 100644 --- a/code/__DEFINES/directions.dm +++ b/code/__DEFINES/directions.dm @@ -28,3 +28,6 @@ #define IS_DIR_DIAGONAL(dir) (dir & (dir - 1)) /// returns TRUE if direction is cardinal and false if not #define IS_DIR_CARDINAL(dir) (!IS_DIR_DIAGONAL(dir)) + +/// Inverse direction, taking into account UP|DOWN if necessary. +#define REVERSE_DIR(dir) ( ((dir & 85) << 1) | ((dir & 170) >> 1) ) diff --git a/code/__DEFINES/misc_defines.dm b/code/__DEFINES/misc_defines.dm index a5e9e129d50..4dd81e1afd3 100644 --- a/code/__DEFINES/misc_defines.dm +++ b/code/__DEFINES/misc_defines.dm @@ -171,8 +171,8 @@ #define MUTANTRACE_LAYER 39 #define TAIL_UNDERLIMBS_LAYER 38 //Tail split-rendering. #define LIMBS_LAYER 37 -#define INTORGAN_LAYER 36 -#define MARKINGS_LAYER 35 +#define MARKINGS_LAYER 36 +#define INTORGAN_LAYER 35 #define UNDERWEAR_LAYER 34 #define MUTATIONS_LAYER 33 #define H_DAMAGE_LAYER 32 diff --git a/code/__HELPERS/filters.dm b/code/__HELPERS/filters.dm index b9a89f4d33a..9550f4c9bfc 100644 --- a/code/__HELPERS/filters.dm +++ b/code/__HELPERS/filters.dm @@ -22,15 +22,13 @@ GLOBAL_LIST_INIT(master_filter_info, list( "size" = 1 ) ), - /* Not supported because making a proper matrix editor on the frontend would be a huge dick pain. - Uncomment if you ever implement it + // According to TG, this is not implimented. Anyway, let's use this! "color" = list( "defaults" = list( "color" = matrix(), "space" = FILTER_COLOR_RGB ) ), - */ "displace" = list( "defaults" = list( "x" = 0, diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm index e3feed27c70..d8cd8a104c5 100644 --- a/code/__HELPERS/trait_helpers.dm +++ b/code/__HELPERS/trait_helpers.dm @@ -223,6 +223,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CAN_VIEW_HEALTH "can_view_health" // Also used for /Stat #define TRAIT_MAGPULSE "magnetificent" // Used for anything that is magboot related #define TRAIT_NOSLIP "noslip" +#define TRAIT_MEPHEDRONE_ADAPTED "mephedrone_adapted" // Trait that changes the ending effects of twitch leaving your system +#define TRAIT_NOKNOCKDOWNSLOWDOWN "noknockdownslowdown" //If this person has this trait, they are not slowed via knockdown, but they can be hit by bullets like a self knockdown //***** MIND TRAITS *****/ #define TRAIT_HOLY "is_holy" // The mob is holy in regards to religion diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 036e141d9ed..0d3ded12c71 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -87,7 +87,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BADASS" = TRAIT_BADASS, "TRAIT_FORCED_STANDING" = TRAIT_FORCED_STANDING, "TRAIT_NOSLIP" = TRAIT_NOSLIP, - "TRAIT_MAGPULSE" = TRAIT_MAGPULSE + "TRAIT_MAGPULSE" = TRAIT_MAGPULSE, + "TRAIT_MEPHEDRONE_ADAPTED" = TRAIT_MEPHEDRONE_ADAPTED, + "TRAIT_NOKNOCKDOWNSLOWDOWN" = TRAIT_NOKNOCKDOWNSLOWDOWN ), /datum/mind = list( diff --git a/code/_onclick/hud/human_hud.dm b/code/_onclick/hud/human_hud.dm index 67c9e2e6621..c69e78f6404 100644 --- a/code/_onclick/hud/human_hud.dm +++ b/code/_onclick/hud/human_hud.dm @@ -52,6 +52,7 @@ /mob/living/carbon/human/create_mob_hud() if(client && !hud_used) hud_used = new /datum/hud/human(src, ui_style2icon(client.prefs.UI_style), client.prefs.UI_style_color, client.prefs.UI_style_alpha) + SEND_SIGNAL(src, COMSIG_HUMAN_CREATE_MOB_HUD) /datum/hud/human var/hud_alpha = 255 diff --git a/code/datums/elements/shatters_when_thrown.dm b/code/datums/elements/shatters_when_thrown.dm new file mode 100644 index 00000000000..441d365e58c --- /dev/null +++ b/code/datums/elements/shatters_when_thrown.dm @@ -0,0 +1,56 @@ +/** + * When attached to something, will make that thing shatter into shards on throw impact or z level falling + */ +/datum/element/shatters_when_thrown + element_flags = ELEMENT_BESPOKE + + /// What type of item is spawned as a 'shard' once the shattering happens + var/obj/item/shard_type + /// How many shards total are made when the thing we're attached to shatters + var/number_of_shards + /// What sound plays when the thing we're attached to shatters + var/shattering_sound + +/datum/element/shatters_when_thrown/Attach(datum/target, shard_type = /obj/item/shard, number_of_shards = 5, shattering_sound = "shatter") + . = ..() + + if(!ismovable(target)) + return ELEMENT_INCOMPATIBLE + + src.shard_type = shard_type + src.number_of_shards = number_of_shards + src.shattering_sound = shattering_sound + + RegisterSignal(target, COMSIG_MOVABLE_IMPACT, PROC_REF(on_throw_impact)) + +/datum/element/shatters_when_thrown/Detach(datum/target) + . = ..() + + UnregisterSignal(target,COMSIG_MOVABLE_IMPACT) + +/// Tells the parent to shatter if we are thrown and impact something +/datum/element/shatters_when_thrown/proc/on_throw_impact(datum/source, atom/hit_atom) + SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(shatter), source, hit_atom) + +/// Handles the actual shattering part, throwing shards of whatever is defined on the component everywhere +/datum/element/shatters_when_thrown/proc/shatter(atom/movable/source, atom/hit_atom) + var/generator/scatter_gen = generator("circle", 0, 48, NORMAL_RAND) + var/scatter_turf = get_turf(hit_atom) + + for(var/obj/item/scattered_item as anything in source.contents) + scattered_item.forceMove(scatter_turf) + var/list/scatter_vector = scatter_gen.Rand() + scattered_item.pixel_x = scatter_vector[1] + scattered_item.pixel_y = scatter_vector[2] + + for(var/iteration in 1 to number_of_shards) + var/obj/item/shard = new shard_type(scatter_turf) + shard.pixel_x = rand(-6, 6) + shard.pixel_y = rand(-6, 6) + playsound(scatter_turf, shattering_sound, 60, TRUE) + if(isobj(source)) + var/obj/obj_source = source + obj_source.deconstruct(FALSE) + return + qdel(source) diff --git a/code/datums/uplink_items/uplink_general.dm b/code/datums/uplink_items/uplink_general.dm index 43713e9bdd0..9e9ae2b023d 100644 --- a/code/datums/uplink_items/uplink_general.dm +++ b/code/datums/uplink_items/uplink_general.dm @@ -827,7 +827,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "Binyat Wireless Hacking System Autoimplanter" desc = "This implant will allow you to wirelessly emag from a distance. However, it will slightly burn you \ on use, and will be quite visual as you are emaging the object. \ - Will not show on unupgraded body scanners." + Will not show on unupgraded body scanners. Incompatible with the Qani-Laaca Sensory Computer." reference = "HKR" item = /obj/item/autosurgeon/organ/syndicate/hackerman_deck cost = 30 // Probably slightly less useful than an emag with heat / cooldown, but I am not going to make it cheaper or everyone picks it over emag diff --git a/code/datums/uplink_items/uplink_traitor.dm b/code/datums/uplink_items/uplink_traitor.dm index e13bdf4b7b8..db79ccb1a6c 100644 --- a/code/datums/uplink_items/uplink_traitor.dm +++ b/code/datums/uplink_items/uplink_traitor.dm @@ -529,6 +529,18 @@ surplus = 0 cant_discount = TRUE +/datum/uplink_item/cyber_implants/sensory_enhancer + name = "Qani-Laaca Sensory Computer Autoimplanter" + desc = "Epilepsy Warning: Drug has vibrant visual effects! \ + This spinal implant will inject mephedrone into your system, a powerful stimulant that causes slight heart damage.\ + This stimulant will provide faster movement speed, slight pain resistance, immunity to crawling slowdown, and faster attack speed, though no antistun.\ + Overdosing will cause massive heart damage, but will allow the user to dodge bullets for a minute and attack even faster.\ + Two minute normal uptime, 5 minute cooldown, unlimited uses. Incompatible with the Binyat Wireless Hacking System." + reference = "QLSC" + item = /obj/item/autosurgeon/organ/syndicate/sensory_enhancer + cost = 40 + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) //No, nukies do not get to dodge bullets. + /datum/uplink_item/badass/syndiecards name = "Syndicate Playing Cards" desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, making them lethal weapons both when wielded as a blade and when thrown. \ diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 69c272f8464..7d8b6506423 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1291,3 +1291,6 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) if(caller && (caller.pass_flags & pass_flags_self)) return TRUE . = !density + +/atom/proc/atom_prehit(obj/item/projectile/P) + return SEND_SIGNAL(src, COMSIG_ATOM_PREHIT, P) diff --git a/code/game/objects/effects/temporary_visuals/misc_visuals.dm b/code/game/objects/effects/temporary_visuals/misc_visuals.dm index 334c9bfe64f..aec954ae085 100644 --- a/code/game/objects/effects/temporary_visuals/misc_visuals.dm +++ b/code/game/objects/effects/temporary_visuals/misc_visuals.dm @@ -130,17 +130,19 @@ desc = "It's a decoy!" duration = 15 -/obj/effect/temp_visual/decoy/New(loc, atom/mimiced_atom) - ..() +/obj/effect/temp_visual/decoy/Initialize(mapload, atom/mimiced_atom) + . = ..() alpha = initial(alpha) if(mimiced_atom) name = mimiced_atom.name appearance = mimiced_atom.appearance + invisibility = mimiced_atom.invisibility + alpha = mimiced_atom.alpha setDir(mimiced_atom.dir) mouse_opacity = MOUSE_OPACITY_TRANSPARENT -/obj/effect/temp_visual/decoy/fading/New(loc, atom/mimiced_atom) - ..() +/obj/effect/temp_visual/decoy/fading/Initialize(mapload, atom/mimiced_atom) + . = ..() animate(src, alpha = 0, time = duration) /obj/effect/temp_visual/decoy/fading/threesecond diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 5e76d2e44f9..eec8b373fca 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -523,6 +523,8 @@ return if(!isliving(target)) //no buff from attacking inanimate objects return + if(user.reagents.get_reagent_amount("mephedrone") > 15) // No patrick, you do not get to be chainsaw stun immune and bullet immune at once + return if(target.stat != DEAD) //no buff from attacking dead targets user.apply_status_effect(STATUS_EFFECT_CHAINSAW_SLAYING) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 766fb4ec678..823e2978952 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -800,5 +800,5 @@ emp_act return TRUE /mob/living/carbon/human/projectile_hit_check(obj/item/projectile/P) - return HAS_TRAIT(src, TRAIT_FLOORED) && !density // hit mobs that are intentionally lying down to prevent combat crawling. + return (HAS_TRAIT(src, TRAIT_FLOORED) || HAS_TRAIT(src, TRAIT_NOKNOCKDOWNSLOWDOWN)) && !density // hit mobs that are intentionally lying down to prevent combat crawling. diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index ff78b9ddd8e..c3dee83a812 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -284,7 +284,7 @@ if(!has_gravity(H)) return - if(!IS_HORIZONTAL(H)) + if(!IS_HORIZONTAL(H) || (HAS_TRAIT(H, TRAIT_NOKNOCKDOWNSLOWDOWN) && !H.resting)) //You are slowed if crawling without noknockdownslowdown. However, if you are self crawling, you don't ignore it, so no self crawling to not drop items if(HAS_TRAIT(H, TRAIT_GOTTAGOFAST)) . -= 1 else if(HAS_TRAIT(H, TRAIT_GOTTAGONOTSOFAST)) diff --git a/code/modules/projectiles/projectile_base.dm b/code/modules/projectiles/projectile_base.dm index 178f037096d..a975f1e8029 100644 --- a/code/modules/projectiles/projectile_base.dm +++ b/code/modules/projectiles/projectile_base.dm @@ -279,7 +279,10 @@ var/turf/target_turf = get_turf(A) prehit(A) - var/permutation = A.bullet_act(src, def_zone) // searches for return value, could be deleted after run so check A isn't null + var/pre_permutation = A.atom_prehit(src) + var/permutation = -1 + if(pre_permutation != ATOM_PREHIT_FAILURE) + permutation = A.bullet_act(src, def_zone) // searches for return value, could be deleted after run so check A isn't null if(permutation == -1 || forcedodge)// the bullet passes through a dense object! if(forcedodge) forcedodge -= 1 diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm index da1e5407c06..4f5eaba5b80 100644 --- a/code/modules/reagents/chemistry/reagents/drugs.dm +++ b/code/modules/reagents/chemistry/reagents/drugs.dm @@ -802,6 +802,306 @@ animate(pm_controller.controlled_planes[key], transform = matrix(), time = 5, easing = QUAD_EASING) ..() +// Mephedrone. + +#define CONSTANT_DOSE_SAFE_LIMIT 60 +#define CONSTANT_DOSE_DEATH_LIMIT 600 + +#define MEPHEDRONE_SCREEN_FILTER "mephedrone_screen_filter" +#define MEPHEDRONE_SCREEN_BLUR "mephedrone_screen_blur" + +#define MEPHEDRONE_BLUR_EFFECT "mephedrone_dodge_blur" +#define MEPHEDRONE_OVERDOSE_BLUR_EFFECT "mephedrone_overdose_blur" + +// Mephedrone drug, makes the takers of it faster and able to dodge bullets while in their system, to potentially bad side effects +/datum/reagent/mephedrone + name = "Mephedrone" + id = "mephedrone" + description = "A drug originally developed by and for plutonians to assist them during raids. \ + Does not see wide use due to the whole reality-disassociation and heart disease thing afterwards. \ + Can be intentionally overdosed to increase the drug's effects." + reagent_state = LIQUID + color = "#c22a44" + taste_description = "television static" + metabolization_rate = 0.375 * REAGENTS_METABOLISM + overdose_threshold = 15 + addiction_chance = 3 + addiction_threshold = 15 + shock_reduction = 40 // Slight shock reduction to assist with damage / disablers + allowed_overdose_process = TRUE + process_flags = ORGANIC | SYNTHETIC + /// How much time has the drug been in them? + var/constant_dose_time = 0 + /// Keeps track of how many chemicals we are delaying the changeling by. + var/changeling_chemical_tracker = 0 + + +/datum/reagent/mephedrone/on_mob_add(mob/living/carbon/L) + ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + ADD_TRAIT(L, TRAIT_NOKNOCKDOWNSLOWDOWN, id) + L.next_move_modifier -= 0.3 // For the duration of this you move and attack faster + + L.sound_environment_override = SOUND_ENVIRONMENT_DIZZY + + RegisterSignal(L, COMSIG_MOVABLE_MOVED, PROC_REF(on_movement)) + RegisterSignal(L, COMSIG_HUMAN_CREATE_MOB_HUD, PROC_REF(no_hud_cheese)) + + if(!L.hud_used) + return + + var/atom/movable/plane_master_controller/game_plane_master_controller = L.hud_used?.plane_master_controllers[PLANE_MASTERS_GAME] + + var/static/list/col_filter_green = list(0.5,0,0,0, 0,1,0,0, 0,0,0.5,0, 0,0,0,1) + + game_plane_master_controller.add_filter(MEPHEDRONE_SCREEN_FILTER, 10, color_matrix_filter(col_filter_green, FILTER_COLOR_RGB)) + + game_plane_master_controller.add_filter(MEPHEDRONE_SCREEN_BLUR, 1, list("type" = "radial_blur", "size" = 0.1)) + + if(!ischangeling(L) || HAS_TRAIT(L, TRAIT_MEPHEDRONE_ADAPTED)) + return + var/datum/antagonist/changeling/cling = L.mind.has_antag_datum(/datum/antagonist/changeling) + cling.chem_recharge_slowdown += 1 + changeling_chemical_tracker += 1 + +/datum/reagent/mephedrone/on_mob_delete(mob/living/carbon/L) + REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + REMOVE_TRAIT(L, TRAIT_NOKNOCKDOWNSLOWDOWN, id) + var/overdosed = (id in L.reagents.overdose_list()) + L.next_move_modifier += (overdosed ? 0.5 : 0.3) + + L.sound_environment_override = NONE + + UnregisterSignal(L, COMSIG_MOVABLE_MOVED) + if(overdosed) + UnregisterSignal(L, COMSIG_ATOM_PREHIT) + + if(ischangeling(L)) + var/datum/antagonist/changeling/cling = L.mind.has_antag_datum(/datum/antagonist/changeling) + cling.chem_recharge_slowdown -= changeling_chemical_tracker + changeling_chemical_tracker = 0 + + if(constant_dose_time < CONSTANT_DOSE_SAFE_LIMIT) // Anything less than this and you'll come out fiiiine, aside from a big hit of stamina damage + L.visible_message( + "[L] suddenly slows from their inhuman speeds, coming back with a wicked nosebleed!", + "You suddenly slow back to normal, a stream of blood gushing from your nose!") + L.adjustStaminaLoss(constant_dose_time) + else // Much longer than that however, and you're not gonna have a good day + L.visible_message( + "[L] suddenly snaps back from their inhumans speeds, coughing up a spray of blood!", + "As you snap back to normal speed you cough up a worrying amount of blood. You feel like you've just been run over by a power loader.") + L.custom_emote(EMOTE_VISIBLE, "coughs up blood!") + L.bleed(25) + L.apply_damage(max(constant_dose_time / 3, 60), STAMINA) + L.KnockDown((constant_dose_time / 15) SECONDS) // a minute is a 4 second knockdown, 2 is 8, etc + if(!HAS_TRAIT(L, TRAIT_MEPHEDRONE_ADAPTED) || constant_dose_time >= CONSTANT_DOSE_DEATH_LIMIT) //If you are going infinite with mito and you run out, you deserve this even with an implant + if(ishuman(L)) + var/mob/living/carbon/human/H = L + var/datum/organ/heart/datum_heart = H.get_int_organ_datum(ORGAN_DATUM_HEART) + if(datum_heart) + var/obj/item/organ/internal/our_heart = datum_heart.linked_organ + our_heart.receive_damage(0.15 * constant_dose_time, TRUE) // Basically you might die. Especially if you are a slime. + else + handle_heartless(L, 0.15 * constant_dose_time) + + + if(!L.hud_used) + return + + var/atom/movable/plane_master_controller/game_plane_master_controller = L.hud_used?.plane_master_controllers[PLANE_MASTERS_GAME] + + game_plane_master_controller.remove_filter(MEPHEDRONE_SCREEN_FILTER) + game_plane_master_controller.remove_filter(MEPHEDRONE_SCREEN_BLUR) + + +/// Leaves an afterimage behind the mob when they move +/datum/reagent/mephedrone/proc/on_movement(mob/living/carbon/L, atom/old_loc) + SIGNAL_HANDLER + if(HAS_TRAIT(L, TRAIT_IMMOBILIZED)) //No, dead people floating through space do not need afterimages + return NONE + var/overdosed = (id in L.reagents.overdose_list()) + new /obj/effect/temp_visual/decoy/mephedrone_afterimage(old_loc, L, overdosed ? 1.25 SECONDS : 0.75 SECONDS) + +/// Tries to dodge incoming bullets if we aren't disabled for any reasons +/datum/reagent/mephedrone/proc/dodge_bullets(mob/living/carbon/human/source, obj/item/projectile/hitting_projectile) + SIGNAL_HANDLER + + if(HAS_TRAIT(source, TRAIT_IMMOBILIZED)) + return NONE + source.visible_message( + "[source] effortlessly dodges [hitting_projectile]!", + "You effortlessly evade [hitting_projectile]!", + ) + playsound(source, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) + source.add_filter(MEPHEDRONE_BLUR_EFFECT, 2, gauss_blur_filter(5)) + addtimer(CALLBACK(source, TYPE_PROC_REF(/atom, remove_filter), MEPHEDRONE_BLUR_EFFECT), 0.5 SECONDS) + return ATOM_PREHIT_FAILURE + + +/// So. If a person changes up their hud settings (Changing their ui theme), the visual effects for this reagent will break, and they will be able to see easily. This 3 part proc waits for the plane controlers to be setup, and over 2 other procs, rengages the visuals +/datum/reagent/mephedrone/proc/no_hud_cheese(mob/living/carbon/L) + SIGNAL_HANDLER + addtimer(CALLBACK(src, PROC_REF(no_hud_cheese_2), L), 2 SECONDS) //Calling it instantly will not work, need to give it a moment + +/// This part of the anticheese sets up the basic visual effects normally setup when the reagent gets into your system. +/datum/reagent/mephedrone/proc/no_hud_cheese_2(mob/living/carbon/L) //Basically if you change the UI you would remove the visuals. This fixes that. + var/atom/movable/plane_master_controller/game_plane_master_controller = L.hud_used?.plane_master_controllers[PLANE_MASTERS_GAME] + game_plane_master_controller.remove_filter(MEPHEDRONE_SCREEN_FILTER) + game_plane_master_controller.remove_filter(MEPHEDRONE_SCREEN_BLUR) + + var/static/list/col_filter_green = list(0.5,0,0,0, 0,1,0,0, 0,0,0.5,0, 0,0,0,1) + + game_plane_master_controller.add_filter(MEPHEDRONE_SCREEN_FILTER, 10, color_matrix_filter(col_filter_green, FILTER_COLOR_RGB)) + + game_plane_master_controller.add_filter(MEPHEDRONE_SCREEN_BLUR, 1, list("type" = "radial_blur", "size" = 0.1)) + + var/overdosed = (id in L.reagents.overdose_list()) + if(overdosed) + addtimer(CALLBACK(src, PROC_REF(no_hud_cheese_3), L), 1 SECONDS) //still needs a moment + +///This part sets up the OD visual effects. +/datum/reagent/mephedrone/proc/no_hud_cheese_3(mob/living/carbon/L) + var/atom/movable/plane_master_controller/game_plane_master_controller = L?.hud_used.plane_master_controllers[PLANE_MASTERS_GAME] + var/list/col_filter_ourple = list(1,0,0,0, 0,0.5,0,0, 0,0,1,0, 0,0,0,1) + + for(var/filter in game_plane_master_controller.get_filters(MEPHEDRONE_SCREEN_FILTER)) + animate(filter, loop = -1, color = col_filter_ourple, time = 4 SECONDS, easing = BOUNCE_EASING) + +/datum/reagent/mephedrone/on_mob_life(mob/living/carbon/L) + . = ..() + + constant_dose_time += 2 + + if(ishuman(L)) + var/heart_damage = 0.1 + if(L.reagents.has_reagent("methamphetamine")) //We want people to use something other than meth, since meths downside is knockdowns / be orginal + heart_damage = 1.1 + var/mob/living/carbon/human/H = L + var/datum/organ/heart/datum_heart = H.get_int_organ_datum(ORGAN_DATUM_HEART) + if(datum_heart) + var/obj/item/organ/internal/our_heart = datum_heart.linked_organ + our_heart.receive_damage(heart_damage, TRUE) + else + handle_heartless(L, heart_damage) + +/datum/reagent/mephedrone/overdose_start(mob/living/L) + + RegisterSignal(L, COMSIG_ATOM_PREHIT, PROC_REF(dodge_bullets)) + + L.next_move_modifier -= 0.2 // Overdosing makes you a liiitle faster but you know has some really bad consequences + if(ischangeling(L)) + var/datum/antagonist/changeling/cling = L.mind.has_antag_datum(/datum/antagonist/changeling) + cling.chem_recharge_slowdown += 1 + changeling_chemical_tracker += 1 + + if(!L.hud_used) + return + + var/atom/movable/plane_master_controller/game_plane_master_controller = L?.hud_used.plane_master_controllers[PLANE_MASTERS_GAME] + + var/list/col_filter_ourple = list(1,0,0,0, 0,0.5,0,0, 0,0,1,0, 0,0,0,1) + + for(var/filter in game_plane_master_controller.get_filters(MEPHEDRONE_SCREEN_FILTER)) + animate(filter, loop = -1, color = col_filter_ourple, time = 4 SECONDS, easing = BOUNCE_EASING) + ..() + + +/datum/reagent/mephedrone/overdose_end(mob/living/L) + UnregisterSignal(L, COMSIG_ATOM_PREHIT) + + L.next_move_modifier += 0.2 + + if(ischangeling(L)) + var/datum/antagonist/changeling/cling = L.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling_chemical_tracker > 0) //Just in case this gets called somehow after on_remove is done + cling.chem_recharge_slowdown -= 1 + changeling_chemical_tracker -= 1 + + if(!L.hud_used) + return + + var/atom/movable/plane_master_controller/game_plane_master_controller = L.hud_used?.plane_master_controllers[PLANE_MASTERS_GAME] //Restart the base filters. + + game_plane_master_controller.remove_filter(MEPHEDRONE_SCREEN_FILTER) + + game_plane_master_controller.remove_filter(MEPHEDRONE_SCREEN_BLUR) + + var/static/list/col_filter_green = list(0.5,0,0,0, 0,1,0,0, 0,0,0.5,0, 0,0,0,1) + + game_plane_master_controller.add_filter(MEPHEDRONE_SCREEN_FILTER, 10, color_matrix_filter(col_filter_green, FILTER_COLOR_RGB)) + + game_plane_master_controller.add_filter(MEPHEDRONE_SCREEN_BLUR, 1, list("type" = "radial_blur", "size" = 0.1)) + + +/datum/reagent/mephedrone/overdose_process(mob/living/carbon/L) + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + var/datum/organ/heart/datum_heart = H.get_int_organ_datum(ORGAN_DATUM_HEART) + if(datum_heart) + var/obj/item/organ/internal/our_heart = datum_heart.linked_organ + our_heart.receive_damage(0.9, TRUE) + else + handle_heartless(L, 0.9) + + + if(prob(5)) + L.custom_emote(EMOTE_VISIBLE, "coughs up blood!") + L.bleed(5) + + if(prob(10)) + L.add_filter(MEPHEDRONE_OVERDOSE_BLUR_EFFECT, 2, phase_filter(8)) + addtimer(CALLBACK(L, TYPE_PROC_REF(/atom, remove_filter), MEPHEDRONE_OVERDOSE_BLUR_EFFECT), 0.5 SECONDS) + + var/update_flags = STATUS_UPDATE_NONE + L.Jitter(2.2 SECONDS) // Slowly will build up over time due to low process rate + update_flags |= L.adjustToxLoss(1 * REAGENTS_EFFECT_MULTIPLIER, FALSE) + return ..() | update_flags + +//This proc is for IPCS, skeletons, golems, and people with corazone. IPCS are treated lightly, power loss and brain damage. +//IPC brain damage gets an increase with liquid solder, so it matters +//Otherwise, the user hallucinates a bunch, and as well takes stamina damage. This will block passive stamina regen, and most likely require antistun drugs to use as well + +/datum/reagent/mephedrone/proc/handle_heartless(mob/living/carbon/L, damage_input) + if(ismachineperson(L)) + L.adjust_nutrition(-damage_input * 7.5) + if(damage_input == 0.9) //This is the input from the OD + L.adjustBrainLoss(1.75) + if(L.reagents.has_reagent("liquid_solder")) + L.adjustBrainLoss(2.75) + else //Corazone or skeletons. We go hard on them. + L.Hallucinate(damage_input * 50 SECONDS) + L.apply_damage(damage_input * 3, STAMINA) + +/// This filter proc makes a visual effect where the object is split into fragments, with vertical lines cut out of them. It will appear as 2 seperate things are made of the one object that was cut out +/proc/phase_filter(size) + . = list("type" = "wave") + .["x"] = 1 + if(!isnull(size)) + .["size"] = size + + +// Temp visual that changes color for that bootleg sandevistan effect +/obj/effect/temp_visual/decoy/mephedrone_afterimage + duration = 0.75 SECONDS + /// The color matrix it should be at spawn + var/list/matrix_start = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0,0.1,0.4,0) + /// The color matrix it should be by the time it despawns + var/list/matrix_end = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0,0.5,0,0) + +/obj/effect/temp_visual/decoy/mephedrone_afterimage/Initialize(mapload, atom/mimiced_atom, our_duration = 0.75 SECONDS) + duration = our_duration + . = ..() + color = matrix_start + animate(src, color = matrix_end, time = duration, easing = EASE_OUT) + animate(src, alpha = 0, time = duration, easing = EASE_OUT) + +#undef MEPHEDRONE_SCREEN_FILTER +#undef MEPHEDRONE_SCREEN_BLUR + +#undef MEPHEDRONE_BLUR_EFFECT +#undef MEPHEDRONE_OVERDOSE_BLUR_EFFECT + + ////////////////////////////// // Synth-Drugs // ////////////////////////////// diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 7057b02f99b..9ba2163d191 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -101,10 +101,13 @@ /datum/reagent/medicine/mitocholide/on_mob_life(mob/living/M) if(ishuman(M)) var/mob/living/carbon/human/H = M + var/heal_modifier = 0.4 + if(M.reagents.has_reagent("mephedrone")) + heal_modifier -= 0.3 //This lowers the healing to 0.1. As such, you need time off the drug to heal heart damage, but can be on the drug endlessly when not oding IF you keep your supply going. //Mitocholide is hard enough to get, it's probably fair to make this all internal organs for(var/obj/item/organ/internal/I in H.internal_organs) - I.heal_internal_damage(0.4) + I.heal_internal_damage(heal_modifier) return ..() /datum/reagent/medicine/mitocholide/reaction_obj(obj/O, volume) @@ -1213,7 +1216,7 @@ color = "#FFDCFF" taste_description = "stability" harmless = FALSE - var/list/drug_list = list("crank", "methamphetamine", "space_drugs", "synaptizine", "psilocybin", "ephedrine", "epinephrine", "stimulants", "stimulative_agent", "bath_salts", "lsd", "thc") + var/list/drug_list = list("crank", "methamphetamine", "space_drugs", "synaptizine", "psilocybin", "ephedrine", "epinephrine", "stimulants", "stimulative_agent", "bath_salts", "lsd", "thc", "mephedrone") /datum/reagent/medicine/haloperidol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1467,7 +1470,7 @@ metabolization_rate = 0.5 harmless = FALSE taste_description = "2 minutes of suffering" - var/list/stimulant_list = list("methamphetamine", "crank", "bath_salts", "stimulative_agent", "stimulants") + var/list/stimulant_list = list("methamphetamine", "crank", "bath_salts", "stimulative_agent", "stimulants", "mephedrone") /datum/reagent/medicine/nanocalcium/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE diff --git a/code/modules/reagents/chemistry/reagents_datum.dm b/code/modules/reagents/chemistry/reagents_datum.dm index fa5aa62e884..90cb9a79e57 100644 --- a/code/modules/reagents/chemistry/reagents_datum.dm +++ b/code/modules/reagents/chemistry/reagents_datum.dm @@ -205,6 +205,9 @@ /datum/reagent/proc/overdose_start(mob/living/M) return +/datum/reagent/proc/overdose_end(mob/living/M) + return + /datum/reagent/proc/addiction_act_stage1(mob/living/M) return STATUS_UPDATE_NONE diff --git a/code/modules/reagents/chemistry/reagents_holder.dm b/code/modules/reagents/chemistry/reagents_holder.dm index 9be2cdc7df8..3a08aa5fd75 100644 --- a/code/modules/reagents/chemistry/reagents_holder.dm +++ b/code/modules/reagents/chemistry/reagents_holder.dm @@ -352,6 +352,7 @@ update_flags |= R.on_mob_overdose_life(M) //We want to drain reagents but not do the entire mob life. if(R.volume < R.overdose_threshold && R.overdosed) R.overdosed = FALSE + R.overdose_end(M) if(R.overdosed) var/list/overdose_results = R.overdose_process(M, R.volume >= R.overdose_threshold * 2 ? 2 : 1) if(overdose_results) // to protect against poorly-coded overdose procs diff --git a/code/modules/reagents/chemistry/recipes/drugs_reactions.dm b/code/modules/reagents/chemistry/recipes/drugs_reactions.dm index d9d928ff7ec..78c9fd9e922 100644 --- a/code/modules/reagents/chemistry/recipes/drugs_reactions.dm +++ b/code/modules/reagents/chemistry/recipes/drugs_reactions.dm @@ -68,6 +68,21 @@ mix_message = "Tiny cubic crystals precipitate out of the mixture. Huh." mix_sound = 'sound/goonstation/misc/fuse.ogg' +/datum/chemical_reaction/mephedrone + name = "Mephedrone" + id = "mephedrone" + result = "mephedrone" + required_reagents = list("bath_salts" = 5, "carpotoxin" = 5, "teslium" = 5) + result_amount = 10 + min_temp = T0C + 100 + mix_message = "The mixture fizzes into a vibrant red solution that doesn't stay still." + mix_sound = 'sound/goonstation/misc/fuse.ogg' + +/datum/chemical_reaction/mephedrone/on_reaction(datum/reagents/holder) //Will make it harder for botany, need a chem heater or will suffer, and mixing in plants wont work + var/turf/T = get_turf(holder.my_atom) + fireflash(holder.my_atom, 3, 500) + explosion(T, 0, 0, 2, 2, flame_range = 2) + /datum/chemical_reaction/jenkem name = "Jenkem" id = "jenkem" diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 7e981736a9d..4f9c1c4d4ba 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -399,6 +399,21 @@ build_path = /obj/item/organ/internal/cyberimp/arm/razorwire category = list("Medical") +/datum/design/cyberimp_sensory_enhancer + name = "Qani-Laaca Sensory Computer Implant" + desc = "An experimental implant replacing the spine of organics. When activated, it can give a temporary boost to mental processing speed, \ + which many users perceive as a slowing of time and quickening of their ability to act. Due to its nature, it is incompatible with \ + systems that heavily influence the user's nervous system, like the central nervous system rebooter. \ + As a bonus effect, you are immune to the burst of heart damage that comes at the end of mephedrone usage, as the computer is able to regulate \ + your heart's rhythm back to normal after its use." + id = "ci-sensory-enhancer" + req_tech = list("combat" = 7, "biotech" = 7, "syndicate" = 5) + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 10000, MAT_SILVER = 2000, MAT_PLASMA = 10000, MAT_DIAMOND = 4000, MAT_BLUESPACE = 4000) + construction_time = 10 SECONDS + build_path = /obj/item/organ/internal/cyberimp/brain/sensory_enhancer/rnd + category = list("Medical") + /datum/design/cyberimp_toolset_abductor name = "Abductor Toolset Implant" desc = "An alien toolset, designed to be installed on subject's arm." diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index e0733411b13..c348540cc8b 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -304,6 +304,134 @@ origin_tech = "materials=6;programming=6;biotech=6" emp_proof = TRUE +// An implant that injects you with mephedrone on demand, acting like a bootleg sandevistan + +/obj/item/organ/internal/cyberimp/brain/sensory_enhancer + name = "\improper Qani-Laaca sensory computer" + desc = "An experimental implant replacing the spine of organics. When activated, it can give a temporary boost to mental processing speed, \ + which many users perceive as a slowing of time and quickening of their ability to act. Due to its nature, it is incompatible with \ + systems that heavily influence the user's nervous system, like the central nervous system rebooter. \ + As a bonus effect, you are immune to the burst of heart damage that comes at the end of mephedrone usage, as the computer is able to regulate \ + your heart's rhythm back to normal after its use." + icon_state = "sandy" + implant_overlay = null + implant_color = null + slot = "brain_antistun" + emp_proof = TRUE + actions_types = list(/datum/action/item_action/organ_action/toggle/sensory_enhancer) + origin_tech = "combat=6;biotech=6;syndicate=4" + ///The icon state used for the on mob sprite. Default is sandy. Drask and vox have their own unique sprites + var/custom_mob_sprite = "sandy" + COOLDOWN_DECLARE(sensory_enhancer_cooldown) + +/obj/item/organ/internal/cyberimp/brain/sensory_enhancer/rnd + emp_proof = FALSE + +/obj/item/organ/internal/cyberimp/brain/sensory_enhancer/examine(mob/user) + . = ..() + . += "Epilepsy Warning: Drug has vibrant visual effects!" + +/obj/item/organ/internal/cyberimp/brain/sensory_enhancer/examine_more(mob/user) + . = ..() + . += "Developed by Biotech Solutions this revolutionary full spinal cord replacement implant uses an integrated chemical synthesizer designed to administer Mephedrone: \ + a potent stimulant and hyper-movement drug. This implant dramatically enhances the user's reflexes, with many reporting an almost time-slowing effect during its operation." + . += "Biotech's experimentation with stimulant drug research has long been a cornerstone of their competitive edge, especially against their rival: \ + Interydyne Pharmaceuticals, whose efforts yielded a drug capable of enhancing reflexes, although they were never mitigate the adverse effects of said product. \ + A premature leak of the prototype implant pressured the company into accelerating its development, leaving the drug's side effects unresolved. \ + They completed the spinal implant, which is uniquely equipped with built-in vials for Mephedrone delivery. \ + Its material is solid plastitanium, and while strong in material, it surprisingly feels light, considering its spinal integration." + . += "The implant is highly sought after because of its extreme capabilities in combat. Many military groups pay a handsome fee simply for the licensing of the item. \ + In spite of this, recent Biotech shipments have come under fire from piracy, with the company quick to blame Interdyne for said attacks. Said allegations remain unverified." + + +/obj/item/organ/internal/cyberimp/brain/sensory_enhancer/insert(mob/living/carbon/M, special = 0) + . = ..() + ADD_TRAIT(M, TRAIT_MEPHEDRONE_ADAPTED, "[UID()]") + +/obj/item/organ/internal/cyberimp/brain/sensory_enhancer/remove(mob/living/carbon/M, special = 0) + . = ..() + REMOVE_TRAIT(M, TRAIT_MEPHEDRONE_ADAPTED, "[UID()]") + +/obj/item/organ/internal/cyberimp/brain/sensory_enhancer/render() + if(isvox(owner)) + custom_mob_sprite = "vox_sandy" + else if(isdrask(owner)) + custom_mob_sprite = "drask_sandy" + else + custom_mob_sprite = "sandy" + var/mutable_appearance/our_MA = mutable_appearance('icons/mob/human_races/robotic.dmi', icon_state, layer = -INTORGAN_LAYER) + return our_MA + +/obj/item/organ/internal/cyberimp/brain/sensory_enhancer/emp_act(severity) + if(COOLDOWN_FINISHED(src, sensory_enhancer_cooldown)) //Not on cooldown? Drug them up. Heavily. We don't want people self emping to bypass cooldown. + if(prob(100 / severity) && owner) + for(var/datum/action/item_action/organ_action/toggle/sensory_enhancer/SE in owner.actions) + SE.Trigger(FALSE, TRUE, TRUE) + . = ..() + +/datum/action/item_action/organ_action/toggle/sensory_enhancer + name = "Activate Qani-Laaca System" + desc = "Activates your Qani-Laaca computer and grants you its powers. LMB: Short, safer activation. ALT/MIDDLE: Longer, more powerful, more dangerous activation." + button_icon = 'icons/obj/surgery.dmi' + button_icon_state = "sandy" + check_flags = AB_CHECK_CONSCIOUS + /// Keeps track of how much mephedrone we inject into people on activation + var/injection_amount = 10 + + +/datum/action/item_action/organ_action/toggle/sensory_enhancer/AltTrigger() + Trigger(FALSE, TRUE) + +/datum/action/item_action/organ_action/toggle/sensory_enhancer/Trigger(left_click, attack_self, emp_triggered = FALSE) + . = ..() + if(istype(target, /obj/item/organ/internal/cyberimp/brain/sensory_enhancer)) + var/obj/item/organ/internal/cyberimp/brain/sensory_enhancer/ourtarget = target + if(!COOLDOWN_FINISHED(ourtarget, sensory_enhancer_cooldown)) + to_chat(owner, "[ourtarget] is still on cooldown for another [round(COOLDOWN_TIMELEFT(ourtarget, sensory_enhancer_cooldown), 1 SECONDS) / 10] seconds!") + return + + COOLDOWN_START(ourtarget, sensory_enhancer_cooldown, 5 MINUTES) + + injection_amount = 10 + + if(!left_click) + injection_amount = 20 + if(emp_triggered) + injection_amount = 40 //Time for a quick medical visit + Activate() + + +/datum/action/item_action/organ_action/toggle/sensory_enhancer/proc/Activate(atom/target) + + var/mob/living/carbon/human/human_owner = owner + + human_owner.reagents.add_reagent("mephedrone", injection_amount) + + owner.visible_message("[owner.name] jolts suddenly as two small glass vials are fired from ports in the implant on [owner.p_their()] spine, shattering as they land.", \ + "You jolt suddenly as your Qani-Laaca system ejects two empty glass vials rearward, shattering as they land.") + playsound(human_owner, 'sound/goonstation/items/hypo.ogg', 80, TRUE) + + var/obj/item/telegraph_vial = new /obj/item/qani_laaca_telegraph(get_turf(owner)) + var/turf/turf_we_throw_at = get_edge_target_turf(owner, REVERSE_DIR(owner.dir)) + telegraph_vial.throw_at(turf_we_throw_at, 5, 1) + + // Safety net in case the injection amount doesn't get reset. Apparently it happened to someone in a round. + injection_amount = initial(injection_amount) + +/obj/item/qani_laaca_telegraph + name = "spent Qani-Laaca cartridge" + desc = "A small glass vial, usually kept in a large stack inside a Qani-Laaca implant, that is broken open and ejected \ + each time the implant is used. If you're looking at one long enough to think about it this long, you either have fast eyes \ + or were lucky enough to catch one before it broke." + icon = 'icons/obj/surgery.dmi' + icon_state = "blastoff_ampoule_empty" + w_class = WEIGHT_CLASS_TINY + +/obj/item/qani_laaca_telegraph/Initialize(mapload) + . = ..() + AddElement(/datum/element/shatters_when_thrown, /obj/effect/decal/cleanable/glass, 1, "shatter") + transform = transform.Scale(0.75, 0.75) + /obj/item/organ/internal/cyberimp/brain/hackerman_deck name = "\improper Binyat wireless hacking system" desc = "A rare-to-find neural chip that allows its user to interface with nearby machinery from a distance \ diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm index f64f973273b..881f797ad94 100644 --- a/code/modules/surgery/organs/autosurgeon.dm +++ b/code/modules/surgery/organs/autosurgeon.dm @@ -121,6 +121,20 @@ . += "As of modern times, the BWHS is heavily vetted under Cybersun Inc. due to its dangerous nature and rather difficult detection. \ However, this hasn't stopped the flow of these implants from reaching the black market, whether by inside or outside influences." +/obj/item/autosurgeon/organ/syndicate/sensory_enhancer + desc = "A single use autosurgeon that contains a Qani-Laaca sensory computer. A screwdriver can be used to remove it, but implants can't be placed back in." + uses = 1 + starting_organ = /obj/item/organ/internal/cyberimp/brain/sensory_enhancer + +/obj/item/autosurgeon/organ/syndicate/sensory_enhancer/examine(mob/user) + . = ..() + . += "Epilepsy Warning: Drug has vibrant visual effects!" + +/obj/item/autosurgeon/organ/syndicate/sensory_enhancer/examine_more(mob/user) + . = ..() + if(storedorgan) + return storedorgan.examine_more() + /obj/item/autosurgeon/organ/syndicate/thermal_eyes starting_organ = /obj/item/organ/internal/eyes/cybernetic/thermals/hardened diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 2087f6208e4..9f624bc55c5 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -59,6 +59,7 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M parent = H.get_organ(check_zone(parent_organ)) + H.update_int_organs() if(!istype(parent)) stack_trace("[src] attempted to insert into a [parent_organ], but [parent_organ] wasn't an organ! [atom_loc_line(M)]") else diff --git a/icons/mob/human_races/robotic.dmi b/icons/mob/human_races/robotic.dmi index f956c6a6f20a5ee8bcfe332bf2069c37d516d292..2d73cf8ff74f305bafe1c9a35ae2fddc8e5256bd 100644 GIT binary patch literal 2505 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 literal 1538 zcmV+d2L1VoP)o5}g-Q0(zqLzAC>fF~7=snt z;8-Aw_WDWMp;M{0C-@{Ds5STgF-)c#2mJ)935&Uz>*1)?D|wFFa5-xgA%)1Fp|WGx zVw3HR$c(RQ0K42CNi6Q@a=ly1%1t?&Puvk5!9 z2$D>IU^xGm)0gzUvZzF0000000000000000002Md{AOwOTLZPPR!2gKUz6v z(JITu*g@52L{)|Z#Fa9BilLI4v-(&3%NYJ@BmEV`h5<%eb5{R`S!N#q0000000000 z002B1C8xE}z|*>+Chg3(>S;aQATJ|0Hg8DmMF)IV()DfwyMNukJdCufHM*GC&M?SM z44X!V3u1tV_oHXf>|ggUkFhi8STkT(zzmMO2K4~fe+^mz&O3u!7iTp2ZWBOW0{{R3 zK*7{cyQN*26AED;p11ob=Ex<;E$zrmP~|I*+XX*zOJ6Fx%5mHd#UEGIOFJ_MwR6me z!-3hkK|!I4~Co<1(qjH=Uh;<~)?R&O#X;}h>N8_r44KbCf6E~x#CFpIX=%S$(b zFSCunSH$*LKAlheI@j>jjX&QElF>h%IKI^J58?SFx1OHEK^eXq->Uk*TfZ~kZ}uNQ zrw>63FeD43`%#%~I{>Hl@8-P69h34AM^K()#_4y9b4;7TTH6thoWb%Lr{ArBar)f~ z7^mL>000000B}FMq_C-&S^uJC0eTMm5R`}M-En86{i8v-5~QOy*Sx>Usc&ipI5j1a z+DqMTQ1#g|J4fN|H}zYZPOwNDXBU8MMY zU9+Wr2&bJ4a8`jm`QC=wy?r#7%cWr_IOsyW!Z;`utFbYf1UtanE@-L%14%28+^>(z zX9`d-aFj$;BQF}~-_);q5<4jyWV|aAlG94@_Hg;SG@^ghYQ&W+fm2nr60&_L&rMx5 z`Ke^fIJ^`fotxjEznimMlieo9jTuyP=l>1O-`tCr^Ja07udgqy=)BGSS7KT!9XOO1 zV9yerDnKPMNPKSMOB{+)$-b#g_>2Jmyx#=){>OS#CiPBym`eKES<%-zc}oA7$kVTG z^6Ro!6GEMSr<@BmRe;Mtoqnf$H%a%u`wJ9XX_PL{6Dv0vbAD`#WvSb{wY*^%E0C^$ zobA$MJedt+w^#0F5C8xG000000N5z`sg!jlT?WWkLSE35SBp)TWr#l4r|+dMDhiYN zGc|+sIiYYnNrTgQG%ppKWoFnzAyTFLq^&oF)NR^Mw; zq`6_v+@3Es=rpmuZ#NBeP5u7NXy~?3f`mJFFXi6LJLZ_dvgoa&S-=kf000000KitT zD&f{%DaY)+SI(=k+DnJ_SHyBpqrG@2gzxwgD~@A(%X$Oc?|po2cLw7%7UxI324i?D zz6Q5{7X<(S0Op3NSH>Bn?nwVXD0ZzqW;{j|;{H;JLHb;ezSj~+{`Tn8qh!6R|6ymE z8Psc49wh4tr62=~6olVT^j&!X0000006=k!Jqy2d$S0Kl^s6?P5AD6z)R`pTM2q!C zcoo>bb%707*qoM6N<$f)@DBYybcN diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 7153ac1b94c0b3ef6a9a057fbc6e53ed7574feb5..bfd47a9ec1363e07af05f785b0bc4fa25832a0a2 100644 GIT binary patch literal 31650 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 literal 30742 zcmaHS1yoc~_wOCLyBm>|P625|r4dAFq`RbZXe0!bZs{)R8bCs&Ly#_!E~x>AnRor( zdh6Byy|uXa4mVEhv-fZ3d9SVcj1Z3w4*&qd7tfVn0ssUG9_Bb$;GM?sS{VR9XY$v3 z`YX)(d(!Wg zg_*=gdQpSTWbQB^?fiZ5w?w%g_xn3Dbvx-lw@!ApAHfT9P43?~!)nswBuoaesIxuV z?d0b*a;R8;;J|%3@0grQ)=tvmRPUg5vD+3W*4Q)WnA%I-eP)k5zK*Lo<1I$vA5$bg+t?;E`bwKsqa;T1pu}>jjmAIS;bp`3 zAHvz>z4~#xlP^e{tu4?Z8Gl^$a^6sJNVWpRqy^m>^GrpTornY>eR2i zPnlV_4Gat;tiiT?d0*>aW>_#LOBJsfl{Wrp?K5}i)GKn~#w2E}-&2w^4vXszW;>&Q z!_Hz1Uwqo4f0{2~?W$>etL*3XRj}BG{CBatYw{Mno5qudN+b7U!U%S0HZ2(^gVF=3 zu)Hr;?9x`~r8&L7grfRB5i*5+5fG2rPG#q1N_I*g@QCi$`hy94); zr1?UDbZ2x7d&*AxcnPL+VPFw$C`-eiKAY0te`n6OE9M{7(JK8IH~8il#rAdmK<}Ay z!+K~0FLx(6#vWPrZZF2lSSp%PhA!Y{_(o!^jVhXh zkYjH*US8~1^^EzGxGpo9?kA-vS0q}grkLZt!&L?Vcz$`Itf1$+c$DkotM}@57$%V* zPsfV;f+bR(js)!^RGte0;YLG?i^1#UeN>3k5!YB)O_}=itTn6}8i(mrj*<6X2YibK0y>tsMIdQ@W3efS^;=03FX75oU zCnsSgFzMI_JxUwNU!=~xL=_GX541=aX+u>YV*J6(M|YG!Qs<5l1=64B!zY!u=kuKa zfNyde3OQZ5W&M~g6CG?Mr##)b0{|$U6}#&PzZT~6S)`<9u_vLYd_D&g;;uK4%99?& zC!9i*rwRARzJ&)f=Zz6L7@Sm-7<{oUo zlb$+kpib@?*xpX-yK)OUPe$sn;%_qLl{HVrW}qwlDqhZf$j!~ATEl+l;Csxz;-$Zr z0v2z24vbaKq-_I*p_;vu^Q%w44QIcVvB9a#z-oX6VINE>0l=ruYn4~dV#f?HC{JnV zJ^|Y@j5~qlSoz5+S66J{d^-o}gIL!^xE|U*Mvm_# zCJu0@vKGx>6ee`qFlcU2(u=$=pPqfd`In3afXG`r6IO~f*E7pd07_?jYkk1)oHj0` zDRus86H>)Sy0Cs$d1=`FF45O=?<>4s_(cIcS3q`W?kjypl+eSx577%45*UUZz2^t8 z)+!H9YXGaBi8h|6RAIHk?ssnNP;!aZ=Q-7-Um#K5BrsqcB!_Dcik4T`JWU6G=@=#a zSftYvPJrL@vtjr7TM6>$y3E|tXO`fIEnMw&db2C~`@b#Q!I(4Hg3SfhZ=NyVA28Yc zfajF=RV|E%hS*RVlstdJm>Bnyws-JJaqc}j={Wv^KI}%tq&9A?YhaVOdn8`Q^^pkF zuA7AwPdY#F?2$v|Tdxojpy2oND|rBkoDFjOP#GC{W)XQln5L{)lA;BnU zETseaVRw8F%S;6$V^owd^hhyf4x{jZ4ukbCT|WXIJ#}4_3NSzb;#ZP9 zi--1)&WPWvB-EtfoDjiD>)P+hgXULFLfD_@wkDUbTlIb)#(c(a+6RkGq%odn$CSfa z#u>Ue726jsE-Bg2LLoY)oS)b)45LX9xL~M=L+z+&Z!r5qa>8c)FmVzWqey_M&!1xg zndKjnFd=OXjP9TGXifXUA4{@Y8Br7}DM8A7l?}0I*n=r&ppfz|H%bCDUdJj3kfwB3 z^iYaQzgesv4_Em((h;C>Qo?#rcPtYQKn(dB2|)tcHv9XvsOO9t2l!de&9cTk@nhVW z`3n7LA?U>|tk-(>t56aE($eGpQK&{Nw50`kIeCKf;e*Zd=KvKiz~Zg-t-r~v6#$6d zP_BbZ-lgM9$;`vm>&)KcNn3bQ{5Bb_0S4a{ho;63Y5Jcs>U&oKa?3q2#C3V3SnJ!J zgeB3fU$W%ic@kbK`RP3{o);i(Bei;hWL?^q$mdgAUfH*70NKIR)Kp%-^2*oeycU)1 zmG8bGz{BG(?V2rS6u6dv-O~2p31Z^;iyK^SZaLP6Ja`)$Ayj4Gd5|YVmH}g)%C)%i zo~xwm^G*@UPa&`_%M`d#qYIv`+HrxQZrreU@Ow@&E%Uh_VgMAOHm_Y%F*us)D0q;a zcm^Lg0Z}$7WKXJ6w7GoR&RlGO`4t@@ZxqJnx3eu3$NTXtDU7`rXZ7TNLqA#+a}J^d zPr|Xnx3?e2{NVx2M<;{fC&g|y@t3U(WH?o}8@uz)m^f2^E*dFH1CKvPoY2QW8hezPD}e3f??Ll>U1AhdL$(}PkPV+<%)BXZ;v?od1DG!oY~1 z4N{~!QY(2gdlYE|W_ z^UW)Fdb3NvP=jA@*!bk=TWs{pf9e%I;UTSDB%`SJD4wT!zyQ4jIN#)oyIuNM;{`K;gJ~w9i6EazY~Qo$Cv|=`kKkG*Ma%PcL#W; zGgc;1+b;JD&jLb11*h>3jp<~KU{q7o{E$gg_K~uXi(hOcfG7S{^sQkSSBAt$T>RW^ z5ZmLJ1e{Cx0@skX>pkqBHC7Z9l)bBSro#k(@&39U{Shl(uI%l|ey`{_FIQhBp4)_b zHNWq&a*HmHswLW#8tF#fVzL0e5^ErMH_jv8kB=B#eOf5mQt5X^nRLey8jc*N*oo8~ zHlk6?>zN<7asToTBnApPd@0iEt_G4_6So>>P5v@u8&t%nhsJK!H53*;@FirPDSYE8 z(iRX?fNbhV8crPre}U(fP+0Ph(Dy0udd39gq6w#@rxz)kgh7JPPMD}8eUe@$*;1g} zIUWdzLA4d+DJb(i^$OWiDUS$l1WnnYt_4w3tE~==QV<#$LoiQ4l7U(j*i2MHGrYWv0WByb~(NP5GAZv>xINXYK3|SVgfY)?p zat*AG&bO%V55Pofi~!1l z6J{4Z$;ARb_yOSj=P`Kt?+;ke!Cx%j{?FTXa+720F&~~QQMckyIN2e(?i3<(T}>Z-n4sIcQ?7rlxocWWlh=6#xM_+bH)}1egG*HDBCxgn`}U?q|C=VBfpuPtHe0 zc2PsTD;GYuFt@YK!SOGo1kF-qx`Cet&DQIj0%;}9UqN@J?S03TRm>0JM?ZjA)1Xh3 zl$3o3UlY(KfayG=K?Vkf_0vC9dYde#1LRsbf`WLzHwWWlQ~J1iOc4Uje`b>BP|e5T zXDS=70^ej>k&Ox2AiPEJ%6ETC&}zTF_4_m7=H@1^qeB{tyu$<=YohI|+@V-u9a*_O zaO&bSkkD{ZGz-3ApE<$UqLsHjzy`^{-Whx^^?_NAUpp|?mB8Cyb5e4Lx`bKRbHx`C zUCH3yTUqe)%qRy!F=#fkKtcrRYjln&e7$DX^;=g@uUIS;YW|t)hys28hXN5%?+|e& z8AopJ!!qBzXwPZ$H z*WF!YFxZzDPRY?BXL3a@1Ud-6F<3c{y}kYEty>XGTF8ZL`V7WDho}y@jj3}XBHQiZ zV<1NP%hJ6=!wRj`C8#;_5*vCjUxyCeTngRv>4Hzs!So_h_pv7@WZ}Y19OQQ1SoJ3x zeom7G3O+_iFSJqAmCTdGvD>qNE!U*N2RgsIySfH`Maia{Ac%`uYSxMV!g!TyO6d#~ zxt+xHLGf*5#!ygDNRaYYSC22`TpVT&S>FBoi!$Au@{sSN%<~GOpd)*K-zt@U?UTPnQQY>?GLz_z| zUD7GdlZ?!)tkX9Q6I4kz65qeKpAIDFP)~X~Nr)3@3A6qSACtM^4&M2&MiV!kh&$nR zX3Z+otqjp8y9brC;SB9^H5rM(eGFs$M=}x#NKp$?BKVuK&Q5bk_qge*Bro05m98Oi z!2Uq)iy-x@ZOZ4hV@g_T(gYqyaR&<_>nS%UjVU2vVPQ1X$hNjNm7SW-Wkzt)Ztm{( z`ulfh!^~fXG`W;So1TD@M@T2HWB?f~gO|pyG2|U=jsO`>4<|JzaCvVv=?psw#(n_P z)6@G2Fw}jn#%?EK;*?HyXqWy0AD>3H&TOg=16(xshc;ny`zB*K_)vTbR!EjME0PKlg2A3OLQ)|SyautC*|5+lq3Q9`aX6CRjpo3l@atw1^qPcb@D6a4^H!pajGA$PxA7t?|Fm{b<^Aki= z7m-SWoC<(ZYfj`1t0Xcxx6RH#Nn@f|zoz!7;v*w)$w??Eif7IO>OMisU?6dE@bDb; zZQXQdPX3V5(3GDqxx2e#8NCJPnJp|!+bffCxpm#&6TQRjzb8oTEt}_aVQO-|p~7lP ztSxb}OH}`^)(qw{iE->zKcAW?__iOzy_4GnnVe%~r#Z~@pEc9Mn#3U2cGzfZQ$x8r z^+c%`7G(gF#cvBNuG|iP34zNm%6LiLTgaM=L;?{cOuqy%Y&;hZi5}s>fws;~EDoqM< zpt|9YWYd*$v(4n-x!H~Ut>Hx13zo-Bw77y;5HuQ^p+sily(9VK!3N7=I+L{00cK{V z56`cea9(d8;6TaFo~fv88v8zekofFDU|`$kne^Rl+?lmu2&k&Y=mF}Bv#nu~Aaq|L zVX~REK$4AN9(M%XT|p{DZByp77rh!J#_n{9+RAVu^TdT#OX;%N)3y4nFTDSKIZ~l9 z;wEI%t}@-!Odn1yQ&r-Ub8}aUDLRA<-w{*AYMp7&<`Y2eTBFPfj7>~*jE$FfPY%*c z2xxWHv{e4{7$)*oB^x?9JTpTs6L8hF6Bv#~*k7O!PLO9VDJi+R^N+pD;JLW_=yuqm zt)**=vY?**kJ^kOB1nb)S330nQmut1imhQRRu5AkI*j`kO_P(_XZ@Mwk)_tHGbW)ta zOR&at?!y4}prFsOG2-utKnf8IQh<*zr3uE zkr7wVZ9z;=PUOQ(+~i4{2sF{P}Y{J_>n%hl%98AD#WS@;Cpg?jlMqTRegFmU~D;(d7&lba(Xyw7x|4 zYT^@Edut*O%+=CA53;kkV5weUx}9x38X=TNrRo~KWT|2~XB05WYs*fzN~nMl79a3L z;=|l;Ii*$w$LC^T!4<=kwjws8<~*r*gkx)~nc~iL@7&x#|0Ix&*Qh1Fq@)A_5HU&> z|LVwl>~66JYNL}(6kwECH5g!QIm%J0h0R{1RR1qWhOZlkf}^g&}L zQ8w1VKRr9;Gd+MJenZJMM>-m5it0w9Zo{~+y~o8bBi_6xC>J^t`2LFC0MTp!;Dkr@ zqUgx{WtE$X3iPYiURC`(@i^O|O;1m!?m;2%E>%;)OEt2GG;s85Ou++(5RobuVmmi_Rx%^LUxB|sDrr~{j5G#{1di!i~$Ohu9xV7Tu4Sfd^?Be zx*W!@U5DsEcfj>f<*TZC_brv>o*;U!8QI(4pS1M3*!#Osb&IYKdBz!^h8nVelM&Xg z3gbGUp5O=zuQfrTc>3lc0uR4n zRa@I0)L%ao8QIYRXjy*nZAq@QPwatM2r}?$uPnb78)$!qDRcAtQ+B@ZCa%Ei*Ylb5 z5-tPan38gH?`QtAPO51I#q2Ei@3b_@lN^X7Aoe$9>{64pOt=+m-`{>CNf8EubYJ!Z z1h{hVVS7L1qm+BtVqw9wLn9;jMy)QCRD6a59`D{kJbPq;Ajb8b0x|=r-t|Q!to>~1 zXE*fXb$pp}2|H$N(*Pl#mgDe-cx2P;!@iNFbe$@gb6iL?+bwrgk~120F#p99dN_P5 zasFH%)nq@D@si{8Bm@<}0R-M`r`vB0B{;sLV=u#fE;c-g8jBK|t3`GAytB+Rz0W9n zEjQPlO@FXDme73dY9DH2dx5P3R+QW+yI%*5E6}nz? z6-`YSCVN$$rX^_yt|50ze_A|DTbj4+#)X@!$h6-bxHA&6Hxd@!+@oFZlkeitLO;tw z!o^T3Ju}G@YPxx!qBbSGGNmFQBoP$@Fx}LM7$RGFFugFPD#FEA73rD5rO-r8{vQRg zTRh3eiu+%o;`2RR;F;~O0+`0?kv4>^Bh|xjIpg=NaGo+-uknI}Z7sM(sW1`Is zdU}N-LN+;^{vCP!C2Aw(m@jCdds89&95P~Y0Cb01%la&&9L!z@t(@gg1eb30<0wDn zv&6nSf!3^m@dkVWcPc`!jJHj(|0*V!($r2QchFY$f1^ zA7QDVlYyzt{akkIl?UwI2J^Nf5m3KpgAUYtT}=yNx?pu(*2PLEOiOLFdR-MV+G6nM z1f`bPHR?My4pYz8c)!19Od66Ci5{@-Eryt`gM)+xIUvPna41b;Y z+{;G-a;j(Pj~uV|JKtVVQC!_45t|iGDRq(@m`h(vvk9F#7Gf;&a=ppFaAJgJe?5;Y zYy3x5@IM7gAHy9V)q_R|4|;P>Z?Ak>erjlJEQ8)pAdSjK&~h96%eA2|7k`b$+N=Ay zlpB*)q(?_hUbVHOoy0_nvLYduGCH1F4xBB6s`ZB>P<1s~V~QQ-I47lL%~l8#y0m?W zQF>8pnCy|*p-%X^4#_p9q2#@&(dK`Ny}v5pZ$;-F?1S?u?C9;mVPyBPh2W2QhNmU3 zc7M(^yc#*{W)TD)uaw~TG)>tsfx&jEyQS~n-$Q!I9mG^#>!SgGgltkQHv<&R&uPg0 zJH2cvfBs1rYHg_=JgQa<4H?e3`#LxnX(B7h*d2(e_cKM&WdDQQ$C=478wP;IkmSub zaX>B8X{SH7L?kma^|*;x?)F9UyOWAZJ8{+yVqv+HFw>9}T`Z-~A7mzq; z{<1zuX5*UimPOCKZ1A=RB*^d5w^tD?hcZ;*p)QMSBVD>sQyIqWWnvOO9Nq{aRzs3s zUEI2-%V%3{{`nFd*Pgu@8^LZK9u~$Cxj8w%j8GY2y42+Emzt!f0X(t{a;7^HiiRvh zh=8C2^%M4Kr$ zZB;Y+8U|a}>)VO_f8H~b)l|>XO7|EzMgo&_D-bSyZ}%p5+YjQ$qt|P9?%hLZpvh8* zd%B%e^=cn9*+3>4KyA60_W!;9)PT6R8dNo(CL;j4F8tC8w_DZ99=y%;C8CuJ#u*uS zr?NKp@@&UC4;1LHb@Q=rXU4D=>?J^+!OV6MFDy9s8|V1hKewQUkP{y%nlCtpP$ZJs$m3vm=2FGcRxFy&3CJ=NrMTzAy@lD zk+OW7Xkx6!d}4S#{?4)Oj^@gQ$FY;V$A0=ZUUg{Ay(R&3T5J{_{(xy>Xl5iE6Vfb3 zAJK{*9|t4hqdD>o{5$a}Q>pbhLpp?mKQ}?)7rdbmZo53*+l3j@|L-`I)0h)Nmvn2J zd*)cp>V;M1W;y@sY|QXMmofC>;8-CtzsW+3q*p#FxcOF1ppT2`kP4b$RD=0iB5819&nikI_6ko$9th9)dJDt-PyAbHd*fzNm@IPtUIt3-5Tnch`joEFa;SYNc#QWRi(H)?BD> zeED_tGukoJA2-j6K{)obpvP|^!HeijKLJGY%dpw_+Bf%Fkf~^5^d-zvzI!{u=tvp~ z^o+-rywlSk%@=CO#Kf$htIg;$-Coc_v-T~PJG{^VL8spU;z)qpT9UZsX(Z0e!R-gt z6dnVub{|gLK)Cz*l^VoCAIIL09i5e$1i#5-?D3nLih&Oxt3j+mtAtl={5?CXBsU*7 z6f~$oixvWOuFh$ucVaxGL~)vqg>@Ir1p+k?Zi8SR?JA7>*Ou>LO)0ur*`-IPKgnH8 z@m`j#Q0(k%j*FmIxE~^pNmOpK*fxe<0e`M*ebkJ`mHV}W)t{7u+4b|k ze=#^YIc=N`;>z$J)wdKX3c{twly6r^h9Xp3kE>g&(0MAyyzT%R@~xsuL*BurhgXhu zW|V;WPq{z?yXQ|15BYS88szo$DMv>ulX6p|MszgcYdcq<;P)GyolV+sMMH4ZW5j#l zul4j4OH{+t)9W6O6}4guyV&-Em+FoS=rdQAEpM#9f6uk`b$Rn~<`cU7DqUzwr`bZ| z8DZaFqp2ONb{&3=oELhe$=gY@1QffsuX~WM*PNlX%D>^r`)6J@ymHuaVq5yVn;rkM zIi!crw_-&5!1x8a-7ad528t9l#q%I$NGKkG_4@3F7iOFjy*2&oez`B;jYK2)0>}mx z81Y$r8QpVO=lJ{Q;NBp;)~39CH};rl5UAGHJxaW!*W4TRc`QNAs^0TqEt(nct-|LZ zK|w(h(EjW@T53%)OCrV&z-AQrHZt+`A`m&p?7QVw(Z; z;h0phqMbn@Wk?MxeKl0Q-gK=c62uj}?!BYer>XWS3|;Y94h$baJz`zhAuFM|bW>+65mBom9m zxM7pvqz95}JCvj~Y6+nEh}&(-RS4I!IBhxf$q6YShQoZv$x;yA4!@r-8YlY)2Hj$7 z&C1R#Bdn|X>zMhDPxQbU(s-BAsYYAR5EI+zQI19>rU0`$eCHv8F?>Np@z+Wv^<<~3 z4=7jW2F~FQYGSvSm&$*c_fjC=tbu8=n4Wr7%-&yEEJwcEw7|r3g7-4dZe?DnszeJy zdhY$OW=ZE>gnTRWUb8oQgAVxoG@<2pr1MeW`@WOYNxZe*}wpSJZLF&F+nkM zld_<3WikK@r^(Wd8rGzzRXc4?!yQ`jP$4QaI5XOoAWDjdP{Y-AGh|P%cwBt%dHKlf zW)0Kh1+St&F!iCtfY|O3yzf&`zm;>Qj1&Rd_xt%w(xUdaN{{8mRH$ZkTwR7oBtY9_ z&$#;4$83(Ye_s_cS^>9wKI~5$*?ta{bbS#}V>n;aq21Lt;=B^NEFHGVoLNvMah?Kx zGa(oB&UV;8Ml~j1xe%dphNS}WGZK$CC{p#O3{**k-!^fEHDl|fnm(Uf_4T(Hrb7KA z4oS8(5egFSE?%LJIA<2jh;k=WHW~*O@vb{WxMhT@kFuc`v^_vQwcZ^kPW!GPaU}Nf z%J-!y>6f61EL8(Z`bLhS;A!!nq(xQ~tuxwxmCeYCB3Z1JdiDKZQbVe|_Y;H!gSCzX z@3T7MV7H#DZ{0u3;ogXLChUV%7>nV<2xBPxZoKI@u)7^lYsIz(i-0_N*mmO&#x&%) zMN;~VxzOz(B4t`{$%i8Pru)(MT3y+=*$L$k@K5q*+&vZC?)CGsGIiw{wGpou5yhn} z(eRPe&arX86!jp=nYvIT?N5djGM_2$J5$~*%i)pJ)Xzma+0|7XdaAI#K81KNE20|* zGtp@S$aLd&(#@A}kc(g{6Anl#Z4Sc4l8FNx`ZVX=JycLlw%ja5`B!(5Tae&$&Y4qC3hEHBF|6Fa6nQ7JD7( zN3D$h=7*yCN1H63o&;x!UrP%R;Kz?2$@yl`#zv1>2T?a~Zxso8qrpw1%Et9zA-uFo z-cJM9xA#2D0xEq6*HyV5_ZkhTY)7n`A82%r-@PwBtPMr{qOh6GfUBjqW8M`%#VS}d z#*F~9B6*h3LN4k8XcC#xwzsO(MznQwLcvZv$9lp;Uwq%q3c|j*S+o^fbP$alXw|ds zlaxUh(aH&X=Z_`Y`jRr?j2OH?i z6Kj3yn$iQ<`zaW@2#V%=n%*sPr|goq%rHsxBj(d-U2bk&X;Vd+~;;zg4)rJK>#qtYIrt}EE;V| zB!XyjA}tVh*4H8S_S{a+&dJu!3A}5;9e3&#ROQ_=EaA=?8h-&V(kea-V<2?W zEf<;7MmX#I@WL=Me8Y05$senx`qtGJ-^j=)B`vM6t(ao4q@=vET#q-nB9{*@=+1tt zsxc+;q@jR0#t=D-eu#epr652 zhx4AW=458#);HJC6Bf>u-qQ`a!FSz5|HZ*skSY=+_eM;fEpx%T&$hl<*9spA_&>D5 zr=b@AXm1pe1^@@OCT{Deb!cF)U3F@b5;ncpXiT|maC|>A`*NbYCAy-Hpl3MnpIiQ6 z>V!i4;Z+JDmlK|c3!9QezT;B@Fq3LG-0wOa95(LDIa!L+)zA{x(3qt1hwUHy*i~`- zN>MN59+~WY;wfzh;*e!*vylDaru5zuK2h%fq+u?~os(8+fY3My1- z@LXCN`Gq`9*lyD1M5LLN>T_|CU3DcTqjMQuC$&MC`9-R9XrDRVmg`cZ~;X$Oni%{MTE|I3XcAI|zCIM@Ba$U^ZBukR_?r&#iwR-7wT9tqf-?o%s7&Ox-e!oZ;NGadrf zTo%Ijq_kneHR}Br7HW5&O=f~!u{dQ;)!orVFPfM-9=u!_E%@Sc(&ACQCxFd}N`Y`K zl8L@@)JCyzp1HO?QCKQDZ|W^kk>8g30W1!La;3wQ>Q_2nam|bGA4V;u>B2qL&I zMIz_qP*ODiCD7`2J|W^;yniv7rX?>7S>#Z)F5t^8V;@Fzs~4c3mqpt)MwiLr-~cr1 zTStViZK(-}h%8>$4K{Upx#qL8#@zz-}QOw;1c2|N)u>D)$B1*E!|{a z6~2oSxPB@XjnDd$Yj}RRL}Z00-m+ruYKskUJ$m#kI2ZzAs!r8Z@4^D@ij&jQiqsSv z>$WOP`rt}?pIhfv?9Wi%=)07>C#AJLmL*dY!>HI;JYdqVro0^5+$`oK zM)x$`w%sU%(Q@UZ*O!H*OaiE&3%=prr|t&dS?nqQch29h4tnn)AgI;1w9IANI6EhR zE#P?numX(X!?UZ=a+QB4=YQaa=xx6R+nF;auitgU=3`CVmDuLiE|uMr)?JggWOM!f zq%5mrLVEYc&e8Ev3%tZYUg0h2n->)iHrG0r)hO)3B9G{H`=kLAjw=iLI)}FFr*AnBw=--2Ta7+`Z!=~w*1-zbaI3wB+vUo& zMGifw^Jh_nc5|!qis4(kiVTUS#O!yJzD82|Qi^|;-qV|>QBi&C`4qSL@g=C9`au{4 zr^m(5{nXu_yOM{8(kN~1r~M*t!L18!`O`Ar&HxTKBOd7{F%jWr2u%mOyyI0O(v@b! z7{}qXDd{_Te`aPTV6@aRCGX&TVDy!Sh*^ez$ve3P8NF~*P}zm{z1eTq-kvipOfwU; zdiY_z#TghPA!bjnVasJ0dXt_;^IWM$o$R(H$k?;+UWDK2;fxK&|3sI@+RoskHT`-; z?yBju;Eqzr?(-sOmM}qrAva^g*XZ zp%zxpKl<8AY|eD_(OR!9eR8}?2zsq(ESE!;B%q}Xz6p#@swqUr*20YKGYu7J=6DLb z)f@#E{`4Ii^zTDDi|^yn98@KrSD-iWEr*oXv_8>jAf(%u-rc=Z*-MrjYoFoFM5l#5 z!0wo4^T_frpXqb$uq-ahZa}u1$8KaY!qX;lBd;U~nkp2lB5*uQP{7!VTvEi1VNqx8FWsj|H2u;-juCa%)OmgAOFBD)r;$ZL7D<-(wTa_|MnqRqjF>*EIq)*;*k2km~xT- z4^!@c7N+dOdqP6!RG&4e@!FA-C?7C^I5 zJ>%S%-<}%Ivuf4-5{(etLarjqK^+Sily! z8?#Ep7UW!K(u`i>5mE>)z`(}f%NPiui$I(qws(5@SOep z;HsUG^?sTDEW_e$NesMm(P1q>ayNKL13GcN#5`J#U0CmGFLALej`PRnlTHyXxl_$B zj<~*wfsP-K?(5)${YCWhn(m=emscb0gsO}Tfq8*{Ur;@E%BWuIFoOX$^D7&9=O*ua zetp*Ty`Pf>Cl3Ixsj0DmTGG0D1$68Od~E2rFJ5pMT~|rIUhJKVwE@>6=|<nQTqNaE%_?<&Q}8OipMO9U;)WI?CWMq&?DvA{H0z)XAb&7RgWM{`x8EjzTA=3zNkckal}zwLFsTlJ87&{7m?{k zm{p1EwAu2qy+w(uH}B6Krr@pk$-Dp*(i^|^&KGS)%A`|cjQ@pl#v08KT=dMB7NAB2*(C@kE}*SC6%-{!dl-y{b5 zcM^TXi1+V1&DX>V#5*zS8^R`kl2vz5an)cP*x>dp6DTSyXlS^+z{&nn)YTn}%3r~H z5Mt%3%mjm;o?X-DxULsyJ1sO}t}+o@{PyJppe2!*m5vVkw2`w9vmCM5PGI>Ec^iGI zj)iM`x1PpLquuR4`mX-QifDLvc=3(7h@ha%^l0q7ALB!8mM9|F8d#5E@sEMksV3O~ z@fqh){*#VszlY|sJ#lLZpYfx!Du^q^&Th`|vgJkT$*<6U^P?~@F@*pcAq$KSuXmV$ z)8a*oW=`rOv$vo(pOygTwb20!3k$0yDpFEX0$@BxGQ7TC5YQII7t}}CtP$N_BGDIa zvUofxG3;oxaihL+kf5Ai+!@|x8iPBi`oHf;WGC!jS5uDm3ghb-6<}4BW92w+Y)+#4 zWqIg5TU{Pyx^c1&aJqkYmRSA`0G@~*K+Z&}%r*zFkJW77Z=P(uj$ztyiOaVp+UM?R zZE04PN3jA>XVglR`8T^p++T}}jS{QAMaL0q5l>OAlj` zoY(W|l`bqTEFuaDSg0Jk$<(5Z2f$pHpxe5pd6~ zDi3EeI!ezPlcvhcHD`aP6#ST@GcjT8&2jFl9));OR*O=}YjP`5$CY1YjC-7+*bi7H zg9H(`z7{8~cTH6$263FPpCrsqTwCt0QNQQAosBn3%KCh*l-F zV6}=H65$t5BczCMLLzRQu8&v7qztO7n}%;IzSu$lm)hF;#-<2Zoq*#vjHt+ndbO!3 zv=HY#WP5Q(#9QoWd#p}^so0<=qTwb{EV6P;FTRqG1q$5S*Zwi?WBJ} z0f1Z_WI8xVK;Q~x!QD54&&MPnKs1qknH*S12nUmkj;GSo6FJw1ec5De$(D{z3ytJR zwc$^L_o^!zzTI&=zSg3jApKWCRWz;JqXgaou4_V>J5-WE?@yD8VfvZY3 z;cydABbkm;@@cskw!;{pfNtekqv+*t${NcPlKhUe5ZKu2xRwTr5&@n0_o#$y2_f@! zc>6ZyknIg8uxZ=~)W7eQ)VJUohqDp*W3 z5=4NTsBmN7R>+&@IFERErv043+BAgghRr|u{}{#jADJIa9c;^bhY4P^ne`n1-Ca;` z6~aduwJpSbH5L8qPRfT|&6C8BkaM4%_^^D^)P4#;u2h8JJi@{fY3|1#!IbT!fFI3F`L5TMxz}mFEwbP* zE-HUO$h30rsP>3e5bMh{Pa6fgkE-hDifYM+qqKp~Dvla#7ex;%L_(FKiJE`JeEPH% z8GMiSYm!x=5Do^2(E%(1h8X&W2Dtb9eEoqqNtqTi1?+mTJzL%kg=Gd=&#v=92Wq=N z#;_|zZ^S;Vz1HUN6@g~=qN^MAoL~J_w0KE|2n-tZi&IneOl$9|CNSyrQu_O|N@|As zeog-ngbCCA(C+S_xDnZx)2?e&@aF}(wi6Gw=lFcDj>pgth<$5F*UYcJK1eM;KL8Es zfm>7=p@1Y&nJK4VeQ&eWD%EKI$P)ac_diAjj=r&M*+Lf6P#{4E{%Yx*TV5%p#)>Y?!t88X}f6> zh1i3>$4_ai>S_G(r^&^A<@V8c`9T*`Ys1&dU?5=4J!vKaP~`!8)6XyLd?wcO-(=4deP!aghmt> zQ(aO&KR`iS#zS6s;U?22E4Dp*yv4zCZ~P$`Fhy>t2%cTOezTegD>$jD8nDj|)m*{u z9b7X_`iyiVKJ#h*8H<<|>#bky$P6U|wQvmVoUoerPw#gdB7aY%S_3|ZnRlU^vCKNA zL5kneh0dqhs|}m+z`}?Np*dF$&SB7`BQU?ez5JA+D7PGw5ZQ5O<_ey~3#NQB|9| zuwq8xue99ePbX2Er}DiU(`eZCj|My8+I73+YItjynr1AF8WOAm6?T6lH8@pPr zu4mb~kmrQG!_#!ABuRANg1X+|JI^M~?zKrfmZt;xu1(=1{$Iy$vHKc~xE@tusg4LJ z7G(}|+)L;lf(g|y~0z@9s5=v zInL09OWLT9M(O6elz^&>3E9p(=VfE>t@;gcIKGAn&^$H=L{ftE^!4Y+L)7r`e{b)g zL*M+FDr;-|W%pIS!~k$zIOi>>tWg}A!3l_6`fO9&LWUs?1#ZnB?h4rQhbNsWv#G!J;I5vQ}08mS%4+gKpLk5hKowu2HAJylt{p?9^ zK?tnqo5H=smqSaKb{Dq=F$DD-n5=YLt$4Z#z@jK}pFE+#{7-plr5b#$%Or!cl8LzY zIT+&gcO-}uL_iUTo4}dGKraM6Llk{|0ox1@`Q)2c6KEG@nW}JUx@oGm9*A+LHzDZO#=6?Npgp-uiVZOe z%LXRUI=qi~V&%Xv%;UgcTq8`!q~m}n&!I-KqKfAtDmbgsW-DX9YD;qbGS|+}+*wzrmUmpX57Bg8L|< zPo{-pH3a`j^S!*ae*02BgJ z(4E9kNCJ}t|Jx2=1uXgh|Lv*J$EZ=ZLxf0T27(H$>OB1=sbv-!)wg=W5*_X=LD#OU29m$?O1F4v(%K8 zF^pirGN%4}?4y|?&(4+RfyaAxtsw6fa z)^iFWoWN1xYGd~2LlVD~kP|?jbZ@@+#6bM=t4wRVxqODru}_ti1^2$^rKOdg|JX?#*P3?DIg$g7+*7%Am-}3ps+`1?_iHJn z#JgkL_usA8Lu3x)>K(4!2vLYHYr$e$w4vNr!|z4r8xBJ_NpI&Sp06Nqd0s7W^#p2= zPWj|Z#4TK$zXjGoasf~cIp!fbT@UHsdR&Cx%i!~nGFJEK|bWvubt)jj+j2asIV~I#s;fY{#Xzvb%3e2%JFi$+v=BRY5MgQ zTj;%Me9{epHxJHGanu5M(;wd4PbBaMhKABmQ_q_R-cJ~P)ta{$7}~H%f05P2K#92Z z`nrkDVGpo~k-J@CQz;v3H(eU}U+N-?CMn;ef~b*SPzly3>Gw4u^l_$fD7H>`=e<40 zAr`UnCb;MOXdM#vIY(O7&$KYGEc}d(Wj=qBmgN*<*IC~A=ePswCF!PQ zi4bJFF+-po(~uZhe#ojJ*{6{KD%4On^_cA4(d#dR#Ol)zIjRIb>luOGg%<1-ew5q4 z37pi3J%`WBC2Rk;!oC9-&gkp=S-lgY1wjf)L~jXUB_a|;2??STJ$jUAyLvB)=skLL zf<*5kghY+bie6V;tljr||KB(B&Aji-H-ojiGrRXW&$*}ke&?KKf&5 zTQuT#u>6$lA9PVf=b-sBt5N_%oYUN9pc3nwB!Gl3c=d=((Jr0R_Cm|-_;C5dnesXM#I0?K146s7HXMC@LcFqzYhAI z2tG8?b!z|Hk$iv#xOIW`Q^pSwir^vZV7;J%^Gb=%ZKV|S`RPV^=}_h?R%A;{!!xy~ z2!wl_K)`fm9VLP24FR+6$cI4uQoOq0@7w+)VUn(=r_!YhGw$&Ab!J?U``me9#w8s1 z45@Nwx@wepiSL3@s4m*M3ByZ3=xVrRWj9mY*a4TcfFs3lO+TfvE@qvG!*$n(HbnZ^ z(yjWieQ;6l0_PeMNw8`H*MGYaAg-lAlKw-*nLj-RzQkz;`inAm)+2z3S^2Iieo~^A zo8nY=TqYRly&W!5Tk@&|IU1f2Lm>83s4S4^Wr02G&l;REE5kuoS5FVAiHXT16&K%2 zFMsnqkqc3SZG^#KMi}_kcD@FS+h%kHAJ4U?h!2Jjf9l8iOSA+~@3aJE{n}am>i?-z zJ)*d#v|_pT^k97Ax0o4veRKm=8K;*L6aG;|XUa98+KyHO+vH_UhnnNKx_x!m@fZnS z3dFcGN3|A`{Fa1x2lN%!m(^l-_oV)i{R=*ZJytVLp2SF4y6PAKeV`Py2 zz<28rpHyJUEjG`26V7*TeAcpgd~SQEQTsuW&RUmOR~#^G4>m(cBD&*FCiZz)qirH- z5Pp>jtO?ndHPrypBTAc^%OATP%FCE5F(T{{C)zO*roZ6(w8jZs$F;$!BeULidHJMo(mOmG!)ddU0U)KQ`BOhX4yXv@zv zJS?a=!qq%RA4|mhqcGg9ta88lg`~Y~Rn<#xPfvub^SK#)WDSaBA+t5LVkJ56cVV|X zV^D;Avy+iNXFZ|if#`*CMu^(|lr2TzJfjk&d?rgb+j>w>A6toX0YR;Shs!P($+S2O z=}y#ey|YCc7==se>Y;S_t4|fOXCHKDWA?=F1<%mVZwKkz)HeHY*iisk^x6{)Mao(K zNt8$2UA^qkvN?rM=kmGvFR1Py&xfj!ih-52G!FIy=CC#%(PA0Hf=G+pD0d*3ltsSv zI3D7X%BFjNf5Oq(NzvX~cF(zLVMh7v``7CeI{Z%7zYNwE67w(nm<^*q-^uD-u_Z%k z=ULhxBk05TV5wsb%$=$WecIIuqOr{uD{mIvcp`0}Atn#S%Wp2I!N~`cD$uIIIHU8K zJ^Y^Mas62fJ8BTER~OSefmXfFHdtA}lPo?OJom8f>xhJa5S(aNKi7Rn*LEt}}s5nR_x^qTCVzs9NxLz$@d z(5C=`jE9FWyE$QfdxcW+KCyi&nff&=umxVyTo)PMeSP(@?y=W0zZOzaBmhaXk6d zw)WtFT2|!WJ-@P!8;6XYQ(9MWd1T-8uSKSy+<$F3KHGh&r{-2B*7OYh zWYROdG&SG1plMO~J>|wxr@-4J+o*~CL=m$TxdFhvg9VB75SNGN_h4O9+5MAQuo1PTWA8;RJSer$1wRz-Jw4i|rkgAG zvA+2+4pnJ?&f`>{9c|kFgCthkU0~Yaj0@PkxVsO!5_xeglJ;-rybl>MMs*+Q`@Qf! zAk3ZDR7*xj%H>mKu_MKilkNL68XSv$Lo9+;;Wi7uhrhe+SZ(}t$y@V(9(AAR^|6WP zocLdj=?}_s`dFCpaCBUfI6n~^Gch+Dch5sNw}>Ah@s296uRz@m!%LQ^HY(~DUko=k z;~nU<)SDx82ts^2&q8(o)Wb`=c?a?(UJr^>M6`d%Q54>4TX_1ih}&S6v5(pGa9vw& z0(pu0B6_~RGeKyCP`d{n^7Ps+8_i;vTJZMW_@A4byT7!Jto3kHwbuC#Q~3+JZE)>U zk@aUUdFKtFk%Ww(?{<=WNv<{iH8uC|45g{3Y8aQz{aoQcE4l4EK25_*!ge|nJ$Wj5 z1E%jPi8x7Weco!e$JE{TY^})YoAdn_9wu9_JQ}9v*IFWbLZ)b| zXzMt&-gN!~|B5)cv)!0eVpcf+x%AXzuQLonzOP>478Vb=nZF#1nF|1oVBw*m#)PCa zC6Y40L%J;YU;0D`4;M7Ta?6KQ5y!x3=IzrFr?qw|K6-VgV}Bn`GU?1%ahb8nrN?S( zr8Cx(jg2CMt`t^6#xz!&8u~8-u6Ep6z@@&z^6GktlE93D^_F23@2^!&dTLt{Gb!jr zwDhoK)fR3!>b3$Me>-#fJc)ff;)F7@Cz#qn^4^{N+q)XFr)KAb8JLvHY_p2#qbssg zrx{5vFU;K3w_9W|*!Hel9W0B($z?S$!oz;;-9+u7-}P}8Bg^It@5$Xu!;VYNxvh$i z))E8Ant}~&o4v0I(Y;KSB!qaLr{rSVGs#BAj=o4ZNLYJA7a5Al82;x{Uwdq}JS%j! zknh}ElNUFfPzr^!X@?!MR)Ck`|%nPU$&XfR@VByC7r z(PZ2mUg>0}i0bThnJ=g0OuqfY0?N+^(Vb4Ij>!-PQmLhKF2l$7B@$;)Lv&s6l>v@# z2b<*3-#S;mS)KZWvfa6R*M$iy##sD`)YSKM}RkUN!8Vm7aS} z=|1#;FzN}}mUR?|OrN@;ISk@>ap72gzMyB|V#Gg}Rz-#J8nsU*zN%HiV1x#N1$SM? zouGR*l=!Bc&{*z9;No}`c}&oJ4yNynV5t(*;_QYlh*QDEO6Nn;{=a5BXNPDa=mu|> z+0wd)#Cz1^RZBwtpv3Yan)AEqfC0*Akg;GB##3NmX{>(81 ztOrK`u=>j_OEL=q->d!(Pj)y>e;fa=bYpgNT!a=y}-g{XF1?H+Mw?o zS5nX*Es!Cdzt17d0ZDXFvK-TG7i!&mkGtV{?n!ONL%f)0JO207)s{Git@R#5#5Rcj zRqkL-C%PW@W&JyK-=}(_dn(T1mnrT>cVsscZfAsulIK;MO}}qS8vIMw9|&*0sOM@2 zn{uKAU&7SF<7#mAj0qhScZvt@zw>*~`qM^fUg%3cz1&COQnKoG6CpaAvU`*kub|<7 zk1EQ7b@SojUmTL$D|ddb`qzt(%VydS=5D#44!9B+L}G&%>6P#MwuB9uiPDe7Tj_*Or`yw<6Ql?`QNXL zH|*1T#|^>GV7@|+Ur%4DI9d|dIUZ<8l4^v%xFcgC%uOUK>m%g-kH}3i?~$6j`?N-p zBSJ@~X%4+M#cZY+$@qLe*}KL`S?SwW zcZKK#WW2(M1r;`1zna?$*=}+**7|r=S3`9jVPm?QSksaxOlJhhc(*DoEUdNa)S1?$ zLPf5SN&c+g_obAR4txh3!-Zc%yI5z+ z0aK9n;FJL}-t0_Hdf;?z;PDeK{w0zj%|*Jz2c(wQu6K@K#7xl~oF=^=EzwK78`*9d zq^TtKUzi=1k{~2<9I}qGCtV*3Vj46})t=P-7p$z-IT4{ho8w%{is< zaH<{SPuLa^(wcrj07sT|G{5UvKGdM0r00c3-ytIU7Lmz2r=-{-n}OO<4$+br4ZO$) zY6MG5`ubHQhZLkJ!XiYn&ODy1%}8;kuur4R-ABC)DUzb3P0UHGqg4h9nLxrZwlU=DLy>L)tgJz7~y1J<}oQ#M^4 z(A_pHT`^nymAyTxGj`P_n+OS_ulj;mbc0d%P0MTiOTij?&D~v_oc^qEQ_?`)4MXGgRApTlMZj|hQ==?bYmgw-W{U@Pr>a0__Ki;W;* zhY6WqyAP5@9~IsXy|W>ue@p*r!p`@GCSBheI|`YW8xSJwRIt5J=&NK1+T{yADZPdf z!?mQLK;k`QeQa~WCIXYq*QXFXe~haw&p=AP{Gr!gofBLM7j$aZ+tF$3dl}@j#%QOC zW&5e)wsWc`!(bJ4kMq8#)|l6c@)?9$d>N`dK;&2_n%HxEz}|VFEWLH^FDe4H-+H2M zbXl;jk0F2!rf840R(X27Ju9F;DIC;v7|rObge#hPt2PUp&e(3-zfju}Yi=oXIr*EV z(IlX@_v^z4GNhHiHLh#0#gCSC8rcvm(Dr{k%#d?Vf$zAit*TuDMaZENw{Tn8(=LMl z>N)BD!&iKz_q=iA{|+(z|56zLJK<5f0#c|=@cT}b_o6RZDix!aBm@IPa9X>g*m{Y` zJ~N}RzJ#$Y@iKbiHpp|7q^r`PBq49!;$%F2VmK6j5FA=Zlul3H5e zBsA=|QXW2fL{MutmH(q@+_J^>BMey=W7ahILX)ENI9c1&$z*W&9o)k|_92$dlRYmY zN3^=uRZ;V*(KA*Ey1*Y6{k4Vf7eXLw^`+QYq(TG}3_9ALiO9)QAk#gQ zh%h`3FY%W?D~)^WSV+pAZnxp{DpoIiTU7#u50IB}#81btCPNQd5*yPV1Ps5wU-(%o zh|g0OIU-Csv|q5MtjDx(wWeS z9Qp0=z0HYGDUPUl*Wx#z!L+4upuK?T+D%!up!e&ZneOgYm!h({>MjSpxB0|8ogWav zb){JLo|Gu`r%LWe3Uq7)y(-6d`UDg@NDoO{cK>q&Kc~@B|q;#oWVU4E77yp`4>3ZBbm}`o~=da~{8)Ev9y~db#he-Ok zO}=gRo+CfwxU<8k^unY(mO6TyG_O+PEU&os%py^ z`<7zp_dt5;i5?cb&LSd~HlrH$C)|s{7I%SyWMl;VtvtWfEeJbbUhh98c4Nk?Me}tM zPJ9o~#kYKyY9XB`KF9Qy4M@)l8J(fuuF_MKo2 z5J(=swENrG`)I=QM{n8qPR`Cc=H@uTJgvk$FhObjPNZ)?hgr)hdwHiGA=K@A zcppiThI>uy#o8wu{5Z1?dl)r8Jv)3$@LN<_bW>`^*sBKacSsp;f`Crz+fKp|eJp9~ zxHwchECYk`j7Yg|OJB{-dD6}+LK);BhN z5@6Efx;W!KIlhFsutl~MUZXTnJST@LRzo-|L`lQTTBgx`GF8G^8%ZRKUehanPKG`( z$muxw`rnznU##_vZu6HEFDjxw_+guwAjQr;4ttOt{CUseKs+q znx|)kDn^8l5aP(Ty%-PB(z=cLHJU6wPL#qn7mL})^g0CzVwcw=LE-~^neqIi+ycX{ z-W>Qshx;C#luhoygWF-`5LC1O022DUaL1tgW$`OkgHTG%GPBl4oM|{I;v7zw5Er?i zXknsY%zSs-MtC@!+1s8#AL~WU8fqF(sZ{Nfa=8Z|@NUc%?G<{usQ?K}O{LX2&tJ*f zPY-{=_<0~heq_Q0g`Y#Dkn%F~q8o;ov?^VhbD6F5bQtr#c%u7U_F@xVRIz1W4|&|N za1vSzK@X4l^Bk|(&+h$U8xGt*uD}J2hB2poEC_T_@7s}xjC*IZx4Fvv4nsmp(EHmp zc=K?C^i7fmi7u|c-)V;^OVB>1QjQvDK1DPN=`sa&f!>FN6WZAV9}M6a!)z z+qClfY-e>413i*o3aw$khdio}maioMZjkXWXyrUiX_MFIIx<>O()GEPhQ_19*;xKJrCRh6av z8!g=0*s`1_+1O28?8XO0A#Cd!$#@HRmOdEC%1Np^=W@Oj4j<^F1_Hl5LO$?1VpjLM7~MPpE*=^tNsNY%H`)e{`ahlGC~Ozi0GB7Zi4ZtZ+ncCgYX`~3 z;c#KI&n4gG$Y?T2MeK7%BRJ!9#e!XDPcdC$T3D-ZQ^i~Ki+c^PQ@>_j7mygHToB88GLHPS<$`(mB$(q3gqi>(_bs8fFV10zE?^O*yJo)w@Xui{IG&Cun4 zc-i#vxtfW;?H*;_Mf+f}PHP9^^RMrq`tEX#m@^K^k`XKfT}kiqB(xK4j_m-H#O$rFF~2jPZSeOb-lDe@-< zh^v{YtxaR_o*z9EVP7Brfx6$HzziV^!iFQmpyAI~^xqpc;Ks6MPhK4o% z`E=Jok%U!s6`mU^a zvJ=BMJsX%Tn+upcJRXzDWI$3LYj29JeJo$<3&M?l#{h-1V?j_-GOH*1~!%*crbGc$8HoDiy!Vus#z*4@wX`xibZSm9Mojf}yCDGzie zW|lZ;lF*&;YUgs`h`Ztnz-$x6!Z*T5-$h=wM%1`^f_h1Pz|dyeD}(c5!FHvva-CpL zlr0Hlu8kmoa*gn>{$Nh8m3+cD(|FjD8nfTwCx)<+f@=T$>Q{{HZss2_Yb^{Hc zc^k(pd}Tw)IH1m-Woubb^}$8LMQv<#S>2_pB@fMZg}8H((4*zH{KGspcaZnH+iuwP zLz@oXQ7+{;4!&1dj)%ps2qD?I6aH}02NqhOwF=5=TSz-)_7pGJl&1@HQb9(@_S`ro zu!$IliD_d`N;y=GMwsvnW;I0~CVr*8iui-nQ)uI=2n?c2iQ@^!UmBxL24finEDwZp zu7DOoyToNfg}cSDq?80h@)AK@S|HID%M^&qZrps8G!5nQs6UXaV;I79kKX`?0K79K zwBiS&0Q)B0rC&_bLDzh>5Ua9T!!C4Z9zEKBD;KXnPL~N;G4w5eKJA}u#d>@~Tsg;J_GZR?irA0eT*Yb?0ZOL|0vopwA^)|wB1y-WXyro9FZ6ToA@;cuqSjpn1{G074o*sM2^i~i<>Z}%i z_}k#sfFhmPJWrUzLtY%CQmIo|G*^c@A`&;Y`P*8hU{8u7-skSmSZ`%4U(WsZ9*G0R}5WV z_0_ZMV`S`X)}Ot%Fn?a{Tm0(~c2{?=1Y>yGc{V}GWOng&z(go$CR~t$YCCdw2cNd- zAD`WdcgO+oSi7HwUyCmxx~oCZ^Gi<}PO9@| z?+hnl(i>d(o!$)2*9zc<0~9OkGFM@P#t0SKt6emP(zYXZH~G)m5eFJXpc*<3sGZq< zf&obve0}r&+u15gz63$7exd_v>!o#CmKcXf=ifbD1)cj^0oUyKhT34HHhu@FjjD78 zyKJnf6Km*+Tfu;or&ov&^v$J!j&)^mL71SCR&MOP#15^uik+ipu+sE_UNHOx;fe}N zsSlQ$8Lt)py3!n-)EG2z@U9cN{?vF=C=Gro>{3Oy$^KQxprh|y^343h0`4~K|JJWp zaIpReY-uDsI_aas?a>H1M}I!ctt-&3*3*(H-Eum$gynq5`XO>>W-pOq3*c|N0Qxee z)VqVjelNM8&;b(4?*&I@zkM?tj3Dcd#;X~5VbgjX^Rmd!NvR(B`pQ;S+joEsYr9@; zr8h)C3XL@3ScvD->`xQ~&{29#nq;2uE)}y<5XsbsK6}n3E?z%-dPEtE$AF>Awt0AhUhj0RJbU;96XT@1M+h3br?* z;)ata;P8pFu~E00ITzNW8)s<0DMyZ6ej{_E!N-43=a3=hFqMUpFW@Z;D?g6S$99^nj0;ZB%!?;d2sN~!_#xtY|eV+{$3yV<`2jh_i;h# zA&IA#XXVtI^%Le`P_n$cniDRmbr5u9h-!J$Tb(57b#<(CF7Ucy3@W>~txAv~(|!}f z8AWTBQy^vfuma9=zL7Q{{2|>{FChUg*rKC9Ha5dAU>g*XX!Pj^WD{(&fro!?CQl-W zGY1*gVR{Ce|JTLZyi%Aw0p|{eVxL*oh_`+Fp0k!-oOU>Ghv)p$H}nJq)0gPxqZ8e5 zS#hThlTP$}iIEEW&OEQ~8ifL+q(an}!;xO+Us7~BaYn21@ZSM~t!Jp6ofwc@&A6mu z(tA&C3HLAQp5bw=(>rYGq>#n$gFR{YmDid<)1Ibu#f7QkZg043qn&mcd_r?bwTz#t zsevYG*?LtPta)f+oB5r z)c-GF{ZVT-W3GekT>}bS*S?eHixVgJs9+tk&vw$n*(l!mA2-t;T%gpnULDI%10nY+wr)HjbwSGSf z&npBFQ>AmS4*CMiCQCHiMUA}1%!1xdE~>Dnr%i&jGR>vBq>83Vebv5}RX+_#W1d8j zsFoFIxkhMi{PVb%@v=pj^4MlVo4rYzq~$ZIfdhAj$uhPJi8Z`yYzP znkmbHX=sQBN*{Y6|DfrglXv4HUt@(E->gv`)!fec)e9@&Y(y)x+pc%-`g4ViCpWup zTH2^p+%)UjoL6~6L~v#uQjXh-18AIj^%eaw9peN|7)n*PDm3mM_iXI;&p=)#_$+iJ-Py|VM2{OJNHFJBv{ zcRXDo0On@*?j&zi)X~B@6vwODDIXU=ERW(_5qSn=6YUUAmBs(bDF3GyDP~k)_&>Pz%vLUsv41AtjP5_+ zF!*p)Y+#=G{{=e`0HPK@;ac1W_^Bz7*=G~6&i{k1setmQ1i?bQ1eF)TL?s zR$}E;z>Rxr;uOs;6ArX*%wYbyHOCFhYoNL#;r;!KFM^B(kQIksDK*}{E8F@3$-2x| z>Zw~PR@#E-TWq zqUDv4uYk~Lm@XJApM+6kk%66`-X9eWEUaD;0xUIfOY+v}#DveELI-1_w43`C-P-K* ziGSxP(kfIT_gpGhC#t0{JS><(`&DeD+R}acyJl$jvTYeA<{N?w;yPNU4%mOTk}P4) zEm}+NXp)!`Gr~^Q14{zUU=r1!>d0? z+(ntC;d$j16(pI1EKh@)Zi`vYE?Ypsot#ic+tyjWzDcFMP6dXn>nVDyzh#bt$Q0y;>?x9gjE=MFM5$nNmB5y-65bO^c-5 zYMj^yTOkmMgovn80=>Ybw?Dao7(P}bF+Zv4{4>I{cwsXEUl}jAp858)dXreDLqmoJ zcZZ6+>DdnnNQ%9e-)wdY_d%4pe|plTAt&pL`}Xei3P5nt=1g=0v(L}>o%hr=JnPCj z&j>N^W+(Wz2my{GUPPPqJvo4zL7n1)g$e@mWJ7`ot#3;@?yaf;P|NroA>G|O7gIU> zVUIw55OK{)ouaLTK*9Vb%DV|3+CPkx(aiBP-r}U#NTkimuVVi_sj#8<-u|^;%egs` z5O<-Wve7AiOYnN9Gg6H3+lyGgVL0WM2;qg#7RZ3#NWf0M?lbDeKw0bU7u({Sn~7uU zb_^`X?n51Cx<8KalmL=FEnG-I;9)*a``w&Xo#TSA`@oR+c{5%e67{oSlT#?7D2RFd z)#h?+_K6-iS%N!FKdm!*0fYnBKr{$C@W44n3wK3c%%;|C%`_RzFMe74C@Kt;{eme5 z1hLhx;ip1v{XfNB)Xg(2^_eZUiG)ak2}Y`HzFE)~y^(nI0`(_}t3~uaC#(jX3fC&i zWZ}>HMMqL6ul`|d3qkba4>QYR1K4Wo{CqU zM99Y88t#8t`qqz)Q!^BTuKHm%;I*iS6WS8~&< z-N?=8lp0aQd^!(1*iHC#+WUDK?>m((8}Qdx)z8@`VD|MScZ-qbV^KQ}O6hgk?<0Mr z$so*fszV?#CDRW#hy2}LM+s1*?}>t&byHn*xVQM_aB*0cf5Px_wD5B?PQ9xkMoxN` z2S1+pn^!37)7Zr_O{Vg2Fk@yTzCJ~UqVT&pOVPY?kZw`@*bd8VB_U?BdXSEZiANxj zy{|*CXvJR$6gLRd>^!h9#AkiK5$RlgBpt`Gm?A9qj?DnnsEYPI8ocMyth>8vmsHtdu6x`~wK7&ZvK&KT6GfIv zZ=Km1&C!}IZ;3`nmkZqo_nxEUBG8GZG$hWNmI-^;)hz3uRV2({Y*@TTKthszh3;-m z!-$Gd2$$TBj6D9T|wv-x;7c+C;$M;`H*g-wB9dQwP zV9?;DGg44o5p`7=RE5$Skc_ymKdFABz3QFebk;Zz=*9$>HHI$LpI7pyruvfZ6ZvH` zA)lBn$FhtKKPxh~zGW7>C@YtSp7W*jKI7k;eP1xDMwANbT={;e%E`$=W93FMX=&gP zHxGF0u=3R&7r~YgfaP9hFtUaR-bU5sQDqgm+L;-B;Nuv?qaq@@^wg(qWzAexRJogd zBn-XRb>zz#4DC*@S|5{SIS>psVXuxgf2F77%rqI1^#ept_CRCwPs4ytJau+1AUI;) z;eUD$1`1d>64hJ($|C7S&H>74hddL%zP0PBae{Ep2p_qIRAl%wjxMS*wyYZ zf9o=1da*XePe4mu_>f=U_hypvZfSNpgkrJY2djVN8=rA;4W`RY-RZiS?0?&yL|gyk zZLMxWFabgM(biqiLfx`9||+kQ!4GeEc|{T1fO zfHCf)=|^~6Gt_Bd^lCYYq|y5PF!vk+qb9;5%8M2y$BFvqxh&@29ejn~l{%$(t=9m9 zP7fP6FYd~g(`OA0(Gl9;x+qCfdTg|xuBA?Is0^u)SDUFfW+39-JbhIA8O)<2ySj^4 xikYLCs8jFNhz<8-N9CiQJO829e+=LWcmI`p%d1m4fb)K#X9}v1%N`l~{}