From ec253c4e2853e375b2012b72a4fc7fc65ba3ad43 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 28 Jun 2017 04:01:35 -0500 Subject: [PATCH] [MIRROR] cryotube pod improvements (#1681) * Bay-like cryotube pods * Update cryo.dm * Delete cryo.dm.rej * Delete cryo.dm * cryogenics.dmi --- .../components/unary_devices/cryo.dm | 741 +++++++++--------- icons/obj/cryo_mobs.dmi | Bin 0 -> 2944 bytes icons/obj/cryogenics.dmi | Bin 25899 -> 34546 bytes 3 files changed, 379 insertions(+), 362 deletions(-) create mode 100644 icons/obj/cryo_mobs.dmi diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index f9eedade4c..ecde4148d4 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -1,365 +1,382 @@ -/obj/machinery/atmospherics/components/unary/cryo_cell - name = "cryo cell" - icon = 'icons/obj/cryogenics.dmi' - icon_state = "pod0" - density = 1 - anchored = 1 - obj_integrity = 350 - max_integrity = 350 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 30, acid = 30) - layer = ABOVE_WINDOW_LAYER - - var/on = FALSE - state_open = FALSE - var/autoeject = FALSE - var/volume = 100 - var/running_bob_animation = FALSE - - var/efficiency = 1 - var/sleep_factor = 750 - var/paralyze_factor = 1000 - var/heat_capacity = 20000 - var/conduction_coefficient = 0.30 - - var/obj/item/weapon/reagent_containers/glass/beaker = null - var/reagent_transfer = 0 - - var/obj/item/device/radio/radio - var/radio_key = /obj/item/device/encryptionkey/headset_med - var/radio_channel = "Medical" - +#define CRYOMOBS 'icons/obj/cryo_mobs.dmi' + +/obj/machinery/atmospherics/components/unary/cryo_cell + name = "cryo cell" + icon = 'icons/obj/cryogenics.dmi' + icon_state = "pod-off" + density = 1 + anchored = 1 + obj_integrity = 350 + max_integrity = 350 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 30, acid = 30) + + var/on = FALSE + state_open = FALSE + var/autoeject = FALSE + var/volume = 100 + + var/efficiency = 1 + var/sleep_factor = 750 + var/paralyze_factor = 1000 + var/heat_capacity = 20000 + var/conduction_coefficient = 0.30 + + var/obj/item/weapon/reagent_containers/glass/beaker = null + var/reagent_transfer = 0 + + var/obj/item/device/radio/radio + var/radio_key = /obj/item/device/encryptionkey/headset_med + var/radio_channel = "Medical" + + var/running_bob_anim = FALSE + /obj/machinery/atmospherics/components/unary/cryo_cell/Initialize() . = ..() - initialize_directions = dir + initialize_directions = dir var/obj/item/weapon/circuitboard/machine/cryo_tube/B = new - B.apply_default_parts(src) - - radio = new(src) - radio.keyslot = new radio_key - radio.subspace_transmission = 1 - radio.canhear_range = 0 - radio.recalculateChannels() - -/obj/item/weapon/circuitboard/machine/cryo_tube - name = "Cryotube (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/cryo_cell - origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3" - req_components = list( - /obj/item/weapon/stock_parts/matter_bin = 1, - /obj/item/stack/cable_coil = 1, - /obj/item/weapon/stock_parts/console_screen = 1, - /obj/item/stack/sheet/glass = 2) - -/obj/machinery/atmospherics/components/unary/cryo_cell/on_construction() - ..(dir, dir) - -/obj/machinery/atmospherics/components/unary/cryo_cell/RefreshParts() - var/C - for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) - C += M.rating - - efficiency = initial(efficiency) * C - sleep_factor = initial(sleep_factor) * C - paralyze_factor = initial(paralyze_factor) * C - heat_capacity = initial(heat_capacity) / C - conduction_coefficient = initial(conduction_coefficient) * C - -/obj/machinery/atmospherics/components/unary/cryo_cell/Destroy() - qdel(radio) - radio = null - if(beaker) - qdel(beaker) - beaker = null - return ..() - -/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target) - ..() - if(beaker) - beaker.ex_act(severity, target) - -/obj/machinery/atmospherics/components/unary/cryo_cell/handle_atom_del(atom/A) - ..() - if(A == beaker) - beaker = null - updateUsrDialog() - -/obj/machinery/atmospherics/components/unary/cryo_cell/on_deconstruction() - if(beaker) - beaker.forceMove(loc) - beaker = null - -/obj/machinery/atmospherics/components/unary/cryo_cell/update_icon() - handle_update_icon() - -/obj/machinery/atmospherics/components/unary/cryo_cell/proc/handle_update_icon() //making another proc to avoid spam in update_icon - overlays.Cut() //empty the overlay proc, just in case - - if(panel_open) - icon_state = "pod0-o" - else if(state_open) - icon_state = "pod0" - else if(on && is_operational()) - if(occupant) - var/image/pickle = image(occupant.icon, occupant.icon_state) - pickle.overlays = occupant.overlays - pickle.pixel_y = 22 - overlays += pickle - icon_state = "pod1" - var/up = 0 //used to see if we are going up or down, 1 is down, 2 is up - spawn(0) // Without this, the icon update will block. The new thread will die once the occupant leaves. - running_bob_animation = TRUE - while(occupant) - overlays -= "lid1" //have to remove the overlays first, to force an update- remove cloning pod overlay - overlays -= pickle //remove mob overlay - - switch(pickle.pixel_y) //this looks messy as fuck but it works, switch won't call itself twice - - if(23) //inbetween state, for smoothness - switch(up) //this is set later in the switch, to keep track of where the mob is supposed to go - if(2) //2 is up - pickle.pixel_y = 24 //set to highest - - if(1) //1 is down - pickle.pixel_y = 22 //set to lowest - - if(22) //mob is at it's lowest - pickle.pixel_y = 23 //set to inbetween - up = 2 //have to go up - - if(24) //mob is at it's highest - pickle.pixel_y = 23 //set to inbetween - up = 1 //have to go down - - overlays += pickle //re-add the mob to the icon - overlays += "lid1" //re-add the overlay of the pod, they are inside it, not floating - - sleep(7) //don't want to jiggle violently, just slowly bob - return - running_bob_animation = FALSE - else - icon_state = "pod1" - overlays += "lid0" //have to remove the overlays first, to force an update- remove cloning pod overlay - else - icon_state = "pod0" - overlays += "lid0" //if no occupant, just put the lid overlay on, and ignore the rest - -/obj/machinery/atmospherics/components/unary/cryo_cell/process() - ..() - - if(!on) - return - if(!is_operational()) - on = FALSE - update_icon() - return - var/datum/gas_mixture/air1 = AIR1 - var/turf/T = get_turf(src) - if(occupant) - var/mob/living/mob_occupant = occupant - if(mob_occupant.health >= mob_occupant.getMaxHealth()) // Don't bother with fully healed people. - on = FALSE - update_icon() - playsound(T, 'sound/machines/cryo_warning.ogg', volume) // Bug the doctors. - radio.talk_into(src, "Patient fully restored", radio_channel, get_spans(), get_default_language()) - if(autoeject) // Eject if configured. - radio.talk_into(src, "Auto ejecting patient now", radio_channel, get_spans(), get_default_language()) - open_machine() - return - else if(mob_occupant.stat == DEAD) // We don't bother with dead people. - return - if(autoeject) // Eject if configured. - open_machine() - return - if(air1.gases.len) - if(mob_occupant.bodytemperature < T0C) // Sleepytime. Why? More cryo magic. - mob_occupant.Sleeping((mob_occupant.bodytemperature / sleep_factor) * 100) - mob_occupant.Paralyse((mob_occupant.bodytemperature / paralyze_factor) * 100) - - if(beaker) - if(reagent_transfer == 0) // Magically transfer reagents. Because cryo magic. - beaker.reagents.trans_to(occupant, 1, 10 * efficiency) // Transfer reagents, multiplied because cryo magic. - beaker.reagents.reaction(occupant, VAPOR) - air1.gases["o2"][MOLES] -= 2 / efficiency // Lets use gas for this. - if(++reagent_transfer >= 10 * efficiency) // Throttle reagent transfer (higher efficiency will transfer the same amount but consume less from the beaker). - reagent_transfer = 0 - return 1 - -/obj/machinery/atmospherics/components/unary/cryo_cell/process_atmos() - ..() - if(!on) - return - var/datum/gas_mixture/air1 = AIR1 - if(!NODE1 || !AIR1 || !air1.gases.len || air1.gases["o2"][MOLES] < 5) // Turn off if the machine won't work. - on = FALSE - update_icon() - return - if(occupant) - var/mob/living/mob_occupant = occupant - var/cold_protection = 0 - var/mob/living/carbon/human/H = occupant - if(istype(H)) - cold_protection = H.get_cold_protection(air1.temperature) - - var/temperature_delta = air1.temperature - mob_occupant.bodytemperature // The only semi-realistic thing here: share temperature between the cell and the occupant. - if(abs(temperature_delta) > 1) - var/air_heat_capacity = air1.heat_capacity() - var/heat = ((1 - cold_protection) / 10 + conduction_coefficient) \ - * temperature_delta * \ - (air_heat_capacity * heat_capacity / (air_heat_capacity + heat_capacity)) - air1.temperature = max(air1.temperature - heat / air_heat_capacity, TCMB) - mob_occupant.bodytemperature = max(mob_occupant.bodytemperature + heat / heat_capacity, TCMB) - - air1.gases["o2"][MOLES] -= 0.5 / efficiency // Magically consume gas? Why not, we run on cryo magic. - -/obj/machinery/atmospherics/components/unary/cryo_cell/power_change() - ..() - update_icon() - -/obj/machinery/atmospherics/components/unary/cryo_cell/relaymove(mob/user) - container_resist(user) - -/obj/machinery/atmospherics/components/unary/cryo_cell/open_machine(drop = 0) - if(!state_open && !panel_open) - on = FALSE - ..() - for(var/mob/M in contents) //only drop mobs - M.forceMove(get_turf(src)) - if(isliving(M)) - var/mob/living/L = M - L.update_canmove() - occupant = null - -/obj/machinery/atmospherics/components/unary/cryo_cell/close_machine(mob/living/carbon/user) - if((isnull(user) || istype(user)) && state_open && !panel_open) - ..(user) - return occupant - -/obj/machinery/atmospherics/components/unary/cryo_cell/container_resist(mob/living/user) - to_chat(user, "You struggle inside the cryotube, kicking the release with your foot... (This will take around 30 seconds.)") - audible_message("You hear a thump from [src].") - if(do_after(user, 300)) - if(occupant == user) // Check they're still here. - open_machine() - -/obj/machinery/atmospherics/components/unary/cryo_cell/examine(mob/user) - ..() - if(occupant) - if(on) - to_chat(user, "Someone's inside [src]!") - else - to_chat(user, "You can barely make out a form floating in [src].") - else - to_chat(user, "[src] seems empty.") - -/obj/machinery/atmospherics/components/unary/cryo_cell/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) - return - close_machine(target) - -/obj/machinery/atmospherics/components/unary/cryo_cell/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/reagent_containers/glass)) - . = 1 //no afterattack - if(beaker) - to_chat(user, "A beaker is already loaded into [src]!") - return - if(!user.drop_item()) - return - beaker = I - I.loc = src - user.visible_message("[user] places [I] in [src].", \ - "You place [I] in [src].") - var/reagentlist = pretty_string_from_reagent_list(I.reagents.reagent_list) - log_game("[key_name(user)] added an [I] to cyro containing [reagentlist]") - - return - if(!on && !occupant && !state_open) - if(default_deconstruction_screwdriver(user, "pod0-o", "pod0", I)) - return - if(exchange_parts(user, I)) - return - if(default_change_direction_wrench(user, I)) - return - if(default_pry_open(I)) - return - if(default_deconstruction_crowbar(I)) - return - return ..() - -/obj/machinery/atmospherics/components/unary/cryo_cell/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ - datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state) - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "cryo", name, 400, 550, master_ui, state) - ui.open() - -/obj/machinery/atmospherics/components/unary/cryo_cell/ui_data() - var/list/data = list() - data["isOperating"] = on - data["hasOccupant"] = occupant ? 1 : 0 - data["isOpen"] = state_open - data["autoEject"] = autoeject - - var/list/occupantData = list() - if(occupant) - var/mob/living/mob_occupant = occupant - occupantData["name"] = mob_occupant.name - occupantData["stat"] = mob_occupant.stat - occupantData["health"] = mob_occupant.health - occupantData["maxHealth"] = mob_occupant.maxHealth - occupantData["minHealth"] = HEALTH_THRESHOLD_DEAD - occupantData["bruteLoss"] = mob_occupant.getBruteLoss() - occupantData["oxyLoss"] = mob_occupant.getOxyLoss() - occupantData["toxLoss"] = mob_occupant.getToxLoss() - occupantData["fireLoss"] = mob_occupant.getFireLoss() - occupantData["bodyTemperature"] = mob_occupant.bodytemperature - data["occupant"] = occupantData - - - var/datum/gas_mixture/air1 = AIR1 - data["cellTemperature"] = round(air1.temperature) - - data["isBeakerLoaded"] = beaker ? 1 : 0 - var beakerContents = list() - if(beaker && beaker.reagents && beaker.reagents.reagent_list.len) - for(var/datum/reagent/R in beaker.reagents.reagent_list) - beakerContents += list(list("name" = R.name, "volume" = R.volume)) - data["beakerContents"] = beakerContents - return data - -/obj/machinery/atmospherics/components/unary/cryo_cell/ui_act(action, params) - if(..()) - return - switch(action) - if("power") - if(on) - on = FALSE - else if(!state_open) - on = TRUE - . = TRUE - if("door") - if(state_open) - close_machine() - else - open_machine() - . = TRUE - if("autoeject") - autoeject = !autoeject - . = TRUE - if("ejectbeaker") - if(beaker) - beaker.forceMove(loc) - beaker = null - . = TRUE - update_icon() - -/obj/machinery/atmospherics/components/unary/cryo_cell/update_remote_sight(mob/living/user) - return //we don't see the pipe network while inside cryo. - -/obj/machinery/atmospherics/components/unary/cryo_cell/get_remote_view_fullscreens(mob/user) - user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1) - -/obj/machinery/atmospherics/components/unary/cryo_cell/can_crawl_through() - return //can't ventcrawl in or out of cryo. - -/obj/machinery/atmospherics/components/unary/cryo_cell/can_see_pipes() - return 0 //you can't see the pipe network when inside a cryo cell. \ No newline at end of file + B.apply_default_parts(src) + + radio = new(src) + radio.keyslot = new radio_key + radio.subspace_transmission = 1 + radio.canhear_range = 0 + radio.recalculateChannels() + +/obj/item/weapon/circuitboard/machine/cryo_tube + name = "Cryotube (Machine Board)" + build_path = /obj/machinery/atmospherics/components/unary/cryo_cell + origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3" + req_components = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/stack/cable_coil = 1, + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 2) + +/obj/machinery/atmospherics/components/unary/cryo_cell/on_construction() + ..(dir, dir) + +/obj/machinery/atmospherics/components/unary/cryo_cell/RefreshParts() + var/C + for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) + C += M.rating + + efficiency = initial(efficiency) * C + sleep_factor = initial(sleep_factor) * C + paralyze_factor = initial(paralyze_factor) * C + heat_capacity = initial(heat_capacity) / C + conduction_coefficient = initial(conduction_coefficient) * C + +/obj/machinery/atmospherics/components/unary/cryo_cell/Destroy() + qdel(radio) + radio = null + if(beaker) + qdel(beaker) + beaker = null + return ..() + +/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target) + ..() + if(beaker) + beaker.ex_act(severity, target) + +/obj/machinery/atmospherics/components/unary/cryo_cell/handle_atom_del(atom/A) + ..() + if(A == beaker) + beaker = null + updateUsrDialog() + +/obj/machinery/atmospherics/components/unary/cryo_cell/on_deconstruction() + if(beaker) + beaker.forceMove(loc) + beaker = null + +/obj/machinery/atmospherics/components/unary/cryo_cell/update_icon() + cut_overlays() + + if(state_open) + icon_state = "pod-open" + else if(occupant) + var/image/occupant_overlay + + if(ismonkey(occupant)) // Monkey + occupant_overlay = mutable_appearance(CRYOMOBS, "monkey") + + else if(isalienadult(occupant)) + + if(istype(occupant, /mob/living/carbon/alien/humanoid/royal)) // Queen and prae + occupant_overlay = image(CRYOMOBS, "alienq") + + else if(istype(occupant, /mob/living/carbon/alien/humanoid/hunter)) // Hunter + occupant_overlay = image(CRYOMOBS, "alienh") + + else if(istype(occupant, /mob/living/carbon/alien/humanoid/sentinel)) // Sentinel + occupant_overlay = image(CRYOMOBS, "aliens") + + else // Drone (or any other alien that isn't any of the above) + occupant_overlay = image(CRYOMOBS, "aliend") + + else if(ishuman(occupant) || islarva(occupant) || (isanimal(occupant) && !ismegafauna(occupant))) // Mobs that are smaller than cryotube + occupant_overlay = image(occupant.icon, occupant.icon_state) + occupant_overlay.copy_overlays(occupant) + + else // Anything else + occupant_overlay = image(CRYOMOBS, "generic") + + occupant_overlay.dir = SOUTH + occupant_overlay.pixel_y = 22 + + if(on && is_operational() && !running_bob_anim) + icon_state = "pod-on" + running_bob_anim = TRUE + run_bob_anim(TRUE, occupant_overlay) + else + icon_state = "pod-off" + add_overlay(occupant_overlay) + add_overlay("cover-off") + else if(on && is_operational()) + icon_state = "pod-on" + add_overlay("cover-on") + else + icon_state = "pod-off" + add_overlay("cover-off") + + if(panel_open) + add_overlay("pod-panel") + +/obj/machinery/atmospherics/components/unary/cryo_cell/proc/run_bob_anim(anim_up, image/occupant_overlay) + if(!on || !occupant || !is_operational()) + running_bob_anim = FALSE + return + cut_overlays() + if(occupant_overlay.pixel_y != 23) // Same effect as occupant_overlay.pixel_y == 22 || occupant_overlay.pixel_y == 24 + anim_up = occupant_overlay.pixel_y == 22 // Same effect as if(occupant_overlay.pixel_y == 22) anim_up = TRUE ; if(occupant_overlay.pixel_y == 24) anim_up = FALSE + if(anim_up) + occupant_overlay.pixel_y++ + else + occupant_overlay.pixel_y-- + add_overlay(occupant_overlay) + add_overlay("cover-on") + addtimer(CALLBACK(src, .proc/run_bob_anim, anim_up, occupant_overlay), 7, TIMER_UNIQUE) + +/obj/machinery/atmospherics/components/unary/cryo_cell/process() + ..() + + if(!on) + return + if(!is_operational()) + on = FALSE + update_icon() + return + var/datum/gas_mixture/air1 = AIR1 + var/turf/T = get_turf(src) + if(occupant) + var/mob/living/mob_occupant = occupant + if(mob_occupant.health >= 100) // Don't bother with fully healed people. + on = FALSE + update_icon() + playsound(T, 'sound/machines/cryo_warning.ogg', volume) // Bug the doctors. + radio.talk_into(src, "Patient fully restored", radio_channel, get_spans(), get_default_language()) + if(autoeject) // Eject if configured. + radio.talk_into(src, "Auto ejecting patient now", radio_channel, get_spans(), get_default_language()) + open_machine() + return + else if(mob_occupant.stat == DEAD) // We don't bother with dead people. + return + if(autoeject) // Eject if configured. + open_machine() + return + if(air1.gases.len) + if(mob_occupant.bodytemperature < T0C) // Sleepytime. Why? More cryo magic. + mob_occupant.Sleeping((mob_occupant.bodytemperature / sleep_factor) * 100) + mob_occupant.Paralyse((mob_occupant.bodytemperature / paralyze_factor) * 100) + + if(beaker) + if(reagent_transfer == 0) // Magically transfer reagents. Because cryo magic. + beaker.reagents.trans_to(occupant, 1, 10 * efficiency) // Transfer reagents, multiplied because cryo magic. + beaker.reagents.reaction(occupant, VAPOR) + air1.gases["o2"][MOLES] -= 2 / efficiency // Lets use gas for this. + if(++reagent_transfer >= 10 * efficiency) // Throttle reagent transfer (higher efficiency will transfer the same amount but consume less from the beaker). + reagent_transfer = 0 + return 1 + +/obj/machinery/atmospherics/components/unary/cryo_cell/process_atmos() + ..() + if(!on) + return + var/datum/gas_mixture/air1 = AIR1 + if(!NODE1 || !AIR1 || !air1.gases.len || air1.gases["o2"][MOLES] < 5) // Turn off if the machine won't work. + on = FALSE + update_icon() + return + if(occupant) + var/mob/living/mob_occupant = occupant + var/cold_protection = 0 + var/mob/living/carbon/human/H = occupant + if(istype(H)) + cold_protection = H.get_cold_protection(air1.temperature) + + var/temperature_delta = air1.temperature - mob_occupant.bodytemperature // The only semi-realistic thing here: share temperature between the cell and the occupant. + if(abs(temperature_delta) > 1) + var/air_heat_capacity = air1.heat_capacity() + var/heat = ((1 - cold_protection) / 10 + conduction_coefficient) \ + * temperature_delta * \ + (air_heat_capacity * heat_capacity / (air_heat_capacity + heat_capacity)) + air1.temperature = max(air1.temperature - heat / air_heat_capacity, TCMB) + mob_occupant.bodytemperature = max(mob_occupant.bodytemperature + heat / heat_capacity, TCMB) + + air1.gases["o2"][MOLES] -= 0.5 / efficiency // Magically consume gas? Why not, we run on cryo magic. + +/obj/machinery/atmospherics/components/unary/cryo_cell/power_change() + ..() + update_icon() + +/obj/machinery/atmospherics/components/unary/cryo_cell/relaymove(mob/user) + container_resist(user) + +/obj/machinery/atmospherics/components/unary/cryo_cell/open_machine(drop = 0) + if(!state_open && !panel_open) + on = FALSE + ..() + for(var/mob/M in contents) //only drop mobs + M.forceMove(get_turf(src)) + if(isliving(M)) + var/mob/living/L = M + L.update_canmove() + occupant = null + update_icon() + +/obj/machinery/atmospherics/components/unary/cryo_cell/close_machine(mob/living/carbon/user) + if((isnull(user) || istype(user)) && state_open && !panel_open) + ..(user) + return occupant + +/obj/machinery/atmospherics/components/unary/cryo_cell/container_resist(mob/living/user) + to_chat(user, "You struggle inside the cryotube, kicking the release with your foot... (This will take around 30 seconds.)") + audible_message("You hear a thump from [src].") + if(do_after(user, 300)) + if(occupant == user) // Check they're still here. + open_machine() + +/obj/machinery/atmospherics/components/unary/cryo_cell/examine(mob/user) + ..() + if(occupant) + if(on) + to_chat(user, "Someone's inside [src]!") + else + to_chat(user, "You can barely make out a form floating in [src].") + else + to_chat(user, "[src] seems empty.") + +/obj/machinery/atmospherics/components/unary/cryo_cell/MouseDrop_T(mob/target, mob/user) + if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) + return + close_machine(target) + +/obj/machinery/atmospherics/components/unary/cryo_cell/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/reagent_containers/glass)) + . = 1 //no afterattack + if(beaker) + to_chat(user, "A beaker is already loaded into [src]!") + return + if(!user.drop_item()) + return + beaker = I + I.loc = src + user.visible_message("[user] places [I] in [src].", \ + "You place [I] in [src].") + var/reagentlist = pretty_string_from_reagent_list(I.reagents.reagent_list) + log_game("[key_name(user)] added an [I] to cyro containing [reagentlist]") + return + if(!on && !occupant && !state_open) + if(default_deconstruction_screwdriver(user, "cell-o", "cell-off", I)) + return + if(exchange_parts(user, I)) + return + if(default_change_direction_wrench(user, I)) + return + if(default_pry_open(I)) + return + if(default_deconstruction_crowbar(I)) + return + return ..() + +/obj/machinery/atmospherics/components/unary/cryo_cell/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "cryo", name, 400, 550, master_ui, state) + ui.open() + +/obj/machinery/atmospherics/components/unary/cryo_cell/ui_data() + var/list/data = list() + data["isOperating"] = on + data["hasOccupant"] = occupant ? 1 : 0 + data["isOpen"] = state_open + data["autoEject"] = autoeject + + var/list/occupantData = list() + if(occupant) + var/mob/living/mob_occupant = occupant + occupantData["name"] = mob_occupant.name + occupantData["stat"] = mob_occupant.stat + occupantData["health"] = mob_occupant.health + occupantData["maxHealth"] = mob_occupant.maxHealth + occupantData["minHealth"] = HEALTH_THRESHOLD_DEAD + occupantData["bruteLoss"] = mob_occupant.getBruteLoss() + occupantData["oxyLoss"] = mob_occupant.getOxyLoss() + occupantData["toxLoss"] = mob_occupant.getToxLoss() + occupantData["fireLoss"] = mob_occupant.getFireLoss() + occupantData["bodyTemperature"] = mob_occupant.bodytemperature + data["occupant"] = occupantData + + + var/datum/gas_mixture/air1 = AIR1 + data["cellTemperature"] = round(air1.temperature) + + data["isBeakerLoaded"] = beaker ? 1 : 0 + var beakerContents = list() + if(beaker && beaker.reagents && beaker.reagents.reagent_list.len) + for(var/datum/reagent/R in beaker.reagents.reagent_list) + beakerContents += list(list("name" = R.name, "volume" = R.volume)) + data["beakerContents"] = beakerContents + return data + +/obj/machinery/atmospherics/components/unary/cryo_cell/ui_act(action, params) + if(..()) + return + switch(action) + if("power") + if(on) + on = FALSE + else if(!state_open) + on = TRUE + . = TRUE + if("door") + if(state_open) + close_machine() + else + open_machine() + . = TRUE + if("autoeject") + autoeject = !autoeject + . = TRUE + if("ejectbeaker") + if(beaker) + beaker.forceMove(loc) + beaker = null + . = TRUE + update_icon() + +/obj/machinery/atmospherics/components/unary/cryo_cell/update_remote_sight(mob/living/user) + return //we don't see the pipe network while inside cryo. + +/obj/machinery/atmospherics/components/unary/cryo_cell/get_remote_view_fullscreens(mob/user) + user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1) + +/obj/machinery/atmospherics/components/unary/cryo_cell/can_crawl_through() + return //can't ventcrawl in or out of cryo. + +/obj/machinery/atmospherics/components/unary/cryo_cell/can_see_pipes() + return 0 //you can't see the pipe network when inside a cryo cell. + +#undef CRYOMOBS diff --git a/icons/obj/cryo_mobs.dmi b/icons/obj/cryo_mobs.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0707110de4641366814e30ba7da1f89b633b6565 GIT binary patch literal 2944 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 DIOyE* literal 25899 zcma&NcT`is*Y``6CcR1Ty(vYS5PB5>Y0{M{MFN7(xpq25_&HJ0-{3b z9TIv1A-VW_-sipVy5+t1kE~>6oilT0W}iKK@6UJQjh<S#R2!NKLc z``{4YyZeV$qPpeo>vyo}3qK8KU&ps@-hOUCFC3h}ywbGZg!d{`8q;(3#=GxiD}1gV zXT2n5PXkkxL-5&Lf9UpMZtbEb9X_b-9#q%v7dswa#-2v4znF#G^nRycM)7mKYvup; zRdJ>T6Ixo6Dz?&Ga_0X2gC9&uieT&16=$S4N*6aM3#Eyf*iKDBbY8se#*cFoEq#d++ zGybHU{r1ywb^();wjnP8{wI2?&c}@(82&Vb)h|+rEO;<1sUTw(X|~tnx~Lb!PijvF zPZjzaS{6sPBk?03j7=ge^`iBRCAb9l`gaFkOQ&fi&%9odT2@-VP(WQDb6A?$F3*`Q z+nUVJ&zab3yt7!8FAv)ppF&S%*@tCUULG#>8^uVbf4;AFUIct8sLnJtD6;4N?D|LO zmCi;NP4l5V#PGd)!5FanEOflEQ;X>|7R?3rJ)PIHt*2ZLNCuq;96Ps2>lf2f7!BEY3q(xBMHu0Uz%q)Gc^Wv;>> zqA0Yj{VRuMFt!KOJ`f7VEWO)GhV(FWg}y|q9spj4$!@`BaBeRJ!YsN$Fvg{TP0mGl zCr$V;#nBEX7TROe{_~09zHHj`PBv@)>a|F1$tMXTD&()i&~#YfVqJh4u{vgG6%e|P zV_|4Z-qX#Kd=ik1p>LXJwh~HTAiz}}DVOIzwQdW(5gFwx*#z}z11=j324Ubs5_S-} zX~Mi(W4umW_%>t`=n>A0fIq=1)h-7SDzo_2eByq}1yCv0+Hq|`?FoeUTW3k$GCWkC$y4kA6S`wA=bwj;Eado3tJb9u9< zLU@@|>tCI7NQ1?;V2|#ZK9c#iaQL^8ZHMi#+_s4G)YMdpnLC82hnobIjv8Yfo@Ooo zBvI_#4z$a^k9xml@g_ss_$kCLl9FLVYHXgVGmn#(@9S&nqB-6b9c~@vQqQQ5XA&Rh z9P!r*$D&Mwrvn_a>z+e|q!XUkF-nOd|BNj{c?e-!?&;v#gVtY(FMo$5 z)Zjfd$=>1M0Dpo%K?%}(Ox-qu5~f*K$jbHR4l9noY)>lzWh6H#3!pno625zzkKMcP z_kb>>VT#u{Fy#{^_l1;A>2_Y#(g>A;c(uNzgp#UNQ~#WrC3+{WKho&-eYZ=tTWgB+ z!lCDbgqqCKB)Gb#yBY}pvwaw4SO`9ELYhol_D3f<@!Vgdy&JK}n=VS@ak6YknV8P< zKzvGD;122wjwOV4UcT0hMB!`bH}D9@6X?3+vnh^20Vc&^@r~WT%9xXZEWvV_sunHo zmx)a6e|aq+WrxDg5P0-K((_ufs{v5D8 zjO3!d!kC*$F|+7rBR-~l6<&24>h}j6VA@RZu=or4YCQQ%rI2uSM~So9hJI7pWQ&9% zhlyTS25QwUnmk&+oMNg0CKq9PVLYqv`m)TYMB{azNZpD9F-V??56Qmnm%1+cNxz?F z>}N9zs*BIrDBC$NBF#HnZDbyeF?oEdv2v-JKil4!WuBXx_HH@FD|ew3ALkgKPJ6cf zkeG{&kXp2Bt#u#l5(X%j9B(jbdRi#NCCqb?pytIOljgv;dNTt1umxMfACue`aW&>{ zbC0Jjb&GsX5XBiO#Q;~LQBhObF`4C6H42PM82wadW^8+|9*gch6Ddn*IHM!Y4D!un zoMtb5Z2$SOV?|ySl_#f#uKXj0Krg?7>fu&|!@MLTO(cbB-sil00NBroEXc%Te9^IF zGl5iBl9x#}@mL6IRG)sx8aqB*IhC0$Z|8t`{Ndl0 zT0S;be`Cf-f4TRV6Pi%OF@Oe3c37v=$Mc>kNj?6Y@{Bv4znW>ROdAbq-~s!&MtrFt zp%GM>Mzya$u3#A1R%&i482ixQp|T(K@D&r&cnRt425{jNc)%h=r?q;1C^}av-+8Y* zijykN7Dr$e^dc~Rwe-Xqp<0piJ12wVRQ4W#R?aSG+v!MjN<{MDsNr7@9on5^bhC#`lRJ?`?Rk}m8 zPh~inc_UIjtfp&;)Dx@X^S(#7(cQNq^~6l>EeNY)UZTz{<89X4ya+U$D^9o_v%H+W6sRV2I}>L# zr8Y=}`ReYwA3P9ldk{z`Xtq6_XzxqWfE)X5iv!#~p}sFydek?v@J4Bi$mfF~*Xj>i zo)2~kx|O_f00W!>5|@SkakVl%Ix=hB_i!d~)7^ue$a^RibLyJp`64sN*iC-W^O6V> z>J7^4s`+}wy~~{N&mxxD1m4HwMY!rSZ_q|Y`aLo9N{mDk_l6U2nUW#j_T*h66Z-Ls z2{uAXz*Qz71RJXSnfZ0!G~Prz0i((mEvcf`2t))=Gm?6M=+iN>5UqpD##6CXZ>R8I1SgSG z&IAGkB05wczQHNM!>^jr!B804y!%BbYJoD-z5!Q+p(ILUYewGS`9lJe9hT%=!}{`` zNqOn6E#USk{B`(S-NVnNx(N#;Kc4T!t9Mc5s&9l=++es*=HJkT-B|#j&X+SMZ|bvY z!78E2*{`Pvna|XYqK8jM4Yzv8T&8F~Bt8cO`ags?Mk6IQr3LQ3uv?&NP()N@E+twyhf;v zNV`=nbvF~!8Cx0u<*P7V+hz@$;v6aoPqhIe*Y$P~8>ts-EV*2&n!xh1AF~L#MBWmT z!RnX1g)d#jK08q}22b7jKBznX=GW3PgR?yr_|qIiI|jBHQRxg#3qLV+3=VR#&gcbD zNQ7lWU+LnQBC$)LEBsZwxxc$W8W&q~21r5gE1dZE|gWO8E@_Z}CpZq6) z%7l;QX{K`vxu0$bHCe767_zy3=OrNPRg)|zI#ux3{<0RG4}dz+Yd2DlHTEo`SQW~R zbQ|F4GEDfC+bs3u?hEP+!5@T?)WR~;B+jFz=LC^aD`&E=P<6j?vOP~4DH8YFz5Hvv8GN^9@dkpk8|mUHJiVouKsW4LK@dqEN9$zcQGuqg?)OJ+pat2 z=#}vlfM6J_?%B$4^w1k}54Ne`PKt_1HQ-DNBWQ9%n8G+x{53D}+ZC;PDX_vga%fyY z{-fC<1pb}}slxZd^x0=EnN0%wi?%9!Hg5atI;@Kz){Lo0dUCA>-}pjEd)6n$gOUTS zj=8rgpuk11USE)6`Jq8>L$^hE_K47wqEi<^ukVcuFD=OYnaiT<7un!%iCK#LDgtxO z6m630C;|u}ts*5lKC$2{?c8l3_8GX6{5;hXxWAFl_GWgcQlK-ah|aM#N#FyL0=>ai z$z)#K3`1kbltV!^@gxuxCzZqfDuF3W&L$>$5APw0Jo`6@lM07~f^a`=>gQZ-Dia!T zu{(!}t-7DGz`S!Hn`Xo&CZJo)erNtWBEMMggRywsb*ufX1b*EeEOR>@o1Y?vY@GIL+F#~H;Z;dmnYoa%#OU1OZ7_Y7LYgN z0`#VK5iYh!VS!yA2=nLB@*k^zNoN)pmjEe}?jI#e`s6yZ4@<>v>=QhFMKI&ka@e7K#X^Ly5B#~69_J^i{<0N4z z{aiD%u-PMk26YF&(kAu>U9EU(Jb?bFe8O@qps6{#dN5*Sb+YDx3H=Fx+5e~IAQebF z#Ml%h#8A+4;hPd}m1xqe$8<_GoP2w&^20|cH+@Vl5~3WS)sD6r7Y$(SF89nS&T+5vMcv1I+p#1Q6@dL zYBi|oW>Mjb!hXW!Rc|ow&tz0MJ@lUI2%{x zNpKr7Xg`A^WSQsqoWs-2>v79r=NI;|6u^US9mh9rmY46IbyW?Eu%I|jnh{s1Q~P#D zhaz-oT|#rGTxjN7$29LkRByF`B}Rm~sI(+ucKa;w>y>Q`7x*Fi1xgKVTNlSA{@8%^ zCM8CIU0dHl5Xa2^p}j^5mFrf(98TsbWnLbeAXxrZKbuJqER_zn#{c&7$SPkH9M;MZ zIKsgSaJl`ytua95G&+(yKsXxjLsS|cqAkQGQc31h^OD2C;Wy#bbg9kH>#IcQ_Jbce zRd2J7VJU#XZeNNWTcz8TLAns!jMt{K$d$Ik3O$u?TDmGm4G#AV5x8)WP2K_Cc6q$( zaC%wFE_oeTTvwvv6qqYL`y1=Q2HD%(l=!OqblEI10~*5UJ;Ff;V^(*O%4^n{dVlu% zgcr|F-iV7o*Ujw|XCPt`_p5fZ={i}qy>Q5168%r#c%vcJU}fD;V~~egBp5s)?4_m0 zE0kByY}MDFk{)3?x7s}63zL01>KGN&l-!5Wb>0^{)WBY%Z%uKRaeACSDffs;djEV9 zS?4pCb2T1X&Fi=7kgO*Hh36Sw_eq#Z&YnPOps7(yU)5a5co}t2tw)ilRY!z~s7Akq z2n5GWc98omP-0afv zBr1<)x^Q2Aq<+_QHXM#?VLsZ_Sk&jVR zo2bXJo4+y$rz--bX|_4m;6ssBMG$bZ2NQ#K;l8EtxIbm(_iUf~DEOtcj+E@@y_H1H z;)8a4iaNTL;lbR<1D6MPOU?@jOqROm!A4IjXMFkK$f&aSPxv&imx0Y)tk~;9kdMD} z5;Y=CalqP5gjSnzJRI7}dXugG*hom^`T6(L#Aw#}!#>fwtb4>N(U)O|^*5pmg$fEd$Eizo6#Eyqp_$-d5ekSB>NcS8bX(rB-~* zOEx^5g-yHv=3i{=%=f zQ|4s6Q#&ncRsC>|DK;?nm)!G`xEmfJa=U6dr=4EQIotbAA5VZ?7v^4VYxmN4dqWJ< zMD5yZPqMEH-V;&2Mbs5?RA6w{Rk?f`PM#9qOCMbmVYeOMFd&zFU>tGK@@B0)n|WS1 zJe*K%*~njBF+>ccOGB#riW42FN3}}^eTesm|Lo~B(^Ho22e{`w=YYaf_$n^y7h!#p z(HU}LRg{3^p^Un@u%lG0oQit!I~zWLabPLck#RTm#C|bZ{U|b7`C4$n>cgYWGt@S_ zJ-Hhwb9!f~6$tCO&=#U&rq&#x`^<{4qGBzps-I&wnThjpvO4=~lTl?6p0rf|><2Ef z`>Pf|4wR#&=DZYVxAWIemzr2B!YNkSpJNp8g+dto6j(@dq_h(JwV{IQVTN$+y4daPGRS1CXolK}R0;*7O~w!ak!HS>&eRXuO#? z3#5C`PrP0-JG^ezkuv)3DwR{>i08(iwWJjU)$o3c3`7Kiy)HLXp!{L)7QC!(|1cM6 zQN+s;F^?HaCvAqa25J2XbHfQVh`Cgl;!AD5Qk7-FVs7B}bEX&eC@4Hrb-(VLTD(>e zBrUxi{Og`zI&m>w&h;#(ntrk4lWoGEVx@tiyARS??<$j9av_(8mgl|G*nOfLSNpJ= zi*y$XDQp{Go|4X5O&xBJl1wc4*n1edj>4>Rm)xja(LZ&asT-7C zruN@yG5b7M_fhI$CYcxEE4P;&$dPhvlw(K%5oewfvC3u7$HXb?J>bnDIVBJpnYR;&2L-t zlIS^JdTrBfnzvpLrvT)-)lSam41KQtz>7~K?48d03)jgCv7(DMzWt3mEVNmxU(LtU z_4)DwoGc+tzP^Xd9Z^G>s=iX?Mkp@uh<%^+Z^HM#$OGq&WuMoW2c1WUZhDE}RQujq zV_WQ}Kh;0NQOKGT`HsD-yKc1Rj#QccrRIw2sWcg$k}u#VnYwv#LN~FMcGnUh7W$Rw zTgVjz(*lgX9I1OJpDGbwZ zycWiOe%?Ph^|Acl2->dq53;(99o=pGm*~YpRSYxDNKkF>v{xXj%bvb|lKF$0U8f7Sdnvnj@SnVU2@rV3 zy0bez?R_Q&n804c!2P-Y(9|ru;IQ@(FOiQQKRyZC46+Njs190N-T3JV@u>Yy0pIw@ z#1In|i-wGYFRJ~eWMqaq0O;|=ZmL!_u+kmXCfh5UUW@PG(#+_Ad!GE>qLa!&V+NCxwex4s9 zjRUQ>JFsXf9LkAb4Nsxa-QUQLF>!SG#Y5NqJev^WbLmGs(@XLclH-n*t3&9<^>+ za@W`g4zmTsJ&L*8k{W?9WxZ0GD{x~gX}~(AS`3;HlOM1mgrl1#okhQQbxV%Q{RnlZ zeEpB%7zK-YtmFj!*H6Cc{m9VW?vR{Y0N;3s6~s_|{5J;_HFb3{AokB`{=+#IhyS@` zvjplZ(NtvBwhFnbS+h=3|B+m5u%Y{>;Z?A zMK=G8ki<0m26Cz7BD!|NLiYH}CyrMhUUVFIXInH^w1M0< z#id1>zSbxzDmm=XQ60m-!+55~XA-(W`5gmv3A4uk84lh-!F`UVM1Hk9D=t{NRQsX_ z3vN*Rw3Lf$WHf4=GbA53tlRghSh90It&g#FAWHyku9ML}Rson(9vhkF#L5|c@0Eu@ zmmow);U*Z0G<;1RsX|3ayb%1&Fk7efZU5!+(+@UdTP7A~vDl-4e=nSfa!+#S!7wA6 z^&8pE#g&_|@UtpxZa(Z0vF-mOvH2-1)41O^?sD%y>?}h*sZjn|skv&MaENnIRvQwZFnUy?LseCuFkZ<-qR^iJm?!L ztN#tmY3H9TM^3DDc~?nKChb3S$NW7r=OO)dc9_-f_m)M*{$7!%>#u-yGSJyM?E~li zL~b{Y`>I<;LA}bXU2F`|G^)|)F_`V|YW!H*DsSU8Q-zxGb%@%H;H4LqY@2MoaAp>bArBc8lb znO&o_jBxHkI?igJVuj&mVb$2?AfpGI4}7u$FlZ&98yM6OP;_l$CLTiFoPm(3E1R#Kq+aW_`MeW{Fdua zE%jXx>#lRq-|b@%Gy)%i%iXu1s!~Y`on~MC@oT)(@9^RLz(xjl#e=hxY)uWLc7h#( z{4zlTpO|dD=!Edh<5`GsnOcru0iZi;@5E<7ldd)-UkB5L;ivJciS}XhL71e%s7ys z;tP`T81WWDB6TK4i4%CuI3tRRLo)wSnthhQuLgIQPdOfm^1MiJH2F|wZDjYE2GaVH zK9Kr@pp6c3yp|fLF{f3kb4+7vH?63xKoeGsi>By-{KZZjAV=aLCWJD?4S8pr*B~4jhq?BC9i*P z-ayw_7o|aU1@9`al{!aMm1PiajX(P7s*_vJBl@-v`IEIAy5y(K@ZQ*P66bY_dO`%r z!r;TD;4^_av5CtZ06<-rke}a|#SRPUDSRA}cOC=e#fZBu<#hgN7B~KHEkN8tjO=E> zc55;&$qSB(w)^=)op?O#hN0lssYp^9B?-;@8a!>Q#$1)wW8$=r4$zHKFLsFaUOghP z9gx!2>G@o*$5qMQ#%baiX}HU$DZ3iJe%O`AaybFh9FcC6>I1PH$K)g=|OsWtSD7 zUW?Xz-~f>Z-$Y34+`YnZ@|jz$_mreFW}V{2eoto>h(k zxO%riOQl9UBSItC{Kd1*Y`cj@W~bssY(}`|duH4&d}GqAf#agr2;pRbRZUt18F~zz zkoOEd=R8a+Rgm*VVLcGdJ`$(?no+n< z2WJykQQ;ZexF8T@3zh3)`&P>`6wXM+_W&5&SBG-a#9aO*{^L8?jZoYJruC4eHS&p_ zL!hY_@GC3_gKY7Z8W$v+q-L0T@jfaal~0}$faAj))B3>UK--k|*Y4XvrJ{p=Z-ua$ zz|ZDK;>7n}s!e!)Q+^rA_c5H?0-(^^BM{C^xNi4C_qhbMglYBsyR}5&A z2%xh6mdXWu06vU`8e=W~#96bv+{ihr#4_STOK`{d9%-cW3t0&m=-~exi82*~t1n;C z$Jcq4AaH{6@n<&u*lSM1wP-XeSXAiQ#H9=AXe`SGw3%9HzI*hWmLBtBp5ZO@0kZm8>bD{BNa@bJYg@7Q_UJEPQqg@B z@ylZ`o{fCP^$ShXEdVWZa(}$2wJ%*_G~?EZoA=`lz(7O3>7O+09R}NLANb44* z71kWnV&hc=+U>#|F&mdx5<@(Kjj^&);Q4zamih*{gP|&^nYpi(iY*_SdFXJy5Eg#i zWATRio2j4>OJSI><|nm2b2?wn$T%-<^?Zr&eSY$9(Hv$*a=?3ih107&mIm{qF^gbp z@nPuiMo7F(7$>^mz&=ZhhvthiZcFK!*hiAT!IMGr*u?OEAjZnINBpc5lB=*|lodpL z0nfQ>BF|xkn5Njn0HLEpB@tJsf=6Zggxx8APZ1EdVX!R<2tM5RMbf@fY~8K#G>h&& z(a&r_U;G4@o)$ii0p{ngeSL?&c4dR*lckZ0=ugP*Nd$(CzD1(;|5;8uNxkzaYlkW0vGZJ#B+$Gz+B*FtdtppsjGgFI5SyFR4ncNe~ELNph z08bK_B6CkvJ=$*>rGEj-*{t}DL0Fhzq?$iCj8J}n&7InVcn-WL2Z!yOiJb00Orq$^ zjV>!v)5Pfmwe=54NH#Nf0^A+K9i^$DNbiLT%K}d{VjJL zD;>O|e4YYG4;!y~@?XRyUP?_P>Y1;4@GZdbBi(^04ITkURzW>`78B@R_x7iBW6b<7 z^A>)gUYUY|gW)Sny@yGweJZGOk>+=6fXd|iHdtBH02!2kev--7TYF@pQ$}`A=tqMg z`wSwdr&?*eiOAUwic3=xIU-0SXKAPU%W%(MqSDTm%6{ghjfcW~) zxaunvmCECGrOFMI6G*xuXo!282q#&{td|n_U&PAd`t)VH^F6aUZxjss;Som6?n6_E z6a$fjjlfLNr2$RXuXe*mTsG^*aN>!}3gX&4r>if*f)ANU)KXODe<76v%WNUQX+z)d z<~(whL~MjURLuQRkfk`K)#NQFY8VlRww>AwM$GfuSoFn4>)7v@&mj`IsnD1~hb)xq zW6@VHyLpK>q*r!45Zzwc$_KMnmKztl# zCwiXF0WPQpD~8owK-*C2d#zu8K!q{c?is)Wh5n~C zH+)o?8xrMM+Riqw|85RkdPh(ejOj>gWUTgfgWPOoLCkzr?RwDX%%w8LU)U=-?t^y% zC5^(M=Z4>GsJ6g!Nizkf)2RlJ?<>E?kYX!U6&oa11y+Bf3=3<&vVgy(STo)dsuvre zR}!nxS(R8ZJFI;F4<(MM-)J=X0d738)mH8@bYbMCLgX=w=pZ#_TX|L8=AOzPo$B0? z&WP4da+!Q>evXrdKP*O4gh**yAX145fIfcIPf zBJ|d|gtJQ#deR1S~Uv17dXh$_x@`GF#xveifDiz`l?msBhpEWSX zkX!2CDwSLOnpa1!ueauZ`28E}1&ImRcM`Lzx7x3Lw9Lfiv44|lnYj5xE}6lQdo=@} zKA_vwD(4A~&+0pz17ooaq}q1Y7<)h;4ZoP~tBw6aLz=R;JQL25(4O(T&GeOz`g1)V zQEVurrQzG!I~d_I8hzQc)_=<2xo08NJkjU)96Lk&(!W8mM2f<(QI2FGXuukQdn8({ zR7|78`UO`_4UwrK@Wsv{+Lyuk{*?UJW)b|59-;XO&j zYPHWvjSOF~aC*o|xu+);(pDM^Maje!Y@QqHKwD!{P(b<^AH@DCi z$RqNU3j#PboJ8D9?m_HhYknN9_2Mh;8REf<2>ca!8%D#TwyFAF7X9L=O71)oijAIx zL6+odJbq=u!Lm34VXYB2N_rxh#PP=M0+*eBq8}`u>`gUmSy^_xEA_k?3o%{Wvio2J zR||e6ktAncp`ta71Z>R= zJEBwa-ynaA;tUY$`vt}ob>q(|ALIYNk+U5seeFX~w_)J7fh%(gusOVEo~It9+8+Ln z**^X_fEZ7lFA&06F)>V%`ZyT4f{G?Q59z^v9$h@mpiRF20j7&hYpxKrve#c4BB(M8(4P8P8{Pl_b@FA~5 z-`yI2)8_ta`$X~VCkrmO3IYEh5F4lR!0qZmugc7Tv!tfCxue0tvS8FtUwKK@Cn+Sm zR6E=*RQGkrACkh0Dx_r`Nt7XkPXEPkOnd&{_zm>#u`IC%QqGqVMzZO){KYlV61r+! zLieNWjY#l9*BG^4{&6bUlYj5l&&U(b{t0s{cxS<_3l0Vg_rK}morxvOY|0nfXXXyOjP#@Ujc?K6W+CIOTG5^l%zz-lJ^4cR$xKt{vKrT7& z0Ccl$bUK;p0`duB|HI(^)lThielJd~eUnjve3tg1kWMdr%{q!JfBK;X8Wg_h^tx`t zhTSrR!^SO|26D>GC*+H*CpYpL)-V0>vmC4MQ5EptNa&}<-oHA#jE=A15~0g8<^DrI zYNcgmUyGvlAe2wSE@SujW5(}yB}oVvdwV6Jn5ciW)Z{ut1i)5vyvDSOLvMriq++wd ze^1Mnfdob7)ir@D=Y6PoDr?zdAH*}v5nS2rCxD*UKK`evZ)yC7 zv4D1EE$z3|?qe5HnGyhq7@4~S1ae16&W~GRgWAfs0<3?|p5Xi|&D#aLXI;Rl^6V; z?tq0cW?U_g?ka(McK}$++V1OXXVoE%#1}Q0LRorp@XCB`SieZ@wcIY84yf%`pS&+_D^X0lp+ z|KXu(`{vxr%10}=YxZ_UlYN28+6@n`T*tQF>WCTLr#)$VZ(Z9~6Ld|MF&Ea3KhA8(qCM)$dI1X2&y9&|`EkWVbm++7%QIQk-Fx1s(BXhJ` zYVz%LGG2Y?4Mh^WJV6inA1q%M#D?@Az>#~4#Nkg2`C=bB33(E_+QF)T##1a8U;90( zA9!-8Yjr32y_?O%ppV1vmM8}f#UR+(VK?M<;PDzpUT6)j zm2i!@`Z7G`tCdRq~;=-Ya9+yOuS#n^SV5^}R&W%m@lpm%j_A54T3o0O*r zFXvjc36jU*Ks6aY1}GK|-N`(|FbVf|)vuO$IBxSpvc)FTcB9ni1mqM#?=SxK^n6v) zII~V{f}-vu(8~x?zRfng8X#_d{QVYiuFf{Se2eIxyy|lQz{rDDzgoHK0bu3@kT-SU zMC}4l4oFNVO9Qe`q6WNgH$c(N-q16g^!C5;`^@ii_-g)<7Jz zvy?-p(>%nNGtRdq01UcK0Y@MdnTueU0r*%J{D%7`iFNZj-vSTu>+|hjEQ0ZqNLJ2{ z?lN|C=j>_HGw)maMdJxZL1NJ1wDK6R^I);Vofs0+S~1h!pD&?T=idEBddQ1qy%BBg zwFjD6>0*2WHAWqy=8(KMs8-Aa9PsT`NZ{@tnDg85%$7wjCKg;e#qt(B@3Z6Fg}=ni z=vM3{ya8bPK!VPDMZG)jDq^&Ogi1BK2lS4DTD63lkXh5k<25y14t9qK95@2&LAN|A ziaEgzgagrcr_)5<^e`{$g=^)L|=sF40YAWRztw z)cfXkH0s4NGCS0CE*R0lbwT->?Cjhj*%pdS96{5xw4Yh=oRe#|jDJ*{*RTUJi->mD zLZ%1cA9w0Dm``+ZLgk4g98D5-)CDJ69V7|#A2@v~?$J$=q+s{EHoMy^ZQny;co{@a z1)2VLs%h8EnbI#MMs zRM3>mAuxP6rZfO?eioal6t+1q+GgUC%lJcD4JY{+oD+bZRWw&hm|X>9X39q)kk4rZ z`GS5_G&?#^?^!~Ay!;ukK@Wd;=IbPod^RWh_d%AYSpwj?ysl6dOEwJ{Hnhi*vIk!G zR3R(Al!NjG!>+F_{C;9#D@Z-e^-Ndi#h6IQ6gHa$xC*3X-z>NHQP;kO1@}Wd7Vh+9 zG@7GYI*L5AFX(HyY8dK#?x4?Z{r6JN*hZf(&#O<)$s`^rDGr|>vaS#*`(W`wJ0XT^ z2Z|fwp|}P-1P|?N{RSzx^DZe&s?!1ug(EM!yGf;s=q=l$vUAl*0!82p4U^*04%{C2OK569I(v$JBY_Kv$jFz*PS{Vs?{IIKE`FyU%R+T>X$vxw% zDc95MwqxHo#jCKj5JQAi-Hoy`_GefcueQ)UXbmN>IDj3%Xn$YFPL_n|&a%3=#Qe<^ ziy}*@PaBZm01?%(F1B z=+QQ{S`Ul<8~?KICA%U?Mg5CIOHUV-DBi4{2z(-)cadp5&Kny9bi%gF>fadA>jQU! zD7`xz{YBHbk%I4`eRZ*BiBVkCAX)U{m30EZ^!7JlzsXc1;i6B|sNHIo#gpot#v4X# z%57mV5PiED!g#yval-ZR@$*B}RV}Y}VbHykf_M-`p{0$>4=WRq=|v9{6^}^?^hh!{ z4XvsgRisLaih}Zxv$X(|2;F*1uh*O0vzpAhk52uk;Qg}P>oMqEXz_OCI)GSB!OnVp} zMb)}@LPk!Y;?Y%h@7LI(p4dA0GPUbqjN=>TpclT2Yc@3=H{fBjyXK87a#lGhC`J1Z zmD{r$0XD1cZ}-Q?L)rH!l{g$MunCoK;t1{}gBjzK0^$Q>kcEpkS@daTfs7sex@ibn z*wuBgm`y0H=hh9?R3e9(oJ3eP27rAJWEONa{rm0!p?3OB1&XeR3>wh&~=A@7EQVra;)uxOf0Ukhb*u*;V@VH z&5}Xu8frH}nc7M-Ss$w4%C8?Ie*a{rQVIPg^Zhb%A%W=fn2@^jsx6ogC>^P#((<@f z?hD=bV@%=}oF5lYhsXvK%Id)E1Ym1F>tci++F|6r zJBL#7O2a&tWI1?}Ii!d&>Hb6f?DSmlif5eiRf^MKdlz#vSfiD@44*!p)T;VvxaulX#83BTKF`N-`AkGDQM^5N zzz>l6#mi%@!~0nQ4X+&h9UWdeejR+||A6N;FUNyn;f3&0^F4<)UKW<9s7JfcDm&(% z2P|d`hXAo7AWO@6Gu!NU&KxMn?yiF5nF;*5>naS+J>n$efo%2e`)a7n#hVPRY;6_f zs0Z;Bd;Uzc7e>!z!+laSm40ve@PE50V3Ma4?4fRWE>(1}701rX9--j(xorBJd#2e) zTVicuB+iUQYFjk;T>!xU5EgqOVo?leAi|+a)KU?ed}l!1;|xBaPCP06-PIvzZ%p?f zX3ccsVm*r#>$e?(Hp`gC&q*cq*7*AK{%&w{_!N1v%3SrIUsW`tX#{Fcc`RK~-$DoK zDx7iUnrlSIi_(k1aJz>?d1Zi|C%{*tC+&2-683aID*LbpTjS-L$bRSjxu;v-?WKB& zG&oyO%{fb>OyUPkF(D*eMs$NGLON*#dX-X)gyCoH$Y(!i&Bbg+M@{Au zCA2;>4}#qnf$j`p*n1-zPj@ZL?_EdhF%_03Put2e)%>>>fR4zowq3&A+_*a7)yuhp z2$7uI^&G|EkbDL;UYdsOCew#h>)YU0gQU}-Df!1=t;|fq8W6x;OWQR21H?@{7`k=^ z47WK8XVn+DBs;mSXZmv2O+rgJdm+=Z1lLr}E89mfUYhv3jAKX8#TY-ath*wj(17=4 z4uA1X#eo~fL#r2yh7=AZy(jY7`Q2QAjG}td0koe)mi9qIVJm59s~8v%4YX>yH+}pk zR-(3TlopnSdn$Dw;3z}L@MUV3D-aKdRfGFkjflI$&|5OL!6$S+5bI;EmqVcKQ9R69 z>`KpdE>H_wpcH}7L@w4@?PWt>ZH?uebq#^R+!5p=7VBBS&f|FaI1Y*>rZ6Iho9sCm z+mzHO?wjU%-|Cv^GZSeny{6A&F5l#CV%Ym#inz5`qi}QNN4t;z6(p(W78lx&30cqaZrySNfo_Fx$WU`Z)yl-{MgRlb180@5jhAh~pibV+yTk_#-m@9OXU^FGhLGiT0c&YX#J z=Kk6E-9;<*Jt&O*F>bU?hY*S9DUzs8163^M3Sbp#e|08gh{(svj?NwzV11pl)qGbl zLyN-Gp2Vn!$ei}n0N~7=1;9F_p?q{^fOKo|!~Z2nhZ+tEd57s&Fli_b=CH#ogHWQR z;or|>n&u}gKR3IYuAS1%#%hswcxA_Tu~8nx^_*+1?)9JOvhV*oS!ro>M|uL6Yks}! z++R|51wedX##LHH;Ba8szmq=sx&7UinVFfhE|}<}fg_wPl_`r-M}G}MAwxL1EUF2N zHkvV~Ig**-+%z3s`5Aawh=etx0(FtXu<}@CFUe1wB;BJI^5495b^~9OG5r<~(OIe4 zx=-|Rir!1)cH7Ffb|#|R$1Pi$m+%q&GN`vBgW=7RKyEP^sU1pKiDQTU_Nu!MS zgA4ok4{T))@k>;D;Oaf4T=kqFk%lPa4;L5D-I3=7%P#%4!D~B|Ijo4!cegL$n6M<% zWR1MVI$uMBx$e-9M%m&-rg-kWP2d@v0$5BKH}D61>QH&I*V(Yt0_b44ec+u1VkQ?D z`d;ThW6zwPDRJN>(F}xoY5fT-7)LrD2B;ZIBR}8GAlC1m%eAUCR{qHy%P+3!OXt~* zKIQmRwm(fks}(v)N^Ljz(eLLM8=l$*tl>n<@LcBp2FsQ+<~-ZwxK}moE}%(Kue&61 zIZaM^g0MFpd=>&APtFaGLra`VQJcc_zj__9>9HWangE&rG)dn*SV0g|AZPOot)iB4 zR7Oc%D4-^D*afupp*>|JtIR4=ZXSDb6md#t+y8OLr;7_J(t@*J33j`~7oH(8R40?*XKOJfaMcTJ_@o6&EI#()w3l?w}5JZ6S;0!fm_(p3X zN_E*MDpI6w!OZ5u4qwzA=o1x6N=uV^3)E^&;+&-}jHpE2?w~K<%NOH77LF}HoSnQ{ zGBiXLx3@P(!3wdwPfpTgNAr=z7g5oUeZYLP=R}-F&cvlul(i>XCVno)9gL`@#p^7> zI`<_JZ_;i#430ANS^7CXTjQ*BXX2GsN2g0el#IQ8F)PIA<97$AzjJY)UsRSeK<<{? zIBq`Q$ru_VG+$Gjv_CNXNlTso2Vk*CB=n8-xSDoJDdQb^8mvpmL4>^9?MRj2ycFcXh>adqT_NUSXgUPD&luRH_`B2h}%OtY1p zS0Q&yU64R)KjSq)=TPpis|`B~9;UzC{1*kv^d>d;-qJq zSzmmhcDRrd(-6G(yast*)AqoUGu2j~mGQyOV%F()wegZBcFz<9Af%0>p-H@13`|tR zb)O0On2=pm4CR=c~~}+!v>LPSQYd8kx4zx?~bQ_pk9Nh6MlH4Q2dj~m0Ck6fTkohVY?O=JHGuyp0 z68Kz3fgBZ+)EIISSMvTn$n{~rRvn`bDY<0U;@p$2t1zV}loU%>W`I{OVZ><}Zz?$6 z@0NO?{IIuWPp4ntY^|UhlQ#Z)E>}#bI9p|0Q%tDBkkb|l#8Er`X)*$os3S@FX##xo z!9b`kn0SE4zkv1ODV^DmbjNnji$}b0aP}E7M`Ef!Y|J6?mos8nbCp(D}O^!Vt6wY)lh5q?be|1Z_`z@H_F~sHk)9`0;-Q64qVFu*f zJJW7aQlSr>G&}O2NpfD_2X{%z5fIp|zUPa}=9Eiy^w%O6$eX@zTjcS_I&9oX0PXHp zg>8sCfq9xlQWk(WO*M>5=;;>;XF~xQ?LH^}DWXKz_$o}QvQP7?4-l(eguv!CAjKPD zy$@j`p$s&s1ndeO0KMM*YW)ao;Zc#7(bb(o8c@D18krV~qovGmQt9{&qCGy+3pZBA zd|#=~6x(0_+8+LlwFwo!SPnW_Yuj0lDLa_?t-3TH8q1J@749rBw?l=+iX~;ei)XKn z{effPY4=y)?WO>0%cze&vv&2@kR0hyjotoxajmb`B-RW#Mw3TXBX4n(7)t5F z*j2|igmElw)xTQ--yI=tMj>PXiSOPH#|im{4hkPdq%_HyJ#&qpp*zBY!IH$Q zycd(3W)F@LkB*wkWXV=f|vrmwtD!m+NH|zVF^i)+~wr zY!RaSaAyuD@w2%q|3{9JSBiXhS^IkRZWPH<8h4HLyB9;OXYj+xUEt|=a!_33Xe;^Q z4FK@1)a{WDm!N+;#L0=fhJxtRfzD6jFL!2Ov4xv_1u+F>(ydY{wJS~z)c}6$8@1BfDFFGf>m0&j_T^_@9nAoL>=dy$F!WeaA^(Ry! zf^0!I)(2KME%{oe>wNd7bHRE7%}=AQ4pCZWq=V%@pZe>F>-%tF>!||LO3Qu zoI2DCX!da2@XLr_T5Nd28UDq`8Z^pmgM z8$Ma1QWc(2z|uVkg+D7Aq}l6Bx6N^#TYc2Q4WKy9h&vC=l$W=^Ly%Upx;%feqJN$) zLPVFK4F3SR)ls+GJbwD|7A&ki;|4cKb$s!cm>s zM)dUmS5Q|+do8m*e{fDUMwgUVRz?WG?8Y5+B-)kTx68O0g1@Vt-Lc+telL4w(T-rt zGkPk?zA`(jiid}nBc}IhYW_nK_NQ~m@Au$Ry`+pu?7&l|>kU8H3ld}FG#yJN{+Vbt zkB5C}jbw_G>4+1^o$gpYzilli@?aDU0Az}L$c*GlVgY`-ER+7MY+?dtf)%k{nLaE0(EEDyA8Q(QcB<;Z zn2e88KzECF#%%W|bjCuk17YTXJF!ATp8EO*g-I-z&5^(fU(#A9l8p_!*go4aF;dN^ zqmo}zO1bh1`>Y$@Z+5mN#>ZhU!hXwv_T0Bmgp2>hcKS8Pf3|N?XW~B>tQQ-%PT*a{ zFW^n1W))|>2lx0?{^w)z7A?p(tpU5N8TU8dt@kmCK%e0oxYS*MFl__TFWL@s`sROX z^@!Iwl*ssx25(VywGIhs(p1l`R&f{h+%ES27%AkE>XqtYIGS@@N0QOwF1l@3!xO|8kED#3OHY+=_wlEhBP@P;A&2On~8{_d@b8?%}p-gho$p_XeFNdXdG zZ`PXy^M_=a@d3eTRaq~YiejNir1j0Q0{TdBWi1OmDhr;usbsXH5M8m{t%ybQ43jrM zFq!~Jw_Xl@Y4Jk>1&<*QVpe3Lo!G+@T?O;f#%l?$>l;KPLRSqnW%q-x?pf{&3lu2M zBDOH2l3hU`l9z9z&r_gP0|dDL2DbPR4P$&s*e59g&;R}v6(UlZBc7-WIS_hP zuVO9>&jchtL>r%1Xra@QJkFs?+vpfBe$D2!hIfF_9V;#C(FzZ1ouHsW{D#KoIIO$- zm^)6Z%|$HdmIMmmZ^8Nq*WPPa-0i&#OOJ@j9V10NSL z(TJkgs&vnSVBX^3tNn`D`X60d$%;=%BE2YF!b7ohBJ_!xnh5h~at2nXBGU##Q&Qyj zGKn$wwlC559(QnPC1S^_*(Mwmb8+3{QLoVuIx)xpaa(ar+qE~yN91&Q750P=7L}IJ z?d0L1D)j-^0dFFUT}4IZ6bcK$a;vIJEhLDJQGpNbxL5pS0G>tcu-vV(Z`c2jgx(|Q zU%+o!mU#kF-kyY)4G06QUw+DMK-#z{j2a9y)NXvl{x(#jl$XSj50okx77$9}=XOlZ z&hFsBapctEA&OFCrF|X|u7g%7E5$MoIG2#AUlmHuor@z0q1U%~P@NOX5X7*f1C3x; z&yuZfd-T)a}Lz{eFc=c|X+QGYI!x?tGrVEr2sFYT8X(|gp z$Z6pm*0*rdo}vrB&}h9pzVipqF00qjmmD;I(r^S=nPCpw=mNCWpHQ>0Mw7*P1E+A) zyj__l2Wc*}@XUotpT}TF0usZAgzY)7@7I-;<`+6Q3DV;uSIBN(jMc|yo{9lWDb`J))B3F|{cD$CvX4et5U-J?b z+a%Tz0YBB#+I%TjaU(qo1ue1D*ty5KZHKi}+4Mz~3ubcna@M{#ka_k(vB+NDGnG1qhQ(a$aWlab<{y`H&eKQ>OHLZU1H{h3w;cGR8B9@vC;+ zaFlYf`wC`8@X_BL1x91+mZW~)*!*IoQ86;W^HPrj`E0mjpyedoFh2PeNr@OvA_aFX zw?UaED?kFsu8tRT6pGgY#NU|ltGy!oZAw$$XDd{?Lbp1ljt;CS#d<=8Wyj2dd=~fM ze8o!aOSVm2>Gs#e+rtk4t$ypiy`!Znq&q%<96KFXzUaRGvAN~s6allyYa`k$d!lG( z(l%;^j-%>_m|RP>VzLq|WvF6!&ai@uhpJIVKEnrQZ7U^1p8JEU0z4;sZsNJ)bE}`F z3i>pjBl0}GY2vDK1YT5fNcy

gmR8f6gDXHzCceG0r}GiLuqQw*0Qbm?C&YB67&l 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