From aba162f350ac526454855826f1eddcbc355d8f2c Mon Sep 17 00:00:00 2001 From: Time-Green Date: Fri, 20 Jul 2018 01:30:55 +0200 Subject: [PATCH 001/403] Medical Machinery: Organ Harvester (#39064) Adds an organ harvester. It's a machine. A human goes in, and the machine starts removing organs and limbs and ejects them right next to the machine. The process can be stopped at any time by either disabling power or prying it open. The machine does not work if the subject has clothes or appears alive. The health scan can be disabled by emagging, but they'll still need to be naked. It consists of 4 micro-manipulators, each tier making it faster, but it shouldn't ever really go below 2.4 seconds for every iteration, barring magic fuckery It's basically a slower acting gibber, but it preserves all limbs and organs. Useful in conjunction with either a limb grower, bounties, extra food, organ replacement or for something yet to come --- code/__HELPERS/_lists.dm | 1 + code/game/machinery/harvester.dm | 171 ++++++++++++++++++ .../circuitboards/machine_circuitboards.dm | 7 +- .../research/designs/machine_designs.dm | 8 + code/modules/research/techweb/all_nodes.dm | 2 +- .../surgery/bodyparts/dismemberment.dm | 5 +- icons/obj/machines/harvester.dmi | Bin 0 -> 2738 bytes tgstation.dme | 1 + 8 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 code/game/machinery/harvester.dm create mode 100644 icons/obj/machines/harvester.dmi diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index b25d1e58d5..8ada0c20b8 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -20,6 +20,7 @@ #define LAZYLEN(L) length(L) #define LAZYCLEARLIST(L) if(L) L.Cut() #define SANITIZE_LIST(L) ( islist(L) ? L : list() ) +#define reverseList(L) reverseRange(L.Copy()) // binary search sorted insert // IN: Object to be inserted diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm new file mode 100644 index 0000000000..1531fc0c79 --- /dev/null +++ b/code/game/machinery/harvester.dm @@ -0,0 +1,171 @@ +/obj/machinery/harvester + name = "organ harvester" + desc = "An advanced machine used for harvesting organs and limbs from the deceased." + density = TRUE + icon = 'icons/obj/machines/harvester.dmi' + icon_state = "harvester" + verb_say = "states" + state_open = FALSE + idle_power_usage = 50 + circuit = /obj/item/circuitboard/machine/harvester + light_color = LIGHT_COLOR_BLUE + var/interval = 20 + var/harvesting = FALSE + var/list/operation_order = list() //Order of wich we harvest limbs. + var/allow_clothing = FALSE + var/allow_living = FALSE + +/obj/machinery/harvester/Initialize() + . = ..() + if(prob(1)) + name = "auto-autopsy" + +/obj/machinery/harvester/RefreshParts() + interval = 0 + var/max_time = 40 + for(var/obj/item/stock_parts/micro_laser/L in component_parts) + max_time -= L.rating + interval = max(max_time,1) + +/obj/machinery/harvester/update_icon(warming_up) + if(warming_up) + icon_state = initial(icon_state)+"-charging" + return + if(state_open) + icon_state = initial(icon_state)+"-open" + else if(harvesting) + icon_state = initial(icon_state)+"-active" + else + icon_state = initial(icon_state) + +/obj/machinery/harvester/open_machine(drop = TRUE) + if(panel_open) + return + . = ..() + harvesting = FALSE + +/obj/machinery/harvester/attack_hand(mob/user) + if(state_open) + close_machine() + else if(!harvesting) + open_machine() + +/obj/machinery/harvester/AltClick(mob/user) + if(harvesting || !user || !isliving(user) || state_open) + return + if(can_harvest()) + start_harvest() + +/obj/machinery/harvester/proc/can_harvest() + if(!powered(EQUIP) || state_open || !occupant || !iscarbon(occupant)) + return + var/mob/living/carbon/C = occupant + if(!allow_clothing) + for(var/A in C.held_items + C.get_equipped_items()) + if(!isitem(A)) + continue + var/obj/item/I = A + if(!(I.item_flags & NODROP)) + say("Subject may not have abiotic items on.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1) + return + if(!(MOB_ORGANIC in C.mob_biotypes)) + say("Subject is not organic.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1) + return + if(!allow_living && !(C.stat == DEAD || C.has_trait(TRAIT_FAKEDEATH))) //I mean, the machines scanners arent advanced enough to tell you're alive + say("Subject is still alive.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1) + return + return TRUE + +/obj/machinery/harvester/proc/start_harvest() + if(!occupant || !iscarbon(occupant)) + return + var/mob/living/carbon/C = occupant + operation_order = reverseList(C.bodyparts) //Chest and head are first in bodyparts, so we invert it to make them suffer more + harvesting = TRUE + visible_message("The [name] begins warming up!") + update_icon(TRUE) + addtimer(CALLBACK(src, .proc/harvest), interval) + +/obj/machinery/harvester/proc/harvest() + update_icon() + if(!harvesting || state_open || !powered(EQUIP) || !occupant || !iscarbon(occupant)) + return + playsound(src, 'sound/machines/juicer.ogg', 20, 1) + var/mob/living/carbon/C = occupant + if(!LAZYLEN(operation_order)) //The list is empty, so we're done here + end_harvesting() + return + var/turf/target + for(var/adir in list(EAST,NORTH,SOUTH,WEST)) + var/turf/T = get_step(src,adir) + if(!T) + continue + if(istype(T, /turf/closed)) + continue + target = T + break + if(!target) + target = get_turf(src) + for(var/obj/item/bodypart/BP in operation_order) //first we do non-essential limbs + BP.drop_limb() + C.emote("scream") + if(BP.body_zone != "chest") + BP.forceMove(target) //Move the limbs right next to it, except chest, that's a weird one + BP.drop_organs() + else + for(var/obj/item/organ/O in BP.dismember()) + O.forceMove(target) //Some organs, like chest ones, are different so we need to manually move them + operation_order.Remove(BP) + break + use_power(5000) + addtimer(CALLBACK(src, .proc/harvest), interval) + +/obj/machinery/harvester/proc/end_harvesting() + harvesting = FALSE + open_machine() + say("Subject has been succesfuly harvested.") + playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, 0) + +/obj/machinery/harvester/screwdriver_act(mob/living/user, obj/item/I) + if(!state_open && !occupant) + if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-o", initial(icon_state), I)) + return + +/obj/machinery/harvester/crowbar_act(mob/living/user, obj/item/I) + if(default_pry_open(I)) + return + if(default_deconstruction_crowbar(I)) + return + +/obj/machinery/harvester/default_pry_open(obj/item/I) //wew + . = !(state_open || panel_open || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR //We removed is_operational() here + if(.) + I.play_tool_sound(src, 50) + visible_message("[usr] pries open \the [src].", "You pry open [src].") + open_machine() + +/obj/machinery/harvester/emag_act(mob/user) + if(obj_flags & EMAGGED) + return + obj_flags |= EMAGGED + allow_living = TRUE + to_chat(user, "You overload [src]'s lifesign scanners.") + +/obj/machinery/harvester/container_resist(mob/living/user) + if(!harvesting) + visible_message("[occupant] emerges from [src]!", + "You climb out of [src]!") + open_machine() + else + to_chat(user,"[src] is active and can't be opened!") //rip + +/obj/machinery/harvester/Exited(atom/movable/user) + if (!state_open && user == occupant) + container_resist(user) + +/obj/machinery/harvester/relaymove(mob/user) + if (!state_open) + container_resist(user) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 8d91b3855a..26c46c7843 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -921,4 +921,9 @@ /obj/item/circuitboard/machine/circulator name = "Circulator/Heat Exchanger (Machine Board)" build_path = /obj/machinery/atmospherics/components/binary/circulator - req_components = list() \ No newline at end of file + req_components = list() + +/obj/item/circuitboard/machine/harvester + name = "Harvester (Machine Board)" + build_path = /obj/machinery/harvester + req_components = list(/obj/item/stock_parts/micro_laser = 4) \ No newline at end of file diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 89f1eb85b9..9bcc38e559 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -475,6 +475,14 @@ category = list("Medical Machinery") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL +/datum/design/board/harvester + name = "Machine Design (Organ Harvester Board)" + desc = "The circuit board for an organ harvester." + id = "harvester" + build_path = /obj/item/circuitboard/machine/harvester + category = list("Medical Machinery") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + /datum/design/board/deepfryer name = "Machine Design (Deep Fryer)" desc = "The circuit board for a Deep Fryer." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index d4cc38e050..3a9c6d7021 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -27,7 +27,7 @@ display_name = "Advanced Biotechnology" description = "Advanced Biotechnology" prereq_ids = list("biotech") - design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "defibrillator", "meta_beaker", "healthanalyzer_advanced") + design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "defibrillator", "meta_beaker", "healthanalyzer_advanced","harvester") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 7af309f0d9..cf315f9f7a 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -51,7 +51,7 @@ return FALSE if(C.has_trait(TRAIT_NODISMEMBER)) return FALSE - + . = list() var/organ_spilled = 0 var/turf/T = get_turf(C) C.add_splatter_floor(T) @@ -64,14 +64,15 @@ O.Remove(C) O.forceMove(T) organ_spilled = 1 + . += X if(cavity_item) cavity_item.forceMove(T) + . += cavity_item cavity_item = null organ_spilled = 1 if(organ_spilled) C.visible_message("[C]'s internal organs spill out onto the floor!") - return 1 diff --git a/icons/obj/machines/harvester.dmi b/icons/obj/machines/harvester.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d6d9b01fc6244362a745a4048dc79ccbd40015e8 GIT binary patch literal 2738 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 literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 19a805fe38..790a65bc94 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -547,6 +547,7 @@ #include "code\game\machinery\flasher.dm" #include "code\game\machinery\gulag_item_reclaimer.dm" #include "code\game\machinery\gulag_teleporter.dm" +#include "code\game\machinery\harvester.dm" #include "code\game\machinery\hologram.dm" #include "code\game\machinery\igniter.dm" #include "code\game\machinery\iv_drip.dm" From 0397cbb8774d7162ab09c43a127d560553858efe Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 19 Jul 2018 16:32:13 -0700 Subject: [PATCH 002/403] Refactors projectile pathing (gameplay change, this will make projectiles more accurate in their linetracing), hitscan light effect improvements (#38933) cl experimental: Hitscanning tracers now have lighting effects experimental: Projectile pathing has been changed - instead of moving to a turf 32 pixels forward using byond's built in step_towards() proc, it now increments 2 pixel 16 times (subject to change). While this will increase the processing overhead, this will more or less eliminate cases of "projectiles clipping past corners in some angles but not others". --- .../subsystem/processing/projectiles.dm | 17 +++ .../projectiles/projectile_effects.dm | 7 +- .../temporary_visuals/projectiles/tracer.dm | 10 +- .../projectiles/guns/misc/beam_rifle.dm | 7 +- code/modules/projectiles/projectile.dm | 106 ++++++++++++------ 5 files changed, 105 insertions(+), 42 deletions(-) diff --git a/code/controllers/subsystem/processing/projectiles.dm b/code/controllers/subsystem/processing/projectiles.dm index 60d84c767b..b0930d3d07 100644 --- a/code/controllers/subsystem/processing/projectiles.dm +++ b/code/controllers/subsystem/processing/projectiles.dm @@ -4,3 +4,20 @@ PROCESSING_SUBSYSTEM_DEF(projectiles) stat_tag = "PP" flags = SS_NO_INIT|SS_TICKER var/global_max_tick_moves = 10 + var/global_pixel_speed = 2 + var/global_iterations_per_move = 16 + +/datum/controller/subsystem/processing/projectiles/proc/set_pixel_speed(new_speed) + global_pixel_speed = new_speed + for(var/i in processing) + var/obj/item/projectile/P = i + if(istype(P)) //there's non projectiles on this too. + P.set_pixel_speed(new_speed) + +/datum/controller/subsystem/processing/projectiles/vv_edit_var(var_name, var_value) + switch(var_name) + if(NAMEOF(src, global_pixel_speed)) + set_pixel_speed(var_value) + return TRUE + else + return ..() diff --git a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm index dee1affd84..acb41c9a35 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm @@ -4,9 +4,6 @@ icon_state = "nothing" layer = ABOVE_MOB_LAYER anchored = TRUE - light_power = 1 - light_range = 2 - light_color = "#00ffff" mouse_opacity = MOUSE_OPACITY_TRANSPARENT appearance_flags = 0 @@ -53,3 +50,7 @@ for(var/i in 1 to increment) pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1) pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1) + +/obj/effect/projectile_lighting/Initialize(mapload, color, range, intensity) + . = ..() + set_light(range, intensity, color) diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 3b8148dba3..44ec6839d6 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -1,10 +1,18 @@ -/proc/generate_tracer_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! +/proc/generate_tracer_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5, light_range = 2, light_color_override, light_intensity = 1) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! if(!istype(starting) || !istype(ending) || !ispath(beam_type)) return var/datum/point/midpoint = point_midpoint_points(starting, ending) var/obj/effect/projectile/tracer/PB = new beam_type + if(isnull(light_color_override)) + light_color_override = color PB.apply_vars(angle_between_points(starting, ending), midpoint.return_px(), midpoint.return_py(), color, pixel_length_between_points(starting, ending) / world.icon_size, midpoint.return_turf(), 0) . = PB + if(light_range > 0 && light_intensity > 0) + var/list/turf/line = getline(starting.return_turf(), ending.return_turf()) + for(var/i in line) + var/turf/T = i + QDEL_IN(new /obj/effect/projectile_lighting(T, light_color_override, light_range, light_intensity), qdel_in > 0? qdel_in : 5) + line = null if(qdel_in) QDEL_IN(PB, qdel_in) diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index b4abd5878e..fb137da2f4 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -555,10 +555,10 @@ if(highlander && istype(gun)) QDEL_LIST(gun.current_tracers) for(var/datum/point/p in beam_segments) - gun.current_tracers += generate_tracer_between_points(p, beam_segments[p], tracer_type, color, 0) + gun.current_tracers += generate_tracer_between_points(p, beam_segments[p], tracer_type, color, 0, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity) else for(var/datum/point/p in beam_segments) - generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration) + generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity) if(cleanup) QDEL_LIST(beam_segments) beam_segments = null @@ -572,6 +572,9 @@ nodamage = TRUE damage = 0 constant_tracer = TRUE + hitscan_light_range = 0 + hitscan_light_intensity = 0 + hitscan_light_color_override = "#99ff99" /obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/prehit(atom/target) qdel(src) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 1ae5b31b3f..6bb475e617 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -36,7 +36,6 @@ var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location! var/speed = 0.8 //Amount of deciseconds it takes for projectile to travel - var/pixel_speed = 32 //pixels per move - DO NOT FUCK WITH THIS UNLESS YOU ABSOLUTELY KNOW WHAT YOU ARE DOING OR UNEXPECTED THINGS /WILL/ HAPPEN! var/Angle = 0 var/original_angle = 0 //Angle at firing var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle @@ -55,6 +54,17 @@ var/muzzle_type var/impact_type + //Fancy hitscan lighting effects! + var/hitscan_light_intensity = 1.5 + var/hitscan_light_range = 0.75 + var/hitscan_light_color_override + var/muzzle_flash_intensity = 3 + var/muzzle_flash_range = 1.5 + var/muzzle_flash_color_override + var/impact_light_intensity = 3 + var/impact_light_range = 2 + var/impact_light_color_override + //Homing var/homing = FALSE var/atom/homing_target @@ -287,8 +297,8 @@ var/datum/point/vector/current = trajectory if(!current) var/turf/T = get_turf(src) - current = new(T.x, T.y, T.z, pixel_x, pixel_y, isnull(forced_angle)? Angle : forced_angle, pixel_speed) - var/datum/point/vector/v = current.return_vector_after_increments(moves) + current = new(T.x, T.y, T.z, pixel_x, pixel_y, isnull(forced_angle)? Angle : forced_angle, SSprojectiles.global_pixel_speed) + var/datum/point/vector/v = current.return_vector_after_increments(moves * SSprojectiles.global_iterations_per_move) return v.return_turf() /obj/item/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle) @@ -320,7 +330,7 @@ time_offset += MODULUS(elapsed_time_deciseconds, speed) for(var/i in 1 to required_moves) - pixel_move(required_moves) + pixel_move(1, FALSE) /obj/item/projectile/proc/fire(angle, atom/direct_target) //If no angle needs to resolve it from xo/yo! @@ -351,14 +361,14 @@ trajectory_ignore_forcemove = TRUE forceMove(starting) trajectory_ignore_forcemove = FALSE - trajectory = new(starting.x, starting.y, starting.z, pixel_x, pixel_y, Angle, pixel_speed) + trajectory = new(starting.x, starting.y, starting.z, pixel_x, pixel_y, Angle, SSprojectiles.global_pixel_speed) last_projectile_move = world.time fired = TRUE if(hitscan) process_hitscan() if(!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprojectiles, src) - pixel_move(1) //move it now! + pixel_move(1, FALSE) //move it now! /obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides. Angle = new_angle @@ -391,6 +401,20 @@ /obj/item/projectile/proc/before_z_change(atom/oldloc, atom/newloc) +/obj/item/projectile/vv_edit_var(var_name, var_value) + switch(var_name) + if(NAMEOF(src, Angle)) + setAngle(var_value) + return TRUE + else + return ..() + +/obj/item/projectile/proc/set_pixel_speed(new_speed) + if(trajectory) + trajectory.set_speed(new_speed) + return TRUE + return FALSE + /obj/item/projectile/proc/record_hitscan_start(datum/point/pcache) if(pcache) beam_segments = list() @@ -405,12 +429,14 @@ stoplag(1) continue if(safety-- <= 0) - qdel(src) - stack_trace("WARNING: [type] projectile encountered infinite recursion during hitscanning in [__FILE__]/[__LINE__]!") + if(loc) + Bump(loc) + if(!QDELETED(src)) + qdel(src) return //Kill! - pixel_move(1, 1, TRUE) + pixel_move(1, TRUE) -/obj/item/projectile/proc/pixel_move(moves, trajectory_multiplier = 1, hitscanning = FALSE) +/obj/item/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE) if(!loc || !trajectory) return last_projectile_move = world.time @@ -420,32 +446,36 @@ transform = M if(homing) process_homing() - trajectory.increment(trajectory_multiplier) - var/turf/T = trajectory.return_turf() - if(!istype(T)) - qdel(src) - return - if(T.z != loc.z) - var/old = loc - before_z_change(loc, T) - trajectory_ignore_forcemove = TRUE - forceMove(T) - trajectory_ignore_forcemove = FALSE - after_z_change(old, loc) - if(!hitscanning) - pixel_x = trajectory.return_px() - pixel_y = trajectory.return_py() - else - step_towards(src, T) - if(!hitscanning) - pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier - pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier - if(!hitscanning) + var/forcemoved = FALSE + for(var/i in 1 to SSprojectiles.global_iterations_per_move) + if(QDELETED(src)) + return + trajectory.increment(trajectory_multiplier) + var/turf/T = trajectory.return_turf() + if(!istype(T)) + qdel(src) + return + if(T.z != loc.z) + var/old = loc + before_z_change(loc, T) + trajectory_ignore_forcemove = TRUE + forceMove(T) + trajectory_ignore_forcemove = FALSE + after_z_change(old, loc) + if(!hitscanning) + pixel_x = trajectory.return_px() + pixel_y = trajectory.return_py() + forcemoved = TRUE + hitscan_last = loc + else if(T != loc) + step_towards(src, T) + hitscan_last = loc + if(can_hit_target(original, permutated)) + Bump(original) + if(!hitscanning && !forcemoved) + pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier * SSprojectiles.global_iterations_per_move + pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier * SSprojectiles.global_iterations_per_move animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) - if(isturf(loc)) - hitscan_last = loc - if(can_hit_target(original, permutated)) - Bump(original) Range() /obj/item/projectile/proc/process_homing() //may need speeding up in the future performance wise. @@ -561,7 +591,7 @@ return if(tracer_type) for(var/datum/point/p in beam_segments) - generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration) + generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity) if(muzzle_type && duration > 0) var/datum/point/p = beam_segments[1] var/atom/movable/thing = new muzzle_type @@ -569,6 +599,8 @@ var/matrix/M = new M.Turn(original_angle) thing.transform = M + thing.color = color + thing.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override? muzzle_flash_color_override : color) QDEL_IN(thing, duration) if(impacting && impact_type && duration > 0) var/datum/point/p = beam_segments[beam_segments[beam_segments.len]] @@ -577,6 +609,8 @@ var/matrix/M = new M.Turn(Angle) thing.transform = M + thing.color = color + thing.set_light(impact_light_range, impact_light_intensity, impact_light_color_override? impact_light_color_override : color) QDEL_IN(thing, duration) if(cleanup) cleanup_beam_segments() From 90a1b8c3638c09cf3d696facc228225d369ba6e4 Mon Sep 17 00:00:00 2001 From: Grandmother of 50 <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Thu, 19 Jul 2018 19:33:00 -0400 Subject: [PATCH 003/403] Mood Code Improvements [Merge-Ready?] (#39075) fix: having higher sanity is no longer punished by making you enter crit faster balance: you can have 100 mood instead of 99 before it starts slowly decreasing Remember higher sanity is BETTER You want crit_modifier (now crit_threshold) to be LOW so you can stay in fights more (you go into crit at 5hp vs 0hp). Why: Proc overhead, puts the load on mood, proper abstraction of mood component, values > defines, etc. --- code/datums/brain_damage/special.dm | 2 +- code/datums/components/mood.dm | 52 ++++++++++++++----- code/datums/status_effects/debuffs.dm | 2 +- .../mining/equipment/regenerative_core.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 4 +- .../mob/living/carbon/carbon_defense.dm | 9 ---- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 2 +- .../mob/living/carbon/human/species.dm | 2 +- code/modules/mob/living/carbon/life.dm | 4 +- code/modules/mob/living/living.dm | 4 +- code/modules/mob/living/living_defense.dm | 3 -- code/modules/mob/living/living_defines.dm | 1 + code/modules/surgery/organs/heart.dm | 4 +- code/modules/surgery/organs/lungs.dm | 10 ++-- 16 files changed, 60 insertions(+), 45 deletions(-) diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index 7d3c5f6d2f..0bbbf8de08 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -15,7 +15,7 @@ if(prob(4)) if(prob(33) && (owner.IsStun() || owner.IsKnockdown() || owner.IsUnconscious())) speak("unstun", TRUE) - else if(prob(60) && owner.health <= owner.crit_modifier()) + else if(prob(60) && owner.health <= owner.crit_threshold) speak("heal", TRUE) else if(prob(30) && owner.a_intent == INTENT_HARM) speak("aggressive") diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 9efc7d8958..d36f796573 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -1,3 +1,6 @@ +#define MINOR_INSANITY_PEN 5 +#define MAJOR_INSANITY_PEN 10 + /datum/component/mood var/mood //Real happiness var/sanity = 100 //Current sanity @@ -6,6 +9,8 @@ var/mood_modifier = 1 //Modifier to allow certain mobs to be less affected by moodlets var/datum/mood_event/list/mood_events = list() var/mob/living/owner + var/insanity_effect = 0 //is the owner being punished for low mood? If so, how much? + var/holdmyinsanityeffect = 0 //before we edit our sanity lets take a look /datum/component/mood/Initialize() if(!isliving(parent)) @@ -120,13 +125,13 @@ switch(mood_level) if(1) - DecreaseSanity(0.2, 0) + DecreaseSanity(0.2) if(2) - DecreaseSanity(0.125, 25) + DecreaseSanity(0.125, SANITY_CRAZY) if(3) - DecreaseSanity(0.075, 50) + DecreaseSanity(0.075, SANITY_UNSTABLE) if(4) - DecreaseSanity(0.025, 75) + DecreaseSanity(0.025, SANITY_DISTURBED) if(5) IncreaseSanity(0.1) if(6) @@ -134,9 +139,15 @@ if(7) IncreaseSanity(0.20) if(8) - IncreaseSanity(0.25, 125) + IncreaseSanity(0.25, SANITY_GREAT) if(9) - IncreaseSanity(0.4, 125) + IncreaseSanity(0.4, SANITY_GREAT) + + if(insanity_effect != holdmyinsanityeffect) + if(insanity_effect > holdmyinsanityeffect) + owner.crit_threshold += (insanity_effect - holdmyinsanityeffect) + else + owner.crit_threshold -= (holdmyinsanityeffect - insanity_effect) if(owner.has_trait(TRAIT_DEPRESSION)) if(prob(0.05)) @@ -147,17 +158,29 @@ add_event("jolly", /datum/mood_event/jolly) clear_event("depression") -/datum/component/mood/proc/DecreaseSanity(amount, limit = 0) - if(sanity < limit) //This might make KevinZ stop fucking pinging me. + holdmyinsanityeffect = insanity_effect + +/datum/component/mood/proc/DecreaseSanity(amount, minimum = SANITY_INSANE) + if(sanity < minimum) //This might make KevinZ stop fucking pinging me. IncreaseSanity(0.5) else - sanity = max(0, sanity - amount) - -/datum/component/mood/proc/IncreaseSanity(amount, limit = 99) - if(sanity > limit) + sanity = max(minimum, sanity - amount) + if(sanity < SANITY_UNSTABLE) + if(sanity < SANITY_CRAZY) + insanity_effect = (MAJOR_INSANITY_PEN) + else + insanity_effect = (MINOR_INSANITY_PEN) + +/datum/component/mood/proc/IncreaseSanity(amount, maximum = SANITY_NEUTRAL) + if(sanity > maximum) DecreaseSanity(0.5) //Removes some sanity to go back to our current limit. else - sanity = min(limit, sanity + amount) + sanity = min(maximum, sanity + amount) + if(sanity > SANITY_CRAZY) + if(sanity > SANITY_UNSTABLE) + insanity_effect = 0 + else + insanity_effect = MINOR_INSANITY_PEN /datum/component/mood/proc/add_event(category, type, param) //Category will override any events in the same category, should be unique unless the event is based on the same thing like hunger. var/datum/mood_event/the_event @@ -183,3 +206,6 @@ mood_events -= category qdel(event) update_mood() + +#undef MINOR_INSANITY_PEN +#undef MAJOR_INSANITY_PEN diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index e239864974..c48430d2b6 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -72,7 +72,7 @@ if(prob(20)) if(carbon_owner) carbon_owner.handle_dreams() - if(prob(10) && owner.health > owner.crit_modifier()) + if(prob(10) && owner.health > owner.crit_threshold) owner.emote("snore") /obj/screen/alert/status_effect/asleep diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index e50370ff44..d6e99f7361 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -63,7 +63,7 @@ /obj/item/organ/regenerative_core/on_life() ..() - if(owner.health < owner.crit_modifier()) + if(owner.health < owner.crit_threshold) ui_action_click() /obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 9632fbc5e3..8474ad05da 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -18,7 +18,7 @@ if(health<= -maxHealth || !getorgan(/obj/item/organ/brain)) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || health <= crit_modifier()) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || health <= crit_threshold) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c7d987fd36..ffad7bb78c 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -599,7 +599,7 @@ if(!client) return - if(health <= crit_modifier()) + if(health <= crit_threshold) var/severity = 0 switch(health) if(-20 to -10) @@ -728,7 +728,7 @@ stat = UNCONSCIOUS blind_eyes(1) else - if(health <= crit_modifier() && !has_trait(TRAIT_NOSOFTCRIT)) + if(health <= crit_threshold && !has_trait(TRAIT_NOSOFTCRIT)) stat = SOFT_CRIT else stat = CONSCIOUS diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index c9ac8655f9..f18d6d363d 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -372,12 +372,3 @@ var/obj/item/organ/ears/ears = getorganslot(ORGAN_SLOT_EARS) if(istype(ears) && !ears.deaf) . = TRUE - -/mob/living/carbon/crit_modifier() - . = ..() - GET_COMPONENT(mood, /datum/component/mood) - if(mood) - if(mood.sanity >= SANITY_UNSTABLE) - . += 5 - else if(mood.sanity >= SANITY_CRAZY) - . += 10 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b1293a2dba..8429b1d106 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -656,7 +656,7 @@ var/they_breathe = !C.has_trait(TRAIT_NOBREATH) var/they_lung = C.getorganslot(ORGAN_SLOT_LUNGS) - if(C.health > C.crit_modifier()) + if(C.health > C.crit_threshold) return src.visible_message("[src] performs CPR on [C.name]!", "You perform CPR on [C.name].") diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index c840315a61..390dd75a6c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -84,7 +84,7 @@ var/L = getorganslot(ORGAN_SLOT_LUNGS) if(!L) - if(health >= crit_modifier()) + if(health >= crit_threshold) adjustOxyLoss(HUMAN_MAX_OXYLOSS + 1) else if(!has_trait(TRAIT_NOCRITDAMAGE)) adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 54dd378037..8269edc7d6 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -708,7 +708,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.losebreath = 0 var/takes_crit_damage = (!H.has_trait(TRAIT_NOCRITDAMAGE)) - if((H.health < H.crit_modifier()) && takes_crit_damage) + if((H.health < H.crit_threshold) && takes_crit_damage) H.adjustBruteLoss(1) /datum/species/proc/spec_death(gibbed, mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index b2b470bca5..00b895a601 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -59,7 +59,7 @@ if(health <= HEALTH_THRESHOLD_FULLCRIT || (pulledby && pulledby.grab_state >= GRAB_KILL)) losebreath++ //You can't breath at all when in critical or when being choked, so you're going to miss a breath - else if(health <= crit_modifier()) + else if(health <= crit_threshold) losebreath += 0.25 //You're having trouble breathing in soft crit, so you'll miss a breath one in four times //Suffocate @@ -154,7 +154,7 @@ else //Enough oxygen failed_last_breath = 0 - if(health >= crit_modifier()) + if(health >= crit_threshold) adjustOxyLoss(-5) oxygen_used = breath_gases[/datum/gas/oxygen][MOLES] clear_alert("not_enough_oxy") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 3cd776c3da..e1f321f0fa 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -281,7 +281,7 @@ return TRUE /mob/living/proc/InCritical() - return (health <= crit_modifier() && (stat == SOFT_CRIT || stat == UNCONSCIOUS)) + return (health <= crit_threshold && (stat == SOFT_CRIT || stat == UNCONSCIOUS)) /mob/living/proc/InFullCritical() return (health <= HEALTH_THRESHOLD_FULLCRIT && stat == UNCONSCIOUS) @@ -807,7 +807,7 @@ var/stam = getStaminaLoss() if(stam) var/total_health = (health - stam) - if(total_health <= crit_modifier() && !stat && !IsKnockdown()) + if(total_health <= crit_threshold && !stat && !IsKnockdown()) to_chat(src, "You're too exhausted to keep going...") Knockdown(100) update_health_hud() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 2823d60417..0ce42af01b 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -61,9 +61,6 @@ else return 0 -/mob/living/proc/crit_modifier() - return HEALTH_THRESHOLD_CRIT - /mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE) if(istype(AM, /obj/item)) var/obj/item/I = AM diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index d0ae175151..fa38f831f0 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -20,6 +20,7 @@ var/fireloss = 0 //Burn damage caused by being way too hot, too cold or burnt. var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims var/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are knocked down if it gets too high. Holodeck and hallucinations deal this. + var/crit_threshold = HEALTH_THRESHOLD_CRIT // when the mob goes from "normal" to crit var/confused = 0 //Makes the mob move in random directions. diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 9eeb667e2f..52904b8af1 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -54,11 +54,11 @@ var/sound/fastbeat = sound('sound/health/fastbeat.ogg', repeat = TRUE) var/mob/living/carbon/H = owner - if(H.health <= H.crit_modifier() && beat != BEAT_SLOW) + if(H.health <= H.crit_threshold && beat != BEAT_SLOW) beat = BEAT_SLOW H.playsound_local(get_turf(H), slowbeat,40,0, channel = CHANNEL_HEARTBEAT) to_chat(owner, "You feel your heart slow down...") - if(beat == BEAT_SLOW && H.health > H.crit_modifier()) + if(beat == BEAT_SLOW && H.health > H.crit_threshold) H.stop_sound_channel(CHANNEL_HEARTBEAT) beat = BEAT_NONE diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index e338c4aa0c..114fe8bf9d 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -64,7 +64,7 @@ if(!breath || (breath.total_moles() == 0)) if(H.reagents.has_reagent(crit_stabilizing_reagent)) return - if(H.health >= H.crit_modifier()) + if(H.health >= H.crit_threshold) H.adjustOxyLoss(HUMAN_MAX_OXYLOSS) else if(!H.has_trait(TRAIT_NOCRITDAMAGE)) H.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS) @@ -111,7 +111,7 @@ H.throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy) else H.failed_last_breath = FALSE - if(H.health >= H.crit_modifier()) + if(H.health >= H.crit_threshold) H.adjustOxyLoss(-5) gas_breathed = breath_gases[/datum/gas/oxygen][MOLES] H.clear_alert("not_enough_oxy") @@ -139,7 +139,7 @@ H.throw_alert("nitro", /obj/screen/alert/not_enough_nitro) else H.failed_last_breath = FALSE - if(H.health >= H.crit_modifier()) + if(H.health >= H.crit_threshold) H.adjustOxyLoss(-5) gas_breathed = breath_gases[/datum/gas/nitrogen][MOLES] H.clear_alert("nitro") @@ -176,7 +176,7 @@ H.throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2) else H.failed_last_breath = FALSE - if(H.health >= H.crit_modifier()) + if(H.health >= H.crit_threshold) H.adjustOxyLoss(-5) gas_breathed = breath_gases[/datum/gas/carbon_dioxide][MOLES] H.clear_alert("not_enough_co2") @@ -206,7 +206,7 @@ H.throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox) else H.failed_last_breath = FALSE - if(H.health >= H.crit_modifier()) + if(H.health >= H.crit_threshold) H.adjustOxyLoss(-5) gas_breathed = breath_gases[/datum/gas/plasma][MOLES] H.clear_alert("not_enough_tox") From b9c5bad6055496cc38dba541902b55ae1c50234d Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 19 Jul 2018 16:33:04 -0700 Subject: [PATCH 004/403] Automatic changelog generation for PR #39075 [ci skip] --- html/changelogs/AutoChangeLog-pr-39075.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39075.yml diff --git a/html/changelogs/AutoChangeLog-pr-39075.yml b/html/changelogs/AutoChangeLog-pr-39075.yml new file mode 100644 index 0000000000..9ff5eec76b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39075.yml @@ -0,0 +1,5 @@ +author: "Cobby" +delete-after: True +changes: + - bugfix: "having higher sanity is no longer punished by making you enter crit faster" + - balance: "you can have 100 mood instead of 99 before it starts slowly decreasing" From 09b27c1983bc6ae98188d3bca9c69747129091e3 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Fri, 20 Jul 2018 01:39:16 +0200 Subject: [PATCH 005/403] Pubby: Fixes auxbase cams, department signs, fire alarms etc (#39106) tweak: Pubbystation: Added missing fire alarm, moved existing fire alarms to easier to reach positions. Replaced most department signs. fix: Pubbystation: The auxillary base telescreen now works again. tweak: Pubbystation: The southern engine room wall has been replaced with r-walls to make it harder to sabotage engine containment. Replaced most department signs to make departments easier to find. Bridge/cargo now have them as well. Fixed the aux base camera network. Added missing fire alarm to CE office, moved other fire alarms that had awkward positioning (ie chemistry). Replaced the southern singulo containment wall with r-walls. It is way too easy for traitors to take down a single wall and snip emitter wires; this will make it a little more challenging. Fixed the req_access for chemistry shutters. --- _maps/map_files/PubbyStation/PubbyStation.dmm | 313 ++++++++++++------ _maps/shuttles/aux_base_small.dmm | 3 +- 2 files changed, 216 insertions(+), 100 deletions(-) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 3a6e1a953b..61bb49af24 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -13625,8 +13625,8 @@ pixel_x = 32; pixel_y = -40 }, -/obj/structure/sign/directions/evac{ - dir = 1; +/obj/structure/sign/directions/command{ + dir = 4; pixel_x = 32; pixel_y = -32 }, @@ -15679,14 +15679,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"aPw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/directions/evac{ - dir = 1; - pixel_x = 32 - }, -/turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central) "aPx" = ( /obj/machinery/light/small{ dir = 1 @@ -17593,6 +17585,20 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_x = -32; + pixel_y = -8 + }, +/obj/structure/sign/directions/command{ + dir = 1; + pixel_x = -32; + pixel_y = 8 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = -32 + }, /turf/open/floor/plasteel/brown/corner{ dir = 1 }, @@ -17774,21 +17780,6 @@ dir = 1 }, /area/hallway/secondary/exit/departure_lounge) -"aUH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/sign/directions/evac{ - dir = 1; - pixel_y = 32 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) "aUI" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -18130,6 +18121,17 @@ /obj/machinery/light{ dir = 8 }, +/obj/structure/sign/directions/engineering{ + pixel_x = -32; + pixel_y = -8 + }, +/obj/structure/sign/directions/science{ + pixel_x = -32 + }, +/obj/structure/sign/directions/medical{ + pixel_x = -32; + pixel_y = 8 + }, /turf/open/floor/plasteel/brown/corner{ dir = 1 }, @@ -18328,6 +18330,20 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = 32; + pixel_y = 8 + }, +/obj/structure/sign/directions/command{ + dir = 1; + pixel_x = 32 + }, /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) "aVS" = ( @@ -21859,10 +21875,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/directions/evac{ - dir = 8; - pixel_y = -32 - }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bfg" = ( @@ -22195,17 +22207,18 @@ /area/crew_quarters/lounge) "bge" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/directions/security{ - dir = 1; +/obj/structure/sign/directions/engineering{ + dir = 4; pixel_x = 32; - pixel_y = 40 + pixel_y = 32 }, /obj/structure/sign/directions/science{ dir = 4; pixel_x = 32; - pixel_y = 32 + pixel_y = 40 }, -/obj/structure/sign/directions/engineering{ +/obj/structure/sign/directions/medical{ + dir = 4; pixel_x = 32; pixel_y = 24 }, @@ -22384,11 +22397,6 @@ /area/hallway/primary/central) "bgA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/directions/evac{ - dir = 1; - pixel_x = -32; - pixel_y = 40 - }, /obj/structure/sign/directions/medical{ dir = 8; pixel_x = -32; @@ -22398,6 +22406,11 @@ pixel_x = -32; pixel_y = 24 }, +/obj/structure/sign/directions/supply{ + dir = 1; + pixel_x = -32; + pixel_y = 40 + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bgB" = ( @@ -22603,12 +22616,16 @@ }, /obj/structure/sign/directions/engineering{ pixel_x = 32; - pixel_y = 28 + pixel_y = 24 }, -/obj/structure/sign/directions/evac{ - dir = 1; +/obj/structure/sign/directions/science{ pixel_x = 32; - pixel_y = 38 + pixel_y = 32 + }, +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_x = 32; + pixel_y = 40 }, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -25315,12 +25332,12 @@ id = "robotics"; name = "Shutters Control Button"; pixel_x = -26; - pixel_y = 4; + pixel_y = 8; req_access_txt = "29" }, /obj/machinery/light_switch{ pixel_x = -25; - pixel_y = -6 + pixel_y = -8 }, /turf/open/floor/plasteel/dark, /area/science/robotics/lab) @@ -26331,7 +26348,7 @@ name = "Shutters Control"; pixel_x = 26; pixel_y = 4; - req_access_txt = "5; 33" + req_one_access_txt = "5;33" }, /turf/open/floor/plasteel/whiteyellow/side{ dir = 5 @@ -26929,9 +26946,9 @@ /obj/machinery/chem_dispenser{ layer = 2.7 }, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_x = 29 +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28 }, /turf/open/floor/plasteel/whiteyellow/side{ dir = 4 @@ -38283,8 +38300,9 @@ /area/crew_quarters/heads/chief) "bUL" = ( /obj/machinery/computer/station_alert, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 +/obj/machinery/firealarm{ + dir = 1; + pixel_y = 29 }, /turf/open/floor/plasteel/yellow/side{ dir = 1 @@ -38292,6 +38310,9 @@ /area/crew_quarters/heads/chief) "bUM" = ( /obj/machinery/computer/card/minor/ce, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, /turf/open/floor/plasteel/yellow/side{ dir = 5 }, @@ -46327,13 +46348,6 @@ /obj/item/flashlight/lantern, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"cwP" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28 - }, -/turf/closed/wall, -/area/medical/chemistry) "cwR" = ( /obj/structure/window/reinforced{ dir = 8; @@ -48090,6 +48104,14 @@ }, /turf/open/floor/plasteel, /area/science/explab) +"flk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/directions/evac{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "fmh" = ( /turf/open/floor/wood, /area/maintenance/department/engine) @@ -49307,6 +49329,20 @@ }, /turf/open/floor/plating, /area/security/execution/transfer) +"iQH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) "iSz" = ( /obj/structure/cable{ icon_state = "2-8" @@ -49747,6 +49783,28 @@ dir = 4 }, /area/hallway/secondary/exit/departure_lounge) +"klP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/science{ + dir = 4; + pixel_x = 32; + pixel_y = 40 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_x = 32; + pixel_y = 32 + }, +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_x = 32; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "klV" = ( /obj/item/clothing/under/rank/clown/sexy, /turf/open/floor/plasteel/dark, @@ -49767,6 +49825,15 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"knx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sign/directions/engineering{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/green/side{ + dir = 4 + }, +/area/hallway/primary/aft) "kpK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -50209,6 +50276,21 @@ /obj/item/wrench, /turf/open/floor/plating, /area/maintenance/department/science) +"lKG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sign/directions/medical{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/directions/science{ + pixel_x = 32 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = 8 + }, +/turf/open/floor/plasteel/neutral/corner, +/area/hallway/primary/central) "lKL" = ( /obj/machinery/door/airlock/abandoned{ name = "Starboard Emergency Storage"; @@ -50494,6 +50576,11 @@ dir = 1; pixel_x = 32 }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_x = 32; + pixel_y = 8 + }, /turf/open/floor/plasteel/vault, /area/bridge) "mzl" = ( @@ -50635,15 +50722,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"nfi" = ( -/obj/structure/sign/directions/evac{ - dir = 1; - pixel_y = 32 - }, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) "nfz" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -50889,6 +50967,14 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"nMf" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/directions/evac{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "nMG" = ( /obj/structure/cable{ icon_state = "2-4" @@ -51677,6 +51763,10 @@ /area/medical/virology) "pSc" = ( /obj/machinery/chem_heater, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 29 + }, /turf/open/floor/plasteel/whiteyellow/side{ dir = 5 }, @@ -52919,9 +53009,9 @@ "tHk" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/directions/evac{ - pixel_x = 32; - pixel_y = 3 +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = 32 }, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -53262,6 +53352,24 @@ /obj/effect/turf_decal/plaque, /turf/open/floor/plating, /area/maintenance/department/engine) +"uPN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/directions/evac{ + dir = 8; + pixel_x = -32; + pixel_y = 8 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = -32 + }, +/obj/structure/sign/directions/command{ + dir = 1; + pixel_x = -32; + pixel_y = -8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "uQR" = ( /obj/item/ammo_casing/shotgun/beanbag, /turf/open/floor/plating, @@ -54095,6 +54203,13 @@ /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/library) +"xjb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/directions/evac{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "xjc" = ( /obj/structure/cable{ icon_state = "2-8" @@ -75616,7 +75731,7 @@ aIH jTh aSu aiu -nfi +aML aJE aWF aXF @@ -76130,7 +76245,7 @@ oEA scp oEA oEA -dpa +iQH dTV aWF kAa @@ -77415,7 +77530,7 @@ aQx aRG qWM oEA -aUH +mal dTV aWF aXI @@ -78173,11 +78288,11 @@ aDu aEs aFr aGb -aGU +nMf aHE aAL aAL -aAL +xjb aAL aMR aAL @@ -78193,11 +78308,11 @@ aGU aAL aZL aAL -aAL +uPN aAL aAL bfg -aAL +flk aAL bhJ bif @@ -78695,14 +78810,14 @@ aKI aLv aMT aKI -aPw +aKI aQC aKI aKI aTP aUM aVR -aKI +lKG aXL aYL aZN @@ -82567,7 +82682,7 @@ bdo ben bfo bfo -aJZ +klP aAL bin bja @@ -83659,7 +83774,7 @@ fFv fFv fFv fFv -bTE +bXk aaa aaa aaa @@ -83916,7 +84031,7 @@ fFv qbp fFv fFv -bTE +bXk aaa aaa aaa @@ -84173,7 +84288,7 @@ cBR uVW lRY ckr -bTE +bXk aaa aaa aaa @@ -84430,7 +84545,7 @@ cjs cfV cfV cfV -bTE +bXk abI aaa aaa @@ -84687,7 +84802,7 @@ uaP ciG cfV cfV -bTE +bXk abI abI aaa @@ -84944,7 +85059,7 @@ uoq uRk ciG cfV -bTE +bXk abI aaa aaa @@ -85201,7 +85316,7 @@ fyO uoq hQC mpd -bTE +bXk abI aaa aaa @@ -85458,7 +85573,7 @@ fyO fyO hQC mpd -bTE +bXk abI aaa aaa @@ -85715,7 +85830,7 @@ mpd mpd hQC sYp -bTE +bXk abI aaa aaa @@ -85972,7 +86087,7 @@ fyO fyO hQC mpd -bTE +bXk aaa aaa aaa @@ -86229,7 +86344,7 @@ fyO uoq hQC mpd -bTE +bXk aaa aaa aaa @@ -86433,7 +86548,7 @@ bmA bjd bpY bpY -cwP +bpY pSc gGA bwW @@ -86486,7 +86601,7 @@ fyO dZj ciI cfV -bTE +bXk aaa aaa aaa @@ -86743,7 +86858,7 @@ cZt ciI cfV cfV -bTE +bXk abI aaa aaa @@ -87000,7 +87115,7 @@ cjt cfV cfV cfV -bTE +bXk abI abI abI @@ -87257,7 +87372,7 @@ woh liR phg cks -bTE +bXk abI aaa abI @@ -87514,7 +87629,7 @@ fFv kWQ fFv fFv -bTE +bXk abI aaa aaa @@ -87771,7 +87886,7 @@ fFv fFv fFv fFv -bTE +bXk abI abI abI @@ -90028,7 +90143,7 @@ bks blD bko bko -bko +knx bqf bko bsV diff --git a/_maps/shuttles/aux_base_small.dmm b/_maps/shuttles/aux_base_small.dmm index a7ddb70a9b..3ebc1065c7 100644 --- a/_maps/shuttles/aux_base_small.dmm +++ b/_maps/shuttles/aux_base_small.dmm @@ -35,7 +35,8 @@ /area/shuttle/auxillary_base) "h" = ( /obj/machinery/camera{ - dir = 1 + dir = 1; + network = list("auxbase") }, /obj/structure/mining_shuttle_beacon, /turf/open/floor/plating, From a17bd1bdb10713bf0c3f505a268a7dd89d35f5dd Mon Sep 17 00:00:00 2001 From: AnturK Date: Fri, 20 Jul 2018 02:46:49 +0200 Subject: [PATCH 006/403] Fixes alien drool (#39214) --- .../mob/living/carbon/alien/humanoid/alien_powers.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index cdc1b08d21..a1c4f7ee35 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -233,17 +233,17 @@ Doesn't work on other aliens/AI.*/ /obj/effect/proc_holder/alien/neurotoxin/on_lose(mob/living/carbon/user) remove_ranged_ability() -/obj/effect/proc_holder/alien/neurotoxin/add_ranged_ability(mob/living/user, msg) +/obj/effect/proc_holder/alien/neurotoxin/add_ranged_ability(mob/living/user,msg,forced) ..() if(isalienadult(user)) var/mob/living/carbon/alien/humanoid/A = user A.drooling = 1 A.update_icons() -/obj/effect/proc_holder/alien/neurotoxin/remove_ranged_ability(mob/living/user, msg) +/obj/effect/proc_holder/alien/neurotoxin/remove_ranged_ability(msg) ..() - if(isalienadult(user)) - var/mob/living/carbon/alien/humanoid/A = user + if(isalienadult(ranged_ability_user)) + var/mob/living/carbon/alien/humanoid/A = ranged_ability_user A.drooling = 0 A.update_icons() From 88b7710e40b39aaa678c45fcccfa6b377f119eb6 Mon Sep 17 00:00:00 2001 From: Grandmother of 50 <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Thu, 19 Jul 2018 20:53:47 -0400 Subject: [PATCH 007/403] Disk Toaster Icon fix (#39217) --- code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 131f28aa12..17ba3aa548 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -418,6 +418,8 @@ name = "disk compartmentalizer" desc = "A machine capable of storing a variety of disks. Denoted by most as the DSU (disk storage unit)." icon_state = "disktoaster" + icon_on = "disktoaster" + icon_off = "disktoaster-off" /obj/machinery/smartfridge/disks/accept_check(obj/item/O) if(istype(O, /obj/item/disk/)) From 46f1b9c6e752e498b6c7a0dbb102e7177a830c49 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Fri, 20 Jul 2018 03:00:53 +0200 Subject: [PATCH 008/403] Tweaks outfit datums (#39131) admin: Added hardsuit outfits for the Captain, HoS, and CMO. Removed old Shaft Miner (Asteroid) outfits. Gave Chief Engineer (Hardsuit) engineering scanner goggles. Added debug outfit for testing. I added hardsuit outfit datums for Cap/HoS/CMO so admins have an easier time dressing up players. I removed Shaft Miner (Asteroid), since the asteroid has been dead for a long time. Also added a "debug" outfit so I don't have to spend 2 1/2 seconds spawning equipment when testing. --- code/modules/awaymissions/corpse.dm | 4 ++-- code/modules/clothing/outfits/standard.dm | 15 ++++++++++++--- code/modules/jobs/job_types/captain.dm | 7 +++++++ code/modules/jobs/job_types/cargo_service.dm | 17 ++++------------- code/modules/jobs/job_types/engineering.dm | 1 + code/modules/jobs/job_types/medical.dm | 8 ++++++++ code/modules/jobs/job_types/security.dm | 8 ++++++++ 7 files changed, 42 insertions(+), 18 deletions(-) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 0ee182d9f8..55cf1c9f8b 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -336,10 +336,10 @@ /obj/effect/mob_spawn/human/miner name = "Shaft Miner" - outfit = /datum/outfit/job/miner/asteroid + outfit = /datum/outfit/job/miner /obj/effect/mob_spawn/human/miner/rig - outfit = /datum/outfit/job/miner/equipped/asteroid + outfit = /datum/outfit/job/miner/equipped/hardsuit /obj/effect/mob_spawn/human/miner/explorer outfit = /datum/outfit/job/miner/equipped diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 88b51963e5..1f7ac9fb20 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -424,6 +424,15 @@ mask = /obj/item/clothing/mask/breath suit_store = /obj/item/tank/internals/oxygen - - - +/datum/outfit/debug //Debug objs plus hardsuit + name = "Debug outfit" + uniform = /obj/item/clothing/under/patriotsuit + suit = /obj/item/clothing/suit/space/hardsuit/syndi/elite + suit_store = /obj/item/tank/internals/oxygen + belt = /obj/item/storage/belt/utility/chief/full + gloves = /obj/item/clothing/gloves/combat + id = /obj/item/card/id/ert + glasses = /obj/item/clothing/glasses/meson/night + ears = /obj/item/radio/headset/headset_cent/commander + back = /obj/item/storage/backpack/holding + backpack_contents = list(/obj/item/card/emag=1, /obj/item/flashlight/emp/debug=1, /obj/item/construction/rcd/combat =1, /obj/item/gun/magic/wand/resurrection/debug=1, /obj/item/melee/transforming/energy/axe=1) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 988eca631c..94cf27749e 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -52,6 +52,13 @@ Captain chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/captain) +/datum/outfit/job/captain/hardsuit + name = "Captain (Hardsuit)" + + mask = /obj/item/clothing/mask/gas/sechailer + suit = /obj/item/clothing/suit/space/hardsuit/captain + suit_store = /obj/item/tank/internals/oxygen + /* Head of Personnel */ diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm index 98cdccf4ee..0fe4e3c20b 100644 --- a/code/modules/jobs/job_types/cargo_service.dm +++ b/code/modules/jobs/job_types/cargo_service.dm @@ -78,7 +78,7 @@ Shaft Miner minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) /datum/outfit/job/miner - name = "Shaft Miner (Lavaland)" + name = "Shaft Miner" jobtype = /datum/job/mining belt = /obj/item/pda/shaftminer @@ -101,13 +101,8 @@ Shaft Miner chameleon_extras = /obj/item/gun/energy/kinetic_accelerator -/datum/outfit/job/miner/asteroid - name = "Shaft Miner (Asteroid)" - uniform = /obj/item/clothing/under/rank/miner - shoes = /obj/item/clothing/shoes/workboots - /datum/outfit/job/miner/equipped - name = "Shaft Miner (Lavaland + Equipment)" + name = "Shaft Miner (Equipment)" suit = /obj/item/clothing/suit/hooded/explorer mask = /obj/item/clothing/mask/gas/explorer glasses = /obj/item/clothing/glasses/meson @@ -129,15 +124,11 @@ Shaft Miner var/obj/item/clothing/suit/hooded/S = H.wear_suit S.ToggleHood() -/datum/outfit/job/miner/equipped/asteroid - name = "Shaft Miner (Asteroid + Equipment)" - uniform = /obj/item/clothing/under/rank/miner - shoes = /obj/item/clothing/shoes/workboots +/datum/outfit/job/miner/equipped/hardsuit + name = "Shaft Miner (Equipment + Hardsuit)" suit = /obj/item/clothing/suit/space/hardsuit/mining mask = /obj/item/clothing/mask/breath - - /* Bartender */ diff --git a/code/modules/jobs/job_types/engineering.dm b/code/modules/jobs/job_types/engineering.dm index 171a437bb1..f28e5f1afc 100644 --- a/code/modules/jobs/job_types/engineering.dm +++ b/code/modules/jobs/job_types/engineering.dm @@ -57,6 +57,7 @@ Chief Engineer suit = /obj/item/clothing/suit/space/hardsuit/engine/elite shoes = /obj/item/clothing/shoes/magboots/advance suit_store = /obj/item/tank/internals/oxygen + glasses = /obj/item/clothing/glasses/meson/engine gloves = /obj/item/clothing/gloves/color/yellow head = null internals_slot = SLOT_S_STORE diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm index 2ab5da36aa..5a926f490a 100644 --- a/code/modules/jobs/job_types/medical.dm +++ b/code/modules/jobs/job_types/medical.dm @@ -48,6 +48,14 @@ Chief Medical Officer chameleon_extras = list(/obj/item/gun/syringe, /obj/item/stamp/cmo) +/datum/outfit/job/cmo/hardsuit + name = "Chief Medical Officer (Hardsuit)" + + mask = /obj/item/clothing/mask/breath + suit = /obj/item/clothing/suit/space/hardsuit/medical + suit_store = /obj/item/tank/internals/oxygen + r_pocket = /obj/item/flashlight/pen + /* Medical Doctor */ diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index 2b4ce275b3..c69a5873b1 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -62,6 +62,14 @@ Head of Security chameleon_extras = list(/obj/item/gun/energy/e_gun/hos, /obj/item/stamp/hos) +/datum/outfit/job/hos/hardsuit + name = "Head of Security (Hardsuit)" + + mask = /obj/item/clothing/mask/gas/sechailer + suit = /obj/item/clothing/suit/space/hardsuit/security/hos + suit_store = /obj/item/tank/internals/oxygen + backpack_contents = list(/obj/item/melee/baton/loaded=1, /obj/item/gun/energy/e_gun=1) + /* Warden */ From cc20d226d6cbc30bbffdfd855e85a2531d2fdfed Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 19 Jul 2018 18:00:56 -0700 Subject: [PATCH 009/403] Automatic changelog generation for PR #39131 [ci skip] --- html/changelogs/AutoChangeLog-pr-39131.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39131.yml diff --git a/html/changelogs/AutoChangeLog-pr-39131.yml b/html/changelogs/AutoChangeLog-pr-39131.yml new file mode 100644 index 0000000000..71a6989779 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39131.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - admin: "Added hardsuit outfits for the Captain, HoS, and CMO. Removed old Shaft Miner (Asteroid) outfits. Gave Chief Engineer (Hardsuit) engineering scanner goggles. Added debug outfit for testing." From 7e3d846012b02fc935b5ac5616efac2c21ae7b20 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Fri, 20 Jul 2018 03:04:01 +0200 Subject: [PATCH 010/403] Boxstation tweaks (#39117) * Boxstation tweaks * Smartfridge, grenade assemblies --- _maps/map_files/BoxStation/BoxStation.dmm | 142 ++++++++++++++++------ 1 file changed, 102 insertions(+), 40 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 15dcb921ae..ad73dc9dea 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -22691,6 +22691,13 @@ /area/medical/chemistry) "bhd" = ( /obj/machinery/chem_master, +/obj/machinery/button/door{ + id = "chemistry_shutters"; + name = "Chemistry shutters"; + pixel_x = 24; + pixel_y = -6; + req_one_access_txt = "5; 33" + }, /turf/open/floor/plasteel/whiteyellow/side{ dir = 5 }, @@ -23226,6 +23233,10 @@ req_access_txt = "33" }, /obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "chemistry_shutters"; + name = "Chemistry shutters" + }, /turf/open/floor/plating, /area/medical/chemistry) "bis" = ( @@ -24389,6 +24400,10 @@ req_access_txt = "33" }, /obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "chemistry_shutters"; + name = "Chemistry shutters" + }, /turf/open/floor/plating, /area/medical/chemistry) "bli" = ( @@ -24994,8 +25009,38 @@ dir = 4; pixel_x = -22 }, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, +/obj/item/assembly/igniter{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/assembly/igniter{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/assembly/igniter{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/assembly/igniter{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/assembly/timer{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/assembly/timer{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/assembly/timer{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/assembly/timer{ + pixel_x = 3; + pixel_y = -3 + }, /turf/open/floor/plasteel/white, /area/medical/chemistry) "bmG" = ( @@ -25110,7 +25155,9 @@ /area/hallway/primary/central) "bmT" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/medical/chemistry) "bmU" = ( @@ -25379,26 +25426,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/quartermaster/office) -"bnB" = ( -/obj/structure/closet/wardrobe/chemistry_white, -/obj/machinery/light_switch{ - pixel_x = -23 - }, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) "bnC" = ( /obj/structure/chair, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bnD" = ( -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table, -/obj/item/book/manual/wiki/chemistry, -/obj/item/book/manual/wiki/chemistry{ - pixel_x = 3; - pixel_y = 3 - }, /turf/open/floor/plasteel/white, /area/medical/chemistry) "bnE" = ( @@ -25606,17 +25636,19 @@ /area/crew_quarters/heads/captain) "bob" = ( /obj/structure/table/glass, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, /obj/item/screwdriver{ - pixel_x = -2; - pixel_y = 6 + pixel_x = 2; + pixel_y = 18 }, /obj/machinery/light{ dir = 8 }, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, /turf/open/floor/plasteel/white, /area/medical/chemistry) "boc" = ( @@ -25632,7 +25664,7 @@ "bod" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/radio/headset/headset_med, +/obj/item/pen, /turf/open/floor/plasteel/white, /area/medical/chemistry) "boe" = ( @@ -26295,6 +26327,7 @@ req_access_txt = "33" }, /obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/medical/chemistry) "bpG" = ( @@ -26350,9 +26383,8 @@ /area/medical/genetics) "bpM" = ( /obj/structure/disposalpipe/segment, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, +/obj/machinery/smartfridge/chemistry, +/turf/closed/wall, /area/medical/chemistry) "bpN" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -26792,9 +26824,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/whiteyellow/side{ dir = 1 }, @@ -26804,7 +26834,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, /turf/open/floor/plasteel/whiteyellow/side{ dir = 1 }, @@ -46232,6 +46264,7 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/closet/wardrobe/engineering_yellow, /turf/open/floor/plasteel/yellow/side{ dir = 9 }, @@ -52118,7 +52151,6 @@ /turf/closed/wall/r_wall, /area/engine/engineering) "cGt" = ( -/obj/structure/closet/wardrobe/engineering_yellow, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -53667,6 +53699,12 @@ /obj/machinery/nuclearbomb/beer, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"miq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) "mjr" = ( /obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, @@ -54018,6 +54056,22 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"vRy" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/chemist, +/obj/machinery/button/door{ + id = "chemistry_shutters"; + name = "Chemistry shutters"; + pixel_x = 24; + pixel_y = -28; + req_one_access_txt = "5; 33" + }, +/turf/open/floor/plasteel/whiteyellow/side{ + dir = 4 + }, +/area/medical/chemistry) "wkN" = ( /turf/closed/wall, /area/science/circuit) @@ -54056,6 +54110,14 @@ }, /turf/closed/wall, /area/hallway/secondary/service) +"wCA" = ( +/obj/machinery/light_switch{ + pixel_x = -23 + }, +/obj/structure/closet/secure_closet/chemical, +/obj/item/radio/headset/headset_med, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) "wHz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -87902,13 +87964,13 @@ bcq bcq bcq bfF -bha +wCA bio bgF blf bmF bob -bnB +bha bfF bqR brX @@ -88422,7 +88484,7 @@ bgP bjL bkL bmT -bnD +bjL bpM bqT bFD @@ -88678,7 +88740,7 @@ bip bjO bip bmG -bip +miq bnC bpF bqS @@ -88933,7 +88995,7 @@ bfF bhd bis bjR -bis +vRy bmI bod bpt From 0a11f2e24adb3f9240fbf3d34a3462322063df92 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Fri, 20 Jul 2018 03:13:33 +0200 Subject: [PATCH 011/403] Makes Omega shaft miners spawn with the correct box, adds missing wardrobe (#39129) * Makes Omega shaft miners spawn with the correct box * adds shaft miner wardrobe --- _maps/map_files/OmegaStation/OmegaStation.dmm | 18 +++++++++--------- _maps/map_files/OmegaStation/job_changes.dm | 4 ---- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 493f8bf54f..b96915ce57 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -7393,7 +7393,14 @@ }, /area/quartermaster/miningdock) "aol" = ( -/obj/structure/ore_box, +/obj/structure/rack, +/obj/item/storage/toolbox/emergency{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/pickaxe, +/obj/item/storage/toolbox/emergency, +/obj/item/shovel, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) @@ -8557,19 +8564,12 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard/fore) "aqq" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/emergency{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/pickaxe, -/obj/item/storage/toolbox/emergency, -/obj/item/shovel, /obj/machinery/camera{ c_tag = "Mining Dock"; dir = 4 }, /obj/effect/turf_decal/bot, +/obj/structure/closet/wardrobe/miner, /turf/open/floor/plasteel, /area/quartermaster/miningdock) "aqr" = ( diff --git a/_maps/map_files/OmegaStation/job_changes.dm b/_maps/map_files/OmegaStation/job_changes.dm index bef766da7b..035deb9032 100644 --- a/_maps/map_files/OmegaStation/job_changes.dm +++ b/_maps/map_files/OmegaStation/job_changes.dm @@ -117,10 +117,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) -/datum/outfit/job/mining/New() - ..() - box = /obj/item/storage/box/engineer/radio - //Service /datum/job/bartender/New() From d2eb3e83ed711f329783b7df67089ff4405d8a62 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Fri, 20 Jul 2018 03:15:41 +0200 Subject: [PATCH 012/403] Tweaks wardrobe vendor contents, adds old shaft miner jumpsuit as premium (#39133) --- code/modules/vending/wardrobes.dm | 87 ++++++++++++++++--------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 40e09cee23..8be5cee324 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -7,10 +7,10 @@ icon_state = "secdrobe" product_ads = "Beat perps in style!;It's red so you can't see the blood!;You have the right to be fashionable!;Now you can be the fashion police you always wanted to be!" vend_reply = "Thank you for using the SecDrobe!" - products = list(/obj/item/clothing/suit/hooded/wintercoat/security = 1, - /obj/item/storage/backpack/security = 1, - /obj/item/storage/backpack/satchel/sec = 1, - /obj/item/storage/backpack/duffelbag/sec = 2, + products = list(/obj/item/clothing/suit/hooded/wintercoat/security = 3, + /obj/item/storage/backpack/security = 3, + /obj/item/storage/backpack/satchel/sec = 3, + /obj/item/storage/backpack/duffelbag/sec = 3, /obj/item/clothing/under/rank/security = 3, /obj/item/clothing/shoes/jackboots = 3, /obj/item/clothing/head/beret/sec = 3, @@ -33,23 +33,23 @@ icon_state = "medidrobe" product_ads = "Make those blood stains look fashionable!!" vend_reply = "Thank you for using the MediDrobe!" - products = list(/obj/item/clothing/accessory/pocketprotector = 1, - /obj/item/storage/backpack/duffelbag/med = 1, - /obj/item/storage/backpack/medic = 1, - /obj/item/storage/backpack/satchel/med = 1, - /obj/item/clothing/suit/hooded/wintercoat/medical = 1, - /obj/item/clothing/under/rank/nursesuit = 1, - /obj/item/clothing/head/nursehat = 1, - /obj/item/clothing/under/rank/medical/blue = 1, - /obj/item/clothing/under/rank/medical/green = 1, - /obj/item/clothing/under/rank/medical/purple = 1, - /obj/item/clothing/under/rank/medical = 3, - /obj/item/clothing/suit/toggle/labcoat = 3, - /obj/item/clothing/suit/toggle/labcoat/emt = 3, - /obj/item/clothing/shoes/sneakers/white = 3, - /obj/item/clothing/head/soft/emt = 3, - /obj/item/clothing/suit/apron/surgical = 1, - /obj/item/clothing/mask/surgical = 1) + products = list(/obj/item/clothing/accessory/pocketprotector = 4, + /obj/item/storage/backpack/duffelbag/med = 4, + /obj/item/storage/backpack/medic = 4, + /obj/item/storage/backpack/satchel/med = 4, + /obj/item/clothing/suit/hooded/wintercoat/medical = 4, + /obj/item/clothing/under/rank/nursesuit = 4, + /obj/item/clothing/head/nursehat = 4, + /obj/item/clothing/under/rank/medical/blue = 4, + /obj/item/clothing/under/rank/medical/green = 4, + /obj/item/clothing/under/rank/medical/purple = 4, + /obj/item/clothing/under/rank/medical = 4, + /obj/item/clothing/suit/toggle/labcoat = 4, + /obj/item/clothing/suit/toggle/labcoat/emt = 4, + /obj/item/clothing/shoes/sneakers/white = 4, + /obj/item/clothing/head/soft/emt = 4, + /obj/item/clothing/suit/apron/surgical = 4, + /obj/item/clothing/mask/surgical = 4) refill_canister = /obj/item/vending_refill/wardrobe/medi_wardrobe /obj/item/vending_refill/wardrobe/medi_wardrobe @@ -61,11 +61,11 @@ icon_state = "engidrobe" product_ads = "Guaranteed to protect your feet from industrial accidents!;Afraid of radiation? Then wear yellow!" vend_reply = "Thank you for using the EngiDrobe!" - products = list(/obj/item/clothing/accessory/pocketprotector = 1, - /obj/item/storage/backpack/duffelbag/engineering = 1, - /obj/item/storage/backpack/industrial = 1, - /obj/item/storage/backpack/satchel/eng = 1, - /obj/item/clothing/suit/hooded/wintercoat/engineering = 1, + products = list(/obj/item/clothing/accessory/pocketprotector = 3, + /obj/item/storage/backpack/duffelbag/engineering = 3, + /obj/item/storage/backpack/industrial = 3, + /obj/item/storage/backpack/satchel/eng = 3, + /obj/item/clothing/suit/hooded/wintercoat/engineering = 3, /obj/item/clothing/under/rank/engineer = 3, /obj/item/clothing/suit/hazardvest = 3, /obj/item/clothing/shoes/workboots = 3, @@ -81,10 +81,10 @@ icon_state = "atmosdrobe" product_ads = "Get your inflammable clothing right here!!!" vend_reply = "Thank you for using the AtmosDrobe!" - products = list(/obj/item/clothing/accessory/pocketprotector = 1, - /obj/item/storage/backpack/duffelbag/engineering = 1, - /obj/item/storage/backpack/satchel/eng = 1, - /obj/item/storage/backpack/industrial = 1, + products = list(/obj/item/clothing/accessory/pocketprotector = 2, + /obj/item/storage/backpack/duffelbag/engineering = 2, + /obj/item/storage/backpack/satchel/eng = 2, + /obj/item/storage/backpack/industrial = 2, /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 3, /obj/item/clothing/under/rank/atmospheric_technician = 3, /obj/item/clothing/shoes/sneakers/black = 3) @@ -99,12 +99,13 @@ icon_state = "cargodrobe" product_ads = "Upgraded Assistant Style! Pick yours today!;These shorts are comfy and easy to wear, get yours now!" vend_reply = "Thank you for using the CargoDrobe!" - products = list(/obj/item/clothing/suit/hooded/wintercoat/cargo = 1, + products = list(/obj/item/clothing/suit/hooded/wintercoat/cargo = 3, /obj/item/clothing/under/rank/cargotech = 3, /obj/item/clothing/shoes/sneakers/black = 3, /obj/item/clothing/gloves/fingerless = 3, /obj/item/clothing/head/soft = 3, - /obj/item/radio/headset/headset_cargo = 1) + /obj/item/radio/headset/headset_cargo = 3) + premium = list(/obj/item/clothing/under/rank/miner = 3) refill_canister = /obj/item/vending_refill/wardrobe/cargo_wardrobe /obj/item/vending_refill/wardrobe/cargo_wardrobe @@ -122,7 +123,7 @@ /obj/item/clothing/shoes/sneakers/black = 2, /obj/item/clothing/gloves/fingerless = 2, /obj/item/clothing/head/soft/black = 2, - /obj/item/clothing/mask/bandana/skull = 1) + /obj/item/clothing/mask/bandana/skull = 2) refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe /obj/item/vending_refill/wardrobe/robo_wardrobe @@ -130,18 +131,18 @@ /obj/machinery/vending/wardrobe/science_wardrobe name = "SciDrobe" - desc = "A simple vending machine suitable to dispense well tailored science clothing. Endorsed by Cubans." + desc = "A simple vending machine suitable to dispense well tailored science clothing. Endorsed by Space Cubans." icon_state = "scidrobe" - product_ads = "Longing for the smell of flesh plasma? Buy your science clothing now!;Made with 10% Auxetics, so you don't have to worry losing your arm!" + product_ads = "Longing for the smell of plasma burnt flesh? Buy your science clothing now!;Made with 10% Auxetics, so you don't have to worry about losing your arm!" vend_reply = "Thank you for using the SciDrobe!" - products = list(/obj/item/clothing/accessory/pocketprotector = 1, - /obj/item/storage/backpack/science = 2, - /obj/item/storage/backpack/satchel/tox = 2, - /obj/item/clothing/suit/hooded/wintercoat/science = 1, + products = list(/obj/item/clothing/accessory/pocketprotector = 3, + /obj/item/storage/backpack/science = 3, + /obj/item/storage/backpack/satchel/tox = 3, + /obj/item/clothing/suit/hooded/wintercoat/science = 3, /obj/item/clothing/under/rank/scientist = 3, /obj/item/clothing/suit/toggle/labcoat/science = 3, /obj/item/clothing/shoes/sneakers/white = 3, - /obj/item/radio/headset/headset_sci = 2, + /obj/item/radio/headset/headset_sci = 3, /obj/item/clothing/mask/gas = 3) refill_canister = /obj/item/vending_refill/wardrobe/science_wardrobe @@ -156,7 +157,7 @@ vend_reply = "Thank you for using the Hydrobe!" products = list(/obj/item/storage/backpack/botany = 2, /obj/item/storage/backpack/satchel/hyd = 2, - /obj/item/clothing/suit/hooded/wintercoat/hydro = 1, + /obj/item/clothing/suit/hooded/wintercoat/hydro = 2, /obj/item/clothing/suit/apron = 2, /obj/item/clothing/suit/apron/overalls = 3, /obj/item/clothing/under/rank/hydroponics = 3, @@ -193,9 +194,9 @@ /obj/item/radio/headset/headset_srv = 2, /obj/item/clothing/under/sl_suit = 2, /obj/item/clothing/under/rank/bartender = 2, - /obj/item/clothing/under/rank/bartender/purple = 1, + /obj/item/clothing/under/rank/bartender/purple = 2, /obj/item/clothing/accessory/waistcoat = 2, - /obj/item/clothing/suit/apron/purple_bartender = 1, + /obj/item/clothing/suit/apron/purple_bartender = 2, /obj/item/clothing/head/soft/black = 2, /obj/item/clothing/shoes/sneakers/black = 2, /obj/item/reagent_containers/glass/rag = 2, From 16c304d800b967d226be6d736cb48c3f1c3a8004 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 19 Jul 2018 18:15:44 -0700 Subject: [PATCH 013/403] Automatic changelog generation for PR #39133 [ci skip] --- html/changelogs/AutoChangeLog-pr-39133.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39133.yml diff --git a/html/changelogs/AutoChangeLog-pr-39133.yml b/html/changelogs/AutoChangeLog-pr-39133.yml new file mode 100644 index 0000000000..681de37442 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39133.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Most wardrobe vendor contents have been tweaked. CargoDrobe now has the vintage shaft miner jumpsuit available as a premium item." From 00f348c06ff39362f3dcf0bfea313a999b580b2b Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 19 Jul 2018 18:17:10 -0700 Subject: [PATCH 014/403] SDQL queries are now on statbus (#39141) * Update SDQL_2.dm * no need for manual escaping.. --- code/modules/admin/verbs/SDQL2/SDQL_2.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 54af4b5167..f4fda48da7 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -27,6 +27,7 @@ var/list/results = world.SDQL2_query(query_text, key_name_admin(usr), "[usr.ckey]([usr])") for(var/I in 1 to 3) to_chat(usr, results[I]) + SSblackbox.record_feedback("nested tally", "SDQL query", 1, list(ckey, query_text)) /world/proc/SDQL2_query(query_text, log_entry1, log_entry2) var/query_log = "executed SDQL query: \"[query_text]\"." From 241799f0cf26102893443b6a6bea3121446c3e0a Mon Sep 17 00:00:00 2001 From: Grandmother of 50 <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Thu, 19 Jul 2018 22:24:43 -0400 Subject: [PATCH 015/403] [S] Illegal Paper-Tech Fix (GIBS... IN MY UPLINK?!!) (#39172) * Update uplink_items.dm * Update uplink_items.dm * Update uplink_items.dm --- code/modules/uplink/uplink_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index f59416d531..34d1d0d828 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1553,7 +1553,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/badass/random name = "Random Item" desc = "Picking this will purchase a random item. Useful if you have some TC to spare or if you haven't decided on a strategy yet." - item = /obj/item/paper + item = /obj/effect/gibspawner/generic // non-tangible item because techwebs use this path to determine illegal tech cost = 0 cant_discount = TRUE From 1173c5cccfacf0ff99ec89a17746850513917459 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 19 Jul 2018 19:24:51 -0700 Subject: [PATCH 016/403] Automatic changelog generation for PR #39172 [ci skip] --- html/changelogs/AutoChangeLog-pr-39172.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39172.yml diff --git a/html/changelogs/AutoChangeLog-pr-39172.yml b/html/changelogs/AutoChangeLog-pr-39172.yml new file mode 100644 index 0000000000..7a1b8f6824 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39172.yml @@ -0,0 +1,4 @@ +author: "Cobby" +delete-after: True +changes: + - bugfix: "Paper doesn't give illegal tech anymore" From a5e5474c10280f56d6f4cbe7b6029193fd0a0008 Mon Sep 17 00:00:00 2001 From: WJohn Date: Thu, 19 Jul 2018 22:27:34 -0400 Subject: [PATCH 017/403] Unbinds the white ship from the station's evil grasp. (#39184) --- _maps/shuttles/whiteship_meta.dmm | 1 - code/modules/shuttle/white_ship.dm | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 9888026e31..c96f3ea489 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -1120,7 +1120,6 @@ }, /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ dir = 1; - lock_override = 1; view_range = 15; x_offset = -3; y_offset = -7 diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/white_ship.dm index 6264588a3a..6193d04b9a 100644 --- a/code/modules/shuttle/white_ship.dm +++ b/code/modules/shuttle/white_ship.dm @@ -9,7 +9,7 @@ name = "White Ship Navigation Computer" desc = "Used to designate a precise transit location for the White Ship." shuttleId = "whiteship" - lock_override = CAMERA_LOCK_STATION + lock_override = NONE shuttlePortId = "whiteship_custom" shuttlePortName = "Custom Location" jumpto_ports = list("whiteship_away" = 1, "whiteship_home" = 1, "whiteship_z4" = 1) From 7d416ec8e0e5009b63ea8ff4e0c5bf4ce853ff41 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 19 Jul 2018 19:27:37 -0700 Subject: [PATCH 018/403] Automatic changelog generation for PR #39184 [ci skip] --- html/changelogs/AutoChangeLog-pr-39184.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39184.yml diff --git a/html/changelogs/AutoChangeLog-pr-39184.yml b/html/changelogs/AutoChangeLog-pr-39184.yml new file mode 100644 index 0000000000..bab93152d5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39184.yml @@ -0,0 +1,4 @@ +author: "WJohn" +delete-after: True +changes: + - rscadd: "The white ship is no longer stuck to flying around the station z level. It can now fly around its own spawn's level and the derelict's level too (these sometimes will be the same level)." From 001325ae1538b7d2776ccfa475584e0ef42cb437 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 19 Jul 2018 19:33:54 -0700 Subject: [PATCH 019/403] Update wormhole.dm (#39197) --- code/modules/projectiles/projectile/special/wormhole.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/projectile/special/wormhole.dm b/code/modules/projectiles/projectile/special/wormhole.dm index ae69d2d2ca..c67485bec3 100644 --- a/code/modules/projectiles/projectile/special/wormhole.dm +++ b/code/modules/projectiles/projectile/special/wormhole.dm @@ -9,6 +9,7 @@ tracer_type = /obj/effect/projectile/tracer/wormhole impact_type = /obj/effect/projectile/impact/wormhole muzzle_type = /obj/effect/projectile/muzzle/wormhole + hitscan = TRUE /obj/item/projectile/beam/wormhole/orange name = "orange bluespace beam" From 00cfe0f40e8c01735714917a15a81fd4c5ac641d Mon Sep 17 00:00:00 2001 From: AnturK Date: Fri, 20 Jul 2018 04:35:19 +0200 Subject: [PATCH 020/403] Fixes directly deleted mobs not getting removed properly from paused subsystem (#39207) --- code/modules/mob/living/simple_animal/simple_animal.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 4a2fda1704..f267a2af12 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -104,6 +104,8 @@ /mob/living/simple_animal/Destroy() GLOB.simple_animals[AIStatus] -= src + if (SSnpcpool.state == SS_PAUSED && LAZYLEN(SSnpcpool.currentrun)) + SSnpcpool.currentrun -= src if(nest) nest.spawned_mobs -= src From 3c95bb227ea560d9c7762000462ed1a92f5951bb Mon Sep 17 00:00:00 2001 From: zaracka <37943475+zaracka@users.noreply.github.com> Date: Fri, 20 Jul 2018 09:56:24 -0400 Subject: [PATCH 021/403] Increases the probability of cultist deconversion effects (#39213) --- code/modules/reagents/chemistry/reagents/other_reagents.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 20f8afb2df..95e27a58c5 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -218,9 +218,9 @@ M.stuttering = 1 M.stuttering = min(M.stuttering+4, 10) M.Dizzy(5) - if(iscultist(M) && prob(8)) + if(iscultist(M) && prob(20)) M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","R'ge Na'sie","Diabo us Vo'iscum","Eld' Mon Nobis")) - if(prob(20)) + if(prob(10)) M.visible_message("[M] starts having a seizure!", "You have a seizure!") M.Unconscious(120) to_chat(M, "[pick("Your blood is your bond - you are nothing without it", "Do not forget your place", \ From 166e1afd446f18657f657b16eec8ba8905ee48e5 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 20 Jul 2018 06:56:27 -0700 Subject: [PATCH 022/403] Automatic changelog generation for PR #39213 [ci skip] --- html/changelogs/AutoChangeLog-pr-39213.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39213.yml diff --git a/html/changelogs/AutoChangeLog-pr-39213.yml b/html/changelogs/AutoChangeLog-pr-39213.yml new file mode 100644 index 0000000000..4ff14a1e80 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39213.yml @@ -0,0 +1,4 @@ +author: "zaracka" +delete-after: True +changes: + - balance: "Visible indications of cultist status during deconversion using holy water happen more often." From d70839dc8f030cfdfab09e72cd8f20ff126b9f08 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 20 Jul 2018 23:04:23 +0000 Subject: [PATCH 023/403] Automatic changelog compile, [ci skip] --- html/changelog.html | 81 ++++++++-------------- html/changelogs/.all_changelog.yml | 24 +++++++ html/changelogs/AutoChangeLog-pr-39075.yml | 5 -- html/changelogs/AutoChangeLog-pr-39131.yml | 4 -- html/changelogs/AutoChangeLog-pr-39133.yml | 4 -- html/changelogs/AutoChangeLog-pr-39172.yml | 4 -- html/changelogs/AutoChangeLog-pr-39182.yml | 4 -- html/changelogs/AutoChangeLog-pr-39184.yml | 4 -- html/changelogs/AutoChangeLog-pr-39195.yml | 4 -- html/changelogs/AutoChangeLog-pr-39202.yml | 4 -- html/changelogs/AutoChangeLog-pr-39213.yml | 4 -- 11 files changed, 54 insertions(+), 88 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-39075.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39131.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39133.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39172.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39182.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39184.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39195.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39202.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39213.yml diff --git a/html/changelog.html b/html/changelog.html index ed05ef3c1e..901bf56e1e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,36 @@ -->
+

20 July 2018

+

Cobby updated:

+
    +
  • having higher sanity is no longer punished by making you enter crit faster
  • +
  • you can have 100 mood instead of 99 before it starts slowly decreasing
  • +
  • Paper doesn't give illegal tech anymore
  • +
+

CthulhuOnIce updated:

+
    +
  • Fixed 'Cybogs' in research nodes.
  • +
+

Denton updated:

+
    +
  • Added hardsuit outfits for the Captain, HoS, and CMO. Removed old Shaft Miner (Asteroid) outfits. Gave Chief Engineer (Hardsuit) engineering scanner goggles. Added debug outfit for testing.
  • +
  • Most wardrobe vendor contents have been tweaked. CargoDrobe now has the vintage shaft miner jumpsuit available as a premium item.
  • +
+

WJohn updated:

+
    +
  • Caravan ruin overall contains much less firepower, and should be harder to cheese due to placement changes and less ammunition to work with.
  • +
  • The white ship is no longer stuck to flying around the station z level. It can now fly around its own spawn's level and the derelict's level too (these sometimes will be the same level).
  • +
+

kevinz000 updated:

+
    +
  • Removed flightsuits
  • +
+

zaracka updated:

+
    +
  • Visible indications of cultist status during deconversion using holy water happen more often.
  • +
+

18 July 2018

Cyberboss updated:

    @@ -1586,57 +1616,6 @@

    iksyp updated:

  • stacking machines and their consoles no longer dissapear into the shadow realm when broken
  • you can link the stacking machine and its console by using a multitool
- -

18 May 2018

-

GrayRachnid updated:

-
    -
  • The Spider Clan proudly announces that they've taken steps to improve their hospitality at their capture center! They now hope that captured targets would not kill them self or fight between each other, dirtying the floor with blood.
  • -
  • They've also added a VR room for those sick of the real world, taking them to a reality where they feel like they matter.
  • -
- -

17 May 2018

-

Dax Dupont updated:

-
    -
  • Cult space bases are kill again.
  • -
  • Cult floors now pass gas.
  • -
  • Fixed a few things deconning into the wrong circuit.
  • -
  • You can no longer do infinite bioware surgery.
  • -
  • Added the MURDERDOME VR player versus player combat arena, filled with the most powerful weapons Centcom could think of to murder each other peacefully. Contact your nearest vendors for VR sleepers.
  • -
  • VR landmarks now accept outfits.
  • -
  • VR Sleepers can now be constructed and researched.
  • -
  • VR Sleepers now respond to mouse drops like sleepers!
  • -
  • VR sleepers no longer close or open inappropriately.
  • -
-

Denton updated:

-
    -
  • Added /syndicate subtypes for air alarms and APCs.
  • -
  • Added missing stock parts to the syndicate lavaland base.
  • -
  • Added kitchen related circuit boards to the syndie lavaland base.
  • -
-

Dimmadunk updated:

-
    -
  • There's a new type of reagent added to the booze dispenser: Fernet. With it you can make a couple of new digestif drinks that will help you reduce excess fat!
  • -
-

Garen updated:

-
    -
  • Thrower and Gun circuits put messages in chat when they're used.
  • -
  • Only the gun assembly can throw/shoot while in hand
  • -
  • Adds inhands for the gun assembly
  • -
  • grabber inventories update when a thrower takes from them
  • -
-

Pubby updated:

-
    -
  • PubbyStation has been updated. You can now be the lawyer.
  • -
-

ShizCalev updated:

-
    -
  • Adminorazine will no longer kill ash lizards.
  • -
  • Adminorazine will no longer remove quirks.
  • -
-

iskyp updated:

-
    -
  • the walls on the crashed abductor ship ruin in lavaland can now be broken down
  • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 7463549b59..c8b5d6eefc 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -19087,3 +19087,27 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. to hear anyone or surviving past the owner's death. - rscadd: Imaginary friends can now move into the owner's head. - rscadd: Imaginary friends can now choose to become invisible to the owner at will. +2018-07-20: + Cobby: + - bugfix: having higher sanity is no longer punished by making you enter crit faster + - balance: you can have 100 mood instead of 99 before it starts slowly decreasing + - bugfix: Paper doesn't give illegal tech anymore + CthulhuOnIce: + - spellcheck: Fixed 'Cybogs' in research nodes. + Denton: + - admin: Added hardsuit outfits for the Captain, HoS, and CMO. Removed old Shaft + Miner (Asteroid) outfits. Gave Chief Engineer (Hardsuit) engineering scanner + goggles. Added debug outfit for testing. + - tweak: Most wardrobe vendor contents have been tweaked. CargoDrobe now has the + vintage shaft miner jumpsuit available as a premium item. + WJohn: + - balance: Caravan ruin overall contains much less firepower, and should be harder + to cheese due to placement changes and less ammunition to work with. + - rscadd: The white ship is no longer stuck to flying around the station z level. + It can now fly around its own spawn's level and the derelict's level too (these + sometimes will be the same level). + kevinz000: + - rscdel: Removed flightsuits + zaracka: + - balance: Visible indications of cultist status during deconversion using holy + water happen more often. diff --git a/html/changelogs/AutoChangeLog-pr-39075.yml b/html/changelogs/AutoChangeLog-pr-39075.yml deleted file mode 100644 index 9ff5eec76b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39075.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Cobby" -delete-after: True -changes: - - bugfix: "having higher sanity is no longer punished by making you enter crit faster" - - balance: "you can have 100 mood instead of 99 before it starts slowly decreasing" diff --git a/html/changelogs/AutoChangeLog-pr-39131.yml b/html/changelogs/AutoChangeLog-pr-39131.yml deleted file mode 100644 index 71a6989779..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39131.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - admin: "Added hardsuit outfits for the Captain, HoS, and CMO. Removed old Shaft Miner (Asteroid) outfits. Gave Chief Engineer (Hardsuit) engineering scanner goggles. Added debug outfit for testing." diff --git a/html/changelogs/AutoChangeLog-pr-39133.yml b/html/changelogs/AutoChangeLog-pr-39133.yml deleted file mode 100644 index 681de37442..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39133.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - tweak: "Most wardrobe vendor contents have been tweaked. CargoDrobe now has the vintage shaft miner jumpsuit available as a premium item." diff --git a/html/changelogs/AutoChangeLog-pr-39172.yml b/html/changelogs/AutoChangeLog-pr-39172.yml deleted file mode 100644 index 7a1b8f6824..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39172.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cobby" -delete-after: True -changes: - - bugfix: "Paper doesn't give illegal tech anymore" diff --git a/html/changelogs/AutoChangeLog-pr-39182.yml b/html/changelogs/AutoChangeLog-pr-39182.yml deleted file mode 100644 index 6e1116a2df..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39182.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohn" -delete-after: True -changes: - - balance: "Caravan ruin overall contains much less firepower, and should be harder to cheese due to placement changes and less ammunition to work with." diff --git a/html/changelogs/AutoChangeLog-pr-39184.yml b/html/changelogs/AutoChangeLog-pr-39184.yml deleted file mode 100644 index bab93152d5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39184.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohn" -delete-after: True -changes: - - rscadd: "The white ship is no longer stuck to flying around the station z level. It can now fly around its own spawn's level and the derelict's level too (these sometimes will be the same level)." diff --git a/html/changelogs/AutoChangeLog-pr-39195.yml b/html/changelogs/AutoChangeLog-pr-39195.yml deleted file mode 100644 index 2bdd5d6e1e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39195.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - rscdel: "Removed flightsuits" diff --git a/html/changelogs/AutoChangeLog-pr-39202.yml b/html/changelogs/AutoChangeLog-pr-39202.yml deleted file mode 100644 index 0d16ecb6a9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39202.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CthulhuOnIce" -delete-after: True -changes: - - spellcheck: "Fixed 'Cybogs' in research nodes." diff --git a/html/changelogs/AutoChangeLog-pr-39213.yml b/html/changelogs/AutoChangeLog-pr-39213.yml deleted file mode 100644 index 4ff14a1e80..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39213.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "zaracka" -delete-after: True -changes: - - balance: "Visible indications of cultist status during deconversion using holy water happen more often." From 4fefb9aa276eb3b8cb5cec8502cd8bbf2234990b Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Fri, 20 Jul 2018 16:23:15 -0700 Subject: [PATCH 024/403] Adds juice to picking up stuff (#39231) * Adds juice to picking up stuff Stolen completely from https://github.com/OracleStation/OracleStation/pull/1072 * perfection * Pickup animation now tweens to the correct spot if you move * mutable appearance --- code/game/atoms_movable.dm | 36 +++++++++++++++++++++++++++++++++++ code/modules/mob/inventory.dm | 2 ++ 2 files changed, 38 insertions(+) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 9ebcfbca28..0270603538 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -771,3 +771,39 @@ if(anchored || throwing) return FALSE return TRUE + + +/obj/item/proc/do_pickup_animation(atom/target) + set waitfor = FALSE + var/mutable_appearance/I = new(icon = src, loc = loc, layer = layer + 0.1) + I.plane = GAME_PLANE + I.transform *= 0.75 + I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA + var/turf/T = get_turf(src) + var/direction + var/to_x = 0 + var/to_y = 0 + + flick_overlay(I, GLOB.clients, 6) + var/static/matrix/M = new + M.Turn(pick(-30, 30)) + + animate(I, transform = M, time = 1) + sleep(1) + animate(I, transform = matrix(), time = 1) + sleep(1) + if(!QDELETED(T) && !QDELETED(target)) + direction = get_dir(T, target) + if(direction & NORTH) + to_y = 32 + else if(direction & SOUTH) + to_y = -32 + if(direction & EAST) + to_x = 32 + else if(direction & WEST) + to_x = -32 + if(!direction) + to_y = 16 + animate(I, alpha = 175, pixel_x = to_x, pixel_y = to_y, time = 3, easing = CUBIC_EASING) + sleep(1) + animate(I, alpha = 0, time = 1) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 58b3d8704b..3498281a55 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -172,6 +172,8 @@ /mob/proc/put_in_hand(obj/item/I, hand_index, forced = FALSE) if(forced || can_put_in_hand(I, hand_index)) + if(isturf(I.loc)) + I.do_pickup_animation(src) if(hand_index == null) return FALSE if(get_item_for_held_index(hand_index) != null) From b1fc23c4c0ef6191c082f98feb19e63a1e68c3e3 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 20 Jul 2018 22:44:02 -0400 Subject: [PATCH 025/403] Fix undeleted note edit query (#39238) --- code/modules/admin/sql_message_system.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index 2ee3b1ca2d..bdc92649ff 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -128,8 +128,9 @@ var/edit_text = sanitizeSQL("Edited by [editor_ckey] on [SQLtime()] from
[old_text]
to
[new_text]
") var/datum/DBQuery/query_edit_message = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET text = '[new_text]', lasteditor = '[editor_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE id = [message_id] AND deleted = 0") if(!query_edit_message.warn_execute()) - qdel(query_find_edit_message) + qdel(query_edit_message) return + qdel(query_edit_message) log_admin_private("[key_name(usr)] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""] made by [admin_ckey] from [old_text] to [new_text]") message_admins("[key_name_admin(usr)] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""] made by [admin_ckey] from
[old_text]
to
[new_text]") if(browse) From e5a2694fe2f105a4499f410f31c6a5b026f88521 Mon Sep 17 00:00:00 2001 From: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com> Date: Fri, 20 Jul 2018 20:03:42 -0700 Subject: [PATCH 026/403] Fixes destroyed non-human bodies cloning as humans. (#39099) I really don't like my way of doing this but I don't know if there's something more obvious I'm missing... --- code/datums/dna.dm | 5 ++++- code/game/machinery/computer/cloning.dm | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 219083ec4b..df75982b72 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -12,6 +12,7 @@ var/list/temporary_mutations = list() //Timers for temporary mutations var/list/previous = list() //For temporary name/ui/ue/blood_type modifications var/mob/living/holder + var/delete_species = TRUE //Set to FALSE when a body is scanned by a cloner to fix #38875 /datum/dna/New(mob/living/new_holder) if(istype(new_holder)) @@ -23,7 +24,9 @@ if(cholder.dna == src) cholder.dna = null holder = null - QDEL_NULL(species) + + if(delete_species) + QDEL_NULL(species) mutations.Cut() //This only references mutations, just dereference. temporary_mutations.Cut() //^ diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 4846610671..00a5c8941d 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -468,6 +468,7 @@ // We store the instance rather than the path, because some // species (abductors, slimepeople) store state in their // species datums + dna.delete_species = FALSE R.fields["mrace"] = dna.species else var/datum/species/rando_race = pick(GLOB.roundstart_races) From f6b961c21bea94b75083f1f5c061a35613c9263b Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 20 Jul 2018 20:03:44 -0700 Subject: [PATCH 027/403] Automatic changelog generation for PR #39099 [ci skip] --- html/changelogs/AutoChangeLog-pr-39099.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39099.yml diff --git a/html/changelogs/AutoChangeLog-pr-39099.yml b/html/changelogs/AutoChangeLog-pr-39099.yml new file mode 100644 index 0000000000..75d27e894b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39099.yml @@ -0,0 +1,4 @@ +author: "Jared-Fogle" +delete-after: True +changes: + - bugfix: "Fixes destroyed non-human bodies cloning as humans." From cf958211de01f7e9b728cbde536d7ac00fe86a83 Mon Sep 17 00:00:00 2001 From: WJohn Date: Sat, 21 Jul 2018 00:29:48 -0400 Subject: [PATCH 028/403] Rebalances the deep space storage bunker space ruin. (#39186) * Rebalances the deep space storage bunker space ruin. * Re-adds the food and supply canisters that were taken out, but keeps them neatly stacked. * Whoops extra crates --- _maps/RandomRuins/SpaceRuins/deepstorage.dmm | 188 ++++++++++++++----- 1 file changed, 140 insertions(+), 48 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index e3317ad64e..fd7d3a40cf 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -346,13 +346,16 @@ /area/ruin/space/has_grav/deepstorage/storage) "aW" = ( /obj/structure/closet/cardboard, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, /obj/effect/turf_decal/delivery, +/obj/item/ammo_box/magazine/pistolm9mm{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/pistolm9mm, +/obj/item/ammo_box/magazine/pistolm9mm{ + pixel_x = 3; + pixel_y = -3 + }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage/storage) "aX" = ( @@ -701,15 +704,31 @@ /area/ruin/space/has_grav/deepstorage/hydroponics) "bT" = ( /obj/effect/turf_decal/delivery, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = -2 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 5 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 8; + pixel_y = -3 + }, /obj/structure/closet/crate{ name = "food crate" }, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, /obj/machinery/light{ dir = 8 }, @@ -717,15 +736,31 @@ /area/ruin/space/has_grav/deepstorage/storage) "bU" = ( /obj/effect/turf_decal/delivery, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = -2 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 5 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/snacks/beans{ + pixel_x = 8; + pixel_y = -3 + }, /obj/structure/closet/crate{ name = "food crate" }, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, -/obj/item/reagent_containers/food/snacks/beans, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage/storage) "bV" = ( @@ -981,12 +1016,28 @@ /obj/structure/closet/crate{ name = "food crate" }, -/obj/item/reagent_containers/glass/beaker/waterbottle/large, -/obj/item/reagent_containers/glass/beaker/waterbottle/large, -/obj/item/reagent_containers/glass/beaker/waterbottle/large, -/obj/item/reagent_containers/glass/beaker/waterbottle/large, -/obj/item/reagent_containers/glass/beaker/waterbottle/large, -/obj/item/reagent_containers/glass/beaker/waterbottle/large, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = -2 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 5 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 8; + pixel_y = -3 + }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage/storage) "cC" = ( @@ -1328,18 +1379,40 @@ /obj/structure/closet/crate{ name = "food crate" }, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, +/obj/item/storage/box/donkpockets{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -2 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 5 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 8; + pixel_y = -3 + }, /obj/machinery/light{ dir = 8 }, -/obj/item/vending_refill/coffee, -/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/cigarette{ + pixel_x = -3; + pixel_y = 3 + }, /obj/item/vending_refill/cigarette, +/obj/item/vending_refill/coffee{ + pixel_x = 3; + pixel_y = -3 + }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage/storage) "dx" = ( @@ -1347,15 +1420,37 @@ /obj/structure/closet/crate{ name = "food crate" }, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets, -/obj/item/vending_refill/coffee, -/obj/item/vending_refill/cigarette, +/obj/item/storage/box/donkpockets{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -2 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 5 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 8; + pixel_y = -3 + }, +/obj/item/vending_refill/cigarette{ + pixel_x = -3; + pixel_y = 3 + }, /obj/item/vending_refill/cigarette, +/obj/item/vending_refill/coffee{ + pixel_x = 3; + pixel_y = -3 + }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage/storage) "dy" = ( @@ -1773,16 +1868,13 @@ /area/ruin/space/has_grav/deepstorage/armory) "ex" = ( /obj/structure/table, -/obj/item/gun/ballistic/automatic/wt550{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/gun/ballistic/automatic/wt550{ - pixel_x = 2 - }, /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 }, +/obj/item/gun/ballistic/automatic/wt550, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_y = 12 + }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/deepstorage/armory) "ey" = ( @@ -2165,7 +2257,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage/power) "fo" = ( -/obj/machinery/suit_storage_unit/syndicate, +/obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/deepstorage/power) "fp" = ( From 7700abd00a43933371a9b79d0485f465b464c4f0 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 20 Jul 2018 21:29:50 -0700 Subject: [PATCH 029/403] Automatic changelog generation for PR #39186 [ci skip] --- html/changelogs/AutoChangeLog-pr-39186.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39186.yml diff --git a/html/changelogs/AutoChangeLog-pr-39186.yml b/html/changelogs/AutoChangeLog-pr-39186.yml new file mode 100644 index 0000000000..674241dbed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39186.yml @@ -0,0 +1,4 @@ +author: "WJohnston" +delete-after: True +changes: + - balance: "Reduced the 180 rounds (6 boxes) of 9mm ammo in the deep storage bunker to 45 (3 mags). Removed one of the wt-550s but put a compatible magazine in its place for the other to use. Turned the syndicate hardsuit into a regular grey space suit." From d2427b7a1f5d92840425afdf2193119fc03a8ae9 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sat, 21 Jul 2018 12:03:09 +0200 Subject: [PATCH 030/403] Fixes atmos_spawn_air causing invalid temperatures --- code/modules/atmospherics/environmental/LINDA_system.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/atmospherics/environmental/LINDA_system.dm b/code/modules/atmospherics/environmental/LINDA_system.dm index 268528355e..084c35684c 100644 --- a/code/modules/atmospherics/environmental/LINDA_system.dm +++ b/code/modules/atmospherics/environmental/LINDA_system.dm @@ -120,4 +120,5 @@ G.parse_gas_string(text) air.merge(G) + archive() SSair.add_to_active(src, 0) From 72e9cea3b603f783a5f4d6dafa10be0b772e54fd Mon Sep 17 00:00:00 2001 From: AnturK Date: Sat, 21 Jul 2018 12:28:57 +0200 Subject: [PATCH 031/403] Makes objects blocking air restore airflow in /atom/Destroy (#39210) --- code/game/atoms_movable.dm | 5 ++++- code/game/machinery/doors/door.dm | 2 -- code/game/machinery/shieldgen.dm | 5 ----- .../objects/effects/effect_system/effects_foam.dm | 6 ------ code/game/objects/structures/aliens.dm | 6 +++--- code/game/objects/structures/false_walls.dm | 5 ----- code/game/objects/structures/holosign.dm | 5 ----- code/game/objects/structures/mineral_doors.dm | 5 ----- code/game/objects/structures/statues.dm | 11 +++++------ .../clockcult/clock_effects/servant_blocker.dm | 4 +--- code/modules/antagonists/cult/runes.dm | 2 -- code/modules/mining/equipment/survival_pod.dm | 5 ----- 12 files changed, 13 insertions(+), 48 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 0270603538..3064be9119 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -295,7 +295,6 @@ return 1 /atom/movable/Destroy(force) - QDEL_NULL(proximity_monitor) QDEL_NULL(language_holder) @@ -303,6 +302,10 @@ . = ..() if(loc) + //Restore air flow if we were blocking it (movables with ATMOS_PASS_PROC will need to do this manually if necessary) + if(((CanAtmosPass == ATMOS_PASS_DENSITY && density) || CanAtmosPass == ATMOS_PASS_NO) && isturf(loc)) + CanAtmosPass = ATMOS_PASS_YES + air_update_turf(TRUE) loc.handle_atom_del(src) for(var/atom/movable/AM in contents) qdel(AM) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 1b7c5fb3b1..f59b8d531e 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -70,8 +70,6 @@ layer = initial(layer) /obj/machinery/door/Destroy() - density = FALSE - air_update_turf(1) update_freelook_sight() GLOB.airlocks -= src if(spark_system) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 798c27214d..68e74b1ad7 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -15,11 +15,6 @@ setDir(pick(GLOB.cardinals)) air_update_turf(1) -/obj/structure/emergency_shield/Destroy() - density = FALSE - air_update_turf(1) - return ..() - /obj/structure/emergency_shield/Move() var/turf/T = loc . = ..() diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index e7b7472e86..264715e2ac 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -274,12 +274,6 @@ . = ..() air_update_turf(1) - -/obj/structure/foamedmetal/Destroy() - density = FALSE - air_update_turf(1) - return ..() - /obj/structure/foamedmetal/Move() var/turf/T = loc . = ..() diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index c0842822df..3cc40c8415 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -64,9 +64,9 @@ CanAtmosPass = ATMOS_PASS_DENSITY -/obj/structure/alien/resin/New(location) - ..() - air_update_turf(1) +/obj/structure/alien/resin/Initialize(mapload) + . = ..() + air_update_turf(TRUE) /obj/structure/alien/resin/Move() var/turf/T = loc diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index c877488601..5878b569c3 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -38,11 +38,6 @@ . = ..() AddComponent(/datum/component/rad_insulation, RAD_MEDIUM_INSULATION) -/obj/structure/falsewall/Destroy() - density = FALSE - air_update_turf(1) - return ..() - /obj/structure/falsewall/ratvar_act() new /obj/structure/falsewall/brass(loc) qdel(src) diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index dff614746c..5b1151c36f 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -83,11 +83,6 @@ . = ..() air_update_turf(TRUE) -/obj/structure/holosign/barrier/atmos/Destroy() - var/turf/T = get_turf(src) - . = ..() - T.air_update_turf(TRUE) - /obj/structure/holosign/barrier/cyborg name = "Energy Field" desc = "A fragile energy field that blocks movement. Excels at blocking lethal projectiles." diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 86566cc683..c3316f2568 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -30,11 +30,6 @@ /obj/structure/mineral_door/ComponentInitialize() AddComponent(/datum/component/rad_insulation, RAD_MEDIUM_INSULATION) -/obj/structure/mineral_door/Destroy() - density = FALSE - air_update_turf(1) - return ..() - /obj/structure/mineral_door/Move() var/turf/T = loc . = ..() diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 6e30f75b1d..dd28168ccc 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -11,9 +11,6 @@ CanAtmosPass = ATMOS_PASS_DENSITY -/obj/structure/statue/Initialize() - . = ..() - /obj/structure/statue/attackby(obj/item/W, mob/living/user, params) add_fingerprint(user) user.changeNext_move(CLICK_CD_MELEE) @@ -116,8 +113,7 @@ /obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj) var/burn = FALSE - if(!(Proj.nodamage) && Proj.damage_type == BURN) - PlasmaBurn(2500) + if(!(Proj.nodamage) && Proj.damage_type == BURN && !QDELETED(src)) burn = TRUE if(burn) var/turf/T = get_turf(src) @@ -127,10 +123,11 @@ else message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_VERBOSEJMP(T)]") log_game("Plasma statue ignited by [Proj] in [AREACOORD(T)]. No known firer.") + PlasmaBurn(2500) ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) - if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite + if(W.is_hot() > 300 && !QDELETED(src))//If the temperature of the object is over 300, then ignite var/turf/T = get_turf(src) message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game("Plasma statue ignited by [key_name(user)] in [AREACOORD(T)]") @@ -139,6 +136,8 @@ return ..() /obj/structure/statue/plasma/proc/PlasmaBurn(exposed_temperature) + if(QDELETED(src)) + return atmos_spawn_air("plasma=[oreAmount*10];TEMP=[exposed_temperature]") deconstruct(FALSE) diff --git a/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm b/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm index 0e6e1c3821..12b2af3f64 100644 --- a/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm +++ b/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm @@ -15,9 +15,7 @@ /obj/effect/clockwork/servant_blocker/Destroy(force) if(!force) return QDEL_HINT_LETMELIVE - var/turf/T = get_turf(src) - . = ..() - T.air_update_turf(TRUE) + return ..() /obj/effect/clockwork/servant_blocker/CanPass(atom/movable/M, turf/target) var/list/target_contents = M.GetAllContents() + M diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index df4715bc69..4513195804 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -618,9 +618,7 @@ structure_check() searches for nearby cultist structures required for the invoca to_chat(user, "The air above this rune has hardened into a barrier that will last [DisplayTimeText(TMR.timeToRun - world.time)].") /obj/effect/rune/wall/Destroy() - density = FALSE GLOB.wall_runes -= src - air_update_turf(1) return ..() /obj/effect/rune/wall/BlockSuperconductivity() diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 3005a29dcd..d4b552c578 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -247,11 +247,6 @@ . = ..() air_update_turf(1) -/obj/structure/fans/Destroy() - var/turf/T = loc - . = ..() - T.air_update_turf(1) - //Inivisible, indestructible fans /obj/structure/fans/tiny/invisible name = "air flow blocker" From e58c8109a61db2ffd77dfd38f503c221fc00d8c7 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sat, 21 Jul 2018 17:07:49 +0000 Subject: [PATCH 032/403] Automatic changelog compile, [ci skip] --- html/changelog.html | 55 ++++------------------ html/changelogs/.all_changelog.yml | 8 ++++ html/changelogs/AutoChangeLog-pr-39099.yml | 4 -- html/changelogs/AutoChangeLog-pr-39186.yml | 4 -- 4 files changed, 18 insertions(+), 53 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-39099.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39186.yml diff --git a/html/changelog.html b/html/changelog.html index 901bf56e1e..e891444a01 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,16 @@ -->
+

21 July 2018

+

Jared-Fogle updated:

+
    +
  • Fixes destroyed non-human bodies cloning as humans.
  • +
+

WJohnston updated:

+
    +
  • Reduced the 180 rounds (6 boxes) of 9mm ammo in the deep storage bunker to 45 (3 mags). Removed one of the wt-550s but put a compatible magazine in its place for the other to use. Turned the syndicate hardsuit into a regular grey space suit.
  • +
+

20 July 2018

Cobby updated:

    @@ -1571,51 +1581,6 @@

    XDTM updated:

    • Added a new lavaland loot item: Memento Mori. A necklace which has the power to prevent death, but will turn you into dust if removed.
    - -

    19 May 2018

    -

    Alexch2 updated:

    -
      -
    • Fixes tons of typos related to integrated circuits.
    • -
    • Re-writes the descriptions of a few parts of integrated circuits.
    • -
    -

    Astatineguy12 updated:

    -
      -
    • The experimentor is less likely to produce food when it transforms an item
    • -
    • The experimentor no longer breaks when the toxic waste malfunction occurs multiple times and isn't cleaned up
    • -
    • The experimentor irridiate function actually chooses what item to make properly rather than picking from the start of the list
    • -
    -

    Dax Dupont updated:

    -
      -
    • Mulligan didn't work on lizards and other mutants. Now it does.
    • -
    • Foam no longer gives infinite metal
    • -
    -

    Denton updated:

    -
      -
    • Loose silver/gold/solar panel crates have been replaced with "proper" crates.
    • -
    • There are rumors of the Tiger Cooperative adding a "special little something" to some of their bioterror kits.
    • -
    -

    Iamgoofball updated:

    -
      -
    • Lipolicide now only does damage if you're starving.
    • -
    -

    Mickyan updated:

    -
      -
    • Drinking too much Gargle Blaster, Nuka Cola or Neurotoxin no longer breaks time and space.
    • -
    -

    Nichlas0010 updated:

    -
      -
    • Reseach Director Traitors can no longer receive an objective to steal the Hand Teleporter
    • -
    -

    ShizCalev updated:

    -
      -
    • Fixed mobs immune to radiation being killed by HIGH bursts of radiation.
    • -
    • The book of mindswap will now properly mindswap it's users.
    • -
    -

    iksyp updated:

    -
      -
    • stacking machines and their consoles no longer dissapear into the shadow realm when broken
    • -
    • you can link the stacking machine and its console by using a multitool
    • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index c8b5d6eefc..7c39eb7f26 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -19111,3 +19111,11 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. zaracka: - balance: Visible indications of cultist status during deconversion using holy water happen more often. +2018-07-21: + Jared-Fogle: + - bugfix: Fixes destroyed non-human bodies cloning as humans. + WJohnston: + - balance: Reduced the 180 rounds (6 boxes) of 9mm ammo in the deep storage bunker + to 45 (3 mags). Removed one of the wt-550s but put a compatible magazine in + its place for the other to use. Turned the syndicate hardsuit into a regular + grey space suit. diff --git a/html/changelogs/AutoChangeLog-pr-39099.yml b/html/changelogs/AutoChangeLog-pr-39099.yml deleted file mode 100644 index 75d27e894b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39099.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Jared-Fogle" -delete-after: True -changes: - - bugfix: "Fixes destroyed non-human bodies cloning as humans." diff --git a/html/changelogs/AutoChangeLog-pr-39186.yml b/html/changelogs/AutoChangeLog-pr-39186.yml deleted file mode 100644 index 674241dbed..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39186.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohnston" -delete-after: True -changes: - - balance: "Reduced the 180 rounds (6 boxes) of 9mm ammo in the deep storage bunker to 45 (3 mags). Removed one of the wt-550s but put a compatible magazine in its place for the other to use. Turned the syndicate hardsuit into a regular grey space suit." From e04bdb402bedb3906e5fb484fc40da7e5b19aca4 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Sat, 21 Jul 2018 21:23:13 +0200 Subject: [PATCH 033/403] Adds shared storage to Delta engineering, fixes access reqs (#39193) * Adds shared storage to Delta engineering, fixes access reqs * Fixes Port Bow Solar access reqs * Dirty vars * Cycle links Delta gravgen airlocks, fixes minisat airlock * Meta shared storage makeover, part 20 --- _maps/map_files/BoxStation/BoxStation.dmm | 4 +- .../map_files/Deltastation/DeltaStation2.dmm | 1359 +++++++++-------- _maps/map_files/MetaStation/MetaStation.dmm | 168 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 3 +- code/game/area/Space_Station_13_areas.dm | 4 + 5 files changed, 869 insertions(+), 669 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index ad73dc9dea..904c495839 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -42021,9 +42021,7 @@ /turf/open/floor/plating, /area/tcommsat/computer) "cbp" = ( -/obj/structure/closet/secure_closet/engineering_chief{ - req_access_txt = "0" - }, +/obj/structure/closet/secure_closet/engineering_chief, /obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "CE Office APC"; diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index c5047d1857..7f4dddf589 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -13456,7 +13456,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/atmos{ name = "Port Bow Solar Access"; - req_one_access_txt = "13; 24" + req_one_access_txt = "24;10" }, /obj/structure/cable/white{ icon_state = "4-8" @@ -14217,7 +14217,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/atmos{ name = "Turbine Generator Access"; - req_access_txt = "24" + req_one_access_txt = "24;10" }, /obj/structure/cable/white{ icon_state = "4-8" @@ -15451,7 +15451,7 @@ "aMD" = ( /obj/machinery/door/airlock/atmos{ name = "Turbine Generator Access"; - req_access_txt = "24" + req_one_access_txt = "24;10" }, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -18026,7 +18026,6 @@ }, /obj/machinery/door/airlock/mining/glass{ name = "Delivery Office"; - req_access_txt = 0; req_one_access_txt = "48;50" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -20429,7 +20428,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Storage"; - req_one_access_txt = "24;10" + req_access_txt = "24" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -24653,7 +24652,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Storage"; - req_one_access_txt = "24;10" + req_access_txt = "24" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -29860,6 +29859,13 @@ dir = 4 }, /area/hallway/primary/central) +"brd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/storage_shared) "bre" = ( /obj/machinery/light{ dir = 8 @@ -33074,26 +33080,26 @@ dir = 5 }, /turf/closed/wall/r_wall, -/area/engine/break_room) +/area/engine/storage_shared) "bxG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/closed/wall/r_wall, -/area/engine/break_room) +/area/engine/storage_shared) "bxH" = ( /obj/machinery/status_display, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, /turf/closed/wall/r_wall, -/area/engine/break_room) +/area/engine/storage_shared) "bxI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, -/area/engine/break_room) +/area/engine/storage_shared) "bxJ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -33770,68 +33776,29 @@ "bzg" = ( /turf/closed/wall, /area/engine/break_room) -"bzh" = ( -/obj/structure/table/reinforced, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/item/stack/sheet/metal{ - amount = 30 - }, -/obj/item/stack/sheet/glass{ - amount = 30 - }, -/obj/item/crowbar/red, -/obj/item/wrench, -/obj/structure/sign/warning/nosmoking{ - pixel_y = 32 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/break_room) "bzi" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/electrical, -/obj/item/wrench/power, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/break_room) +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plasteel/neutral/corner, +/area/engine/storage_shared) "bzj" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/break_room) +/obj/machinery/computer/rdconsole/production, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral/side, +/area/engine/storage_shared) "bzk" = ( -/obj/structure/table/reinforced, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/rglass{ - amount = 30; - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/stack/cable_coil/white, +/obj/machinery/rnd/production/protolathe/department/engineering, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/break_room) +/turf/open/floor/plasteel/neutral/side, +/area/engine/storage_shared) "bzl" = ( -/obj/structure/table/reinforced, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/item/stack/sheet/plasteel/fifty, -/obj/item/crowbar/power, -/obj/structure/sign/nanotrasen{ - pixel_x = 32 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/rnd/production/circuit_imprinter, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/break_room) +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/engine/storage_shared) "bzm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/bonfire, @@ -34609,43 +34576,6 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"bAL" = ( -/obj/machinery/power/apc/highcap/five_k{ - dir = 1; - name = "Gravity Generator APC"; - areastring = "/area/engine/gravity_generator"; - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bAM" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_y = 26 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) "bAN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -34685,33 +34615,28 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"bAQ" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -26 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/break_room) "bAR" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/break_room) "bAS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/neutral, +/area/engine/storage_shared) +"bAT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/power/apc/auto_name/east{ + pixel_x = 26 + }, /obj/structure/cable/white{ icon_state = "0-2" }, -/obj/structure/cable/white, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/break_room) -"bAT" = ( -/obj/machinery/newscaster{ - pixel_x = 32 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bAU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, @@ -35468,60 +35393,10 @@ /turf/open/floor/plating, /area/engine/gravity_generator) "bCB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bCC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/neutral, -/area/engine/gravity_generator) -"bCD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bCE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bCF" = ( -/obj/structure/sign/warning/radiation, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bCG" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm{ pixel_y = 23 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, /obj/machinery/camera{ c_tag = "Engineering - Gravity Generator Foyer"; dir = 4; @@ -35530,17 +35405,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bCH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"bCI" = ( -/obj/structure/closet/radiation, +"bCD" = ( /obj/machinery/light/small{ dir = 1 }, @@ -35555,23 +35425,25 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"bCJ" = ( +"bCE" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/closed/wall, -/area/engine/break_room) -"bCK" = ( -/obj/structure/cable/white{ - icon_state = "0-4" +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bCF" = ( +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, -/area/engine/break_room) -"bCL" = ( +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"bCG" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ name = "Power Tools Storage"; @@ -35583,32 +35455,25 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line{ dir = 2 }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"bCM" = ( -/obj/structure/cable/white{ - icon_state = "0-4" - }, -/obj/structure/cable/white{ - icon_state = "0-8" +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, -/obj/structure/cable/white, -/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/engine/storage_shared) +"bCH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, -/area/engine/break_room) -"bCN" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bCI" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ name = "Power Tools Storage"; @@ -35630,15 +35495,54 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/engine/break_room) -"bCO" = ( +/area/engine/storage_shared) +"bCJ" = ( /obj/structure/cable/white{ icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating, -/area/engine/break_room) +/area/engine/storage_shared) +"bCL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/engine/storage_shared) +"bCM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/neutral, +/area/engine/storage_shared) +"bCN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/neutral, +/area/engine/storage_shared) +"bCO" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/engine/storage_shared) "bCP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -36705,6 +36609,9 @@ /obj/structure/cable/white{ icon_state = "2-4" }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bEq" = ( @@ -36760,19 +36667,27 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bEv" = ( /obj/structure/cable/white{ - icon_state = "2-4" + icon_state = "1-8" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /obj/structure/cable/white{ icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/engine/gravity_generator) +/area/engine/storage_shared) "bEw" = ( /obj/machinery/holopad, /obj/effect/decal/cleanable/dirt, @@ -36794,13 +36709,22 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "bEy" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) +"bEz" = ( /obj/machinery/door/firedoor, /obj/structure/cable/white{ icon_state = "4-8" }, /obj/machinery/door/airlock/highsecurity{ - name = "Gravity Generator Foyer"; - req_access_txt = "10" + name = "Engineering Heavy-Equipment Storage"; + req_access_txt = "32" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -36813,41 +36737,21 @@ dir = 4 }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"bEz" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/end{ dir = 8 }, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bEA" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/turf/open/floor/plasteel/neutral/side{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bEB" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -36855,32 +36759,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/turf/open/floor/plasteel/neutral, +/area/engine/storage_shared) "bEC" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/neutral, +/area/engine/storage_shared) "bED" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -36888,35 +36775,25 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/end{ - dir = 4 +/obj/structure/cable/white{ + icon_state = "1-4" }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/engine/storage_shared) "bEE" = ( -/obj/machinery/door/firedoor, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/highsecurity{ - name = "Engineering Heavy-Equipment Storage"; - req_access_txt = "32" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Shared Engineering Storage"; + req_one_access_txt = "32;19" }, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bEF" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -37635,24 +37512,22 @@ }, /area/engine/gravity_generator) "bFY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bFZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/neutral, +/turf/open/floor/plasteel, /area/engine/gravity_generator) "bGa" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 }, /turf/open/floor/plasteel, /area/engine/gravity_generator) @@ -37676,49 +37551,19 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, /turf/open/floor/plasteel, -/area/engine/gravity_generator) +/area/engine/storage_shared) "bGe" = ( /obj/machinery/status_display{ pixel_x = 32; pixel_y = -32 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/engine/gravity_generator) +/area/engine/storage_shared) "bGf" = ( -/obj/structure/closet/radiation, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/machinery/light/small, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bGg" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/item/twohanded/required/kirbyplants/random, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/break_room) -"bGh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, /obj/machinery/camera{ @@ -37726,31 +37571,47 @@ dir = 1; name = "engineering camera" }, -/turf/open/floor/plasteel/caution, -/area/engine/break_room) -"bGi" = ( /obj/machinery/light, -/turf/open/floor/plasteel/caution, -/area/engine/break_room) +/turf/open/floor/plasteel, +/area/engine/storage_shared) +"bGh" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch{ + pixel_x = -22 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/engine/storage_shared) +"bGi" = ( +/obj/machinery/vending/engivend, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 + }, +/area/engine/storage_shared) "bGj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 +/obj/machinery/vending/tool, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral/side{ + dir = 1; + heat_capacity = 1e+006 }, -/turf/open/floor/plasteel/caution, -/area/engine/break_room) +/area/engine/storage_shared) "bGk" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/machinery/airalarm{ +/obj/structure/closet/secure_closet/engineering_welding, +/obj/machinery/camera{ + c_tag = "Engineering - Shared Storage"; dir = 1; - pixel_y = -22 + name = "engineering camera" }, -/obj/item/twohanded/required/kirbyplants/random, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/break_room) +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/engine/storage_shared) "bGl" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -38510,26 +38371,17 @@ /area/engine/gravity_generator) "bHQ" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 2 }, -/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bHR" = ( -/obj/machinery/newscaster{ - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/structure/closet/radiation, /turf/open/floor/plasteel, /area/engine/gravity_generator) "bHS" = ( @@ -38547,37 +38399,36 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "bHT" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, /obj/machinery/door/poddoor/preopen{ id = "transitlock"; name = "Transit Tube Lockdown Door" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ - dir = 2 + dir = 1 }, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 2 }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/caution, +/area/engine/storage_shared) "bHU" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/poddoor/preopen{ id = "transitlock"; name = "Transit Tube Lockdown Door" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ - dir = 2 + dir = 1 }, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 2 }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/caution, +/area/engine/storage_shared) "bHV" = ( /turf/closed/wall/r_wall, /area/crew_quarters/heads/chief) @@ -40406,7 +40257,7 @@ id = "transitlock"; name = "Transit Tube Lockdown Control"; pixel_y = 26; - req_access_txt = "39; 19" + req_access_txt = "19" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/vault{ @@ -40422,7 +40273,7 @@ id = "atmoslock"; name = "Atmospherics Lockdown Control"; pixel_x = -26; - req_access_txt = "25" + req_access_txt = "24" }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -41434,14 +41285,14 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/hatch{ +/obj/machinery/door/airlock/external{ name = "MiniSat Exterior Access"; - req_one_access_txt = "32;19" + req_one_access_txt = "13;32" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, /turf/open/floor/plasteel/vault{ @@ -41463,15 +41314,15 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/machinery/door/airlock/hatch{ +/obj/machinery/door/airlock/external{ name = "MiniSat Exterior Access"; - req_one_access_txt = "32;19" + req_one_access_txt = "13;32" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -41493,6 +41344,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -43393,7 +43246,7 @@ name = "Transit Tube Lockdown Control"; pixel_x = -38; pixel_y = -8; - req_access_txt = "39; 19" + req_access_txt = "19" }, /obj/machinery/modular_computer/console/preset/engineering{ dir = 4 @@ -51625,11 +51478,9 @@ }, /area/engine/engineering) "chD" = ( -/obj/machinery/vending/engivend, /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) "chE" = ( @@ -52419,8 +52270,6 @@ /turf/open/floor/plasteel/neutral, /area/engine/engineering) "cjo" = ( -/obj/machinery/vending/tool, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) "cjp" = ( @@ -53625,11 +53474,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) -"cma" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/engineering) "cmb" = ( /obj/machinery/vending/wardrobe/engi_wardrobe, /obj/effect/turf_decal/delivery, @@ -59151,12 +58995,10 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cxG" = ( -/obj/structure/closet/secure_closet/engineering_electrical, /obj/machinery/light_switch{ pixel_x = -26; pixel_y = 26 }, -/obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) "cxH" = ( @@ -60614,36 +60456,10 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cAL" = ( -/obj/machinery/rnd/production/protolathe/department/engineering, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel/caution{ - dir = 1 - }, -/area/engine/engineering) "cAM" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/station_engineer, -/obj/effect/turf_decal/loading_area, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/caution{ - dir = 1 - }, -/area/engine/engineering) -"cAN" = ( -/obj/machinery/computer/rdconsole/production{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel/caution{ - dir = 1 - }, +/turf/open/floor/plasteel/neutral, /area/engine/engineering) "cAO" = ( /obj/structure/cable/white{ @@ -61448,16 +61264,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cCs" = ( -/obj/structure/table/reinforced, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/caution, -/area/engine/engineering) "cCt" = ( /turf/open/floor/plasteel/yellow/side{ dir = 6 @@ -63793,6 +63599,9 @@ /area/engine/engineering) "cHj" = ( /obj/effect/turf_decal/stripes/line, +/obj/structure/table/reinforced, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, /turf/open/floor/plasteel, /area/engine/engineering) "cHk" = ( @@ -99494,13 +99303,6 @@ "ehv" = ( /turf/open/floor/plasteel/caution, /area/engine/engineering) -"ehw" = ( -/obj/machinery/rnd/production/circuit_imprinter, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/caution, -/area/engine/engineering) "ehy" = ( /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -99604,6 +99406,13 @@ dir = 5 }, /area/science/mixing) +"eMS" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "eTv" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -99630,6 +99439,26 @@ dir = 4 }, /area/science/misc_lab) +"fbA" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/storage_shared) +"fjK" = ( +/obj/machinery/door/poddoor/preopen{ + id = "transitlock"; + name = "Transit Tube Lockdown Door" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/caution, +/area/engine/storage_shared) "fno" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -99664,6 +99493,13 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"fSj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "gbV" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 @@ -99699,6 +99535,10 @@ dir = 5 }, /area/science/mixing) +"gPb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/neutral, +/area/engine/storage_shared) "gPv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -99734,6 +99574,18 @@ }, /turf/open/floor/plasteel, /area/maintenance/department/electrical) +"hcP" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "hdH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ @@ -99772,6 +99624,20 @@ }, /turf/open/floor/plasteel, /area/maintenance/port/aft) +"huX" = ( +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/structure/cable/white, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/storage_shared) "hFo" = ( /obj/structure/lattice, /obj/structure/disposalpipe/segment{ @@ -99803,6 +99669,22 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"hLm" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_y = 26 + }, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "hNZ" = ( /obj/structure/chair/office/light{ dir = 8 @@ -99815,6 +99697,18 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/research) +"igE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "ixL" = ( /obj/structure/sign/warning/vacuum{ pixel_x = 32 @@ -99992,6 +99886,39 @@ dir = 10 }, /area/science/circuit) +"lec" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"leh" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/highsecurity{ + name = "Gravity Generator Foyer"; + req_access_txt = "10" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "loI" = ( /obj/machinery/autolathe, /obj/machinery/door/window/southleft{ @@ -100071,6 +99998,14 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) +"lXl" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/structure/cable/white, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/storage_shared) "lXF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -100109,6 +100044,22 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/circuit/green, /area/science/research/abandoned) +"mAW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/engine/gravity_generator) +"mCL" = ( +/turf/closed/wall, +/area/engine/storage_shared) +"mHL" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -26 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "mQE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -100131,10 +100082,46 @@ }, /turf/open/floor/engine, /area/science/mixing) +"nyB" = ( +/obj/structure/lattice, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"nBr" = ( +/turf/closed/wall/r_wall, +/area/engine/storage_shared) +"nDk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/storage_shared) +"nOg" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "nSh" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"nSN" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/storage_shared) +"ovg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "oIl" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -100168,6 +100155,15 @@ dir = 5 }, /area/science/mixing) +"oRB" = ( +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "oSD" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -100234,6 +100230,15 @@ }, /turf/open/floor/plating, /area/science/research/abandoned) +"pCE" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "pQm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -100241,6 +100246,16 @@ }, /turf/open/floor/plasteel/neutral, /area/science/research/abandoned) +"qcx" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "qhc" = ( /obj/structure/table/reinforced, /obj/item/integrated_electronics/analyzer, @@ -100259,6 +100274,57 @@ dir = 5 }, /area/science/circuit) +"qNG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"qWg" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/stack/sheet/metal{ + amount = 30 + }, +/obj/item/stack/sheet/glass{ + amount = 30 + }, +/obj/item/crowbar/red, +/obj/item/wrench, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/storage_shared) +"qYo" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"qYx" = ( +/obj/structure/table/reinforced, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/rglass{ + amount = 30; + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/stack/cable_coil/white, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "rhO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -100272,6 +100338,24 @@ dir = 6 }, /area/science/circuit) +"rEm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"rOf" = ( +/obj/item/twohanded/required/kirbyplants/random, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch{ + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "rUD" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -100299,6 +100383,27 @@ /obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) +"tbR" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/engine/storage_shared) +"tkj" = ( +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/storage_shared) "tmi" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -100314,6 +100419,13 @@ "tCh" = ( /turf/closed/wall, /area/science/misc_lab) +"tHE" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/neutral, +/area/engine/gravity_generator) "tMk" = ( /turf/open/floor/plasteel/white/side{ dir = 10 @@ -100376,6 +100488,19 @@ dir = 5 }, /area/medical/morgue) +"vwZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/stack/sheet/plasteel/fifty, +/obj/item/crowbar/power, +/obj/structure/sign/nanotrasen{ + pixel_x = 32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "vAb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -100384,6 +100509,28 @@ dir = 4 }, /area/science/mixing) +"vDU" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/storage_shared) +"vGz" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 1; + name = "Gravity Generator APC"; + areastring = "/area/engine/gravity_generator"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "wei" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -100402,6 +100549,16 @@ }, /turf/open/floor/plasteel/whitepurple/corner, /area/science/misc_lab) +"wEB" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/electrical, +/obj/item/wrench/power, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "xaf" = ( /obj/machinery/door/airlock/public/glass{ name = "Holodeck Access" @@ -116557,14 +116714,14 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +aad +ajr ajr -aaa ajr aad +ajr +ajr +ajr aad aad aad @@ -116815,13 +116972,13 @@ aaa aaa aaa aaa +aad aaa +aad aaa -aaa -ajr aad -ajr aaa +aad aaa aaa aad @@ -117071,14 +117228,14 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa ajr -aaa +ajr +aad +ajr +ajr +ajr +ajr aad -aaa aaa aaa aad @@ -117328,13 +117485,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa ajr aad -ajr +aad +aad +aad +aad +aad aad aad aad @@ -117585,15 +117742,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aad -aaa +ajr aad -aaa -aaa +bxC +bxC +bxC +bxC +bxC +bxC +bxC aaa aad aaa @@ -117842,15 +117999,15 @@ aaa aaa ajr ajr -aad -ajr -ajr -ajr -aad -ajr -ajr ajr aad +bxC +bAH +bAH +bEn +bAH +bAH +nyB ajr aad aad @@ -118099,15 +118256,15 @@ aaa aaa ajr aaa -aaa -aad -aaa -aad -aaa aad -aaa aad -aaa +bxC +bAH +bCw +bCx +bCy +bAH +bxC aad aaa aaa @@ -118357,14 +118514,14 @@ aaa ajr aad ajr -ajr -aad -ajr -ajr -ajr -ajr aad -ajr +bxC +bAH +bCx +bEo +bFW +bAH +bxC ajr ajr aad @@ -118615,13 +118772,13 @@ ajr aaa ajr aad -aad -aad -aad -aad -aad -aad -aad +bxC +bAH +bCy +bCx +bCw +bAH +nyB aad ajr aaa @@ -118873,11 +119030,11 @@ aaa ajr aad bxC -bxC -bxC -bxC -bxC -bxC +bAI +bCz +bAH +bFX +bHN bxC aad aad @@ -119127,14 +119284,14 @@ aaa aaa ajr aad -ajr +aaa aad bxC -bAH -bAH -bEn -bAH -bAH +bAJ +bCA +bEp +bCA +bHO bxC aad ajr @@ -119387,11 +119544,11 @@ aaa aad aad bxC -bAH -bCw -bCx -bCy -bAH +bAK +ovg +bEq +rEm +bHP bxC aad ajr @@ -119641,14 +119798,14 @@ aaa aaa ajr aad -ajr +aad aad bxC -bAH -bCx -bEo -bFW -bAH +vGz +tHE +bEr +mAW +igE bxC aad aad @@ -119898,14 +120055,14 @@ aaa aaa aad aaa -ajr +aad aad bxC -bAH -bCy -bCx -bCw -bAH +hLm +qNG +bEs +lec +oRB bxC aad ajr @@ -120155,14 +120312,14 @@ ajr aad ajr aad -ajr +aad aad bxC -bAI -bCz -bAH -bFX -bHN +bAN +bCE +bEt +bGb +bHS bxC aad aad @@ -120412,14 +120569,14 @@ aad aaa aad aaa -aaa -aad +nOg +bxC +bxC +bxC +bCF +bEu +bGc bxC -bAJ -bCA -bEp -bCA -bHO bxC aad bNH @@ -120669,14 +120826,14 @@ ajr ajr ajr ajr -aad -aad +abj bxC -bAK +bzd +bAO bCB -bEq +eMS bFY -bHP +fSj bxC aad bNF @@ -120926,12 +121083,12 @@ aad aaa aad aad -aad -aad -bxC -bAL -bCC -bEr +abj +bxD +bze +bAP +bCH +bEw bFZ bHQ bxC @@ -121183,12 +121340,12 @@ aRF aRF aRF aRF -aad -aad +abj bxC -bAM +bzf +bAO bCD -bEs +bEx bGa bHR bxC @@ -121440,15 +121597,15 @@ bpO brT bpO aRF -aad -aad -bxC -bAN -bCE -bEt -bGb -bHS -bxC +qYo +nBr +mCL +mCL +nDk +leh +mCL +nBr +bLF bLH bNK bPM @@ -121697,15 +121854,15 @@ bpO bpO btK aRF -aad -bxC -bxC -bxC -bCF -bEu -bGc -bxC -bxC +qYo +nBr +qWg +mHL +tkj +nSN +qcx +fjK +bLF bLI bNL bPN @@ -121954,10 +122111,10 @@ bpP brU btL aRF -abj -bxC -bzd -bAO +qYo +nBr +wEB +vDU bCG bEv bGd @@ -122211,12 +122368,12 @@ aZQ aUY aWw aRF -abj -bxD -bze -bAP -bCH -bEw +qYo +nBr +fbA +lXl +huX +pCE bGe bHU bJP @@ -122468,12 +122625,12 @@ aZR aRE aWx aRE -abj -bxC -bzf -bAO +qYo +nBr +qYx +vDU bCI -bEx +hcP bGf bHV bHV @@ -122726,12 +122883,12 @@ aMB aWy aMG aMG -bxE -bzg -bzg +nBr +vwZ +vDU bCJ bEy -bzg +rOf bHV bJQ bLL @@ -122983,12 +123140,12 @@ brV btM buY bwr -bxE -bzh -bAQ -bCK +nBr +nBr +nBr +bxG bEz -bGg +nBr bHV bJR bLM @@ -123240,9 +123397,9 @@ brW btN buZ bws -bxE +nBr bzi -bAR +tbR bCL bEA bGh @@ -123756,7 +123913,7 @@ bva bwu bxG bzk -bAR +gPb bCN bEC bGj @@ -124269,11 +124426,11 @@ btR bvc bww bxI -bzg -bzg -bCJ +mCL +mCL +brd bEE -bzg +mCL bHV bJW bLQ @@ -124814,8 +124971,8 @@ cuT cnE clX czt -cAL -cCs +cjn +ehv cDX cFP cHj @@ -125328,8 +125485,8 @@ car car cxF cjn -cAN -ehw +cjn +ehv cDZ cdN cHl @@ -125575,7 +125732,7 @@ cfF chy cjk ckE -cma +cjo cnG cpe cqx diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 757cc9a57a..1714ee6d2a 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -24863,7 +24863,7 @@ name = "Transit Tube Lockdown"; pixel_x = -24; pixel_y = -5; - req_access_txt = "24" + req_access_txt = "19" }, /obj/machinery/button/door{ desc = "A remote control-switch for secure storage."; @@ -26165,9 +26165,7 @@ }, /area/crew_quarters/heads/chief) "bek" = ( -/obj/structure/closet/secure_closet/engineering_chief{ - req_access_txt = "0" - }, +/obj/structure/closet/secure_closet/engineering_chief, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -26211,14 +26209,14 @@ name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -6; - req_access_txt = "1" + req_one_access_txt = "1;10" }, /obj/machinery/button/door{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 5; - req_access_txt = "1" + req_one_access_txt = "1;24" }, /obj/structure/cable/yellow{ icon_state = "2-4" @@ -26257,8 +26255,12 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/structure/cable/yellow, +/obj/machinery/power/apc/auto_name/west{ + pixel_x = -26 + }, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "beq" = ( /obj/structure/sign/warning/vacuum/external, /turf/closed/wall/r_wall, @@ -27911,8 +27913,6 @@ }, /area/engine/break_room) "bhW" = ( -/obj/item/folder/yellow, -/obj/item/folder/yellow, /obj/machinery/light{ dir = 1 }, @@ -27920,8 +27920,9 @@ pixel_y = 32 }, /obj/structure/table/glass, +/obj/item/folder/yellow, /obj/item/storage/firstaid/fire{ - pixel_y = 8 + pixel_y = 6 }, /turf/open/floor/plasteel/yellow/side{ dir = 1 @@ -29547,6 +29548,9 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, /turf/open/floor/plasteel, /area/engine/break_room) "bll" = ( @@ -29555,6 +29559,7 @@ /area/engine/break_room) "bln" = ( /obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/break_room) "blo" = ( @@ -29573,10 +29578,6 @@ }, /turf/open/floor/plasteel, /area/engine/break_room) -"blq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/engine/break_room) "blr" = ( /obj/machinery/light{ dir = 4 @@ -30294,6 +30295,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/engine/break_room) "bna" = ( @@ -30312,7 +30316,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/break_room) "bnc" = ( @@ -30322,6 +30325,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/break_room) "bnd" = ( @@ -31326,28 +31330,24 @@ }, /area/hallway/primary/starboard) "bpg" = ( -/obj/machinery/vending/cigarette, +/obj/structure/table/reinforced, +/obj/machinery/microwave{ + pixel_y = 6 + }, /turf/open/floor/plasteel, /area/engine/break_room) "bph" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/engine/break_room) +/area/engine/storage_shared) "bpi" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 }, /turf/closed/wall, -/area/engine/break_room) -"bpj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bpk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/yellow{ @@ -32557,7 +32557,7 @@ "brE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "brI" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -34204,7 +34204,7 @@ /obj/structure/closet/secure_closet/engineering_electrical, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bvf" = ( /obj/item/radio/intercom{ broadcasting = 0; @@ -34253,7 +34253,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bvh" = ( /obj/machinery/computer/rdconsole/production{ dir = 1 @@ -34262,14 +34262,14 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bvi" = ( /obj/machinery/rnd/production/protolathe/department/engineering, /obj/effect/turf_decal/bot{ dir = 1 }, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "bvk" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; @@ -75896,11 +75896,20 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "gYu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 +/turf/open/floor/plasteel/caution/corner{ + dir = 8 }, +/area/engine/storage_shared) +"hfn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/vending/cigarette, /turf/open/floor/plasteel, /area/engine/break_room) +"hkq" = ( +/turf/open/floor/plasteel/caution/corner, +/area/engine/storage_shared) "hvt" = ( /obj/structure/kitchenspike_frame, /obj/effect/decal/cleanable/blood/gibs/old, @@ -75963,8 +75972,9 @@ /obj/effect/turf_decal/bot{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "iLj" = ( /obj/structure/table, /turf/open/floor/plating, @@ -75976,11 +75986,6 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"jnH" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/engine/break_room) "jrE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -76192,6 +76197,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"msD" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/storage_shared) "mvj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -76212,8 +76221,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/turf/open/floor/plasteel/caution/corner, +/area/engine/storage_shared) "mWg" = ( /obj/structure/girder, /obj/structure/grille, @@ -76336,20 +76345,22 @@ /area/hydroponics) "owR" = ( /turf/closed/wall, -/area/engine/break_room) +/area/engine/storage_shared) "oJW" = ( /obj/structure/sign/poster/random{ pixel_y = 32 }, /obj/machinery/camera{ - c_tag = "Engineering - Foyer - Storage"; + c_tag = "Engineering - Foyer - Shared Storage"; dir = 8 }, /obj/machinery/light/small{ dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/break_room) +/turf/open/floor/plasteel/caution/corner{ + dir = 8 + }, +/area/engine/storage_shared) "oLW" = ( /obj/structure/table/reinforced, /obj/structure/cable/yellow{ @@ -76476,7 +76487,7 @@ "qdT" = ( /obj/item/twohanded/required/kirbyplants/random, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "qhe" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -76549,6 +76560,15 @@ dir = 1 }, /area/science/lab) +"rCu" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/break_room) "rQK" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -76568,13 +76588,21 @@ /obj/machinery/vending/snack/random, /turf/open/floor/plasteel, /area/science/mixing) +"rWg" = ( +/obj/item/twohanded/required/kirbyplants/random, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "sao" = ( /obj/machinery/vending/tool, /obj/effect/turf_decal/bot{ dir = 1 }, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "sdi" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -76683,20 +76711,27 @@ "urv" = ( /turf/closed/wall/mineral/plastitanium, /area/security/prison) +"usN" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/caution/corner, +/area/engine/storage_shared) "uun" = ( /obj/machinery/vending/assist, /turf/open/floor/plasteel, /area/science/mixing) "uEH" = ( /obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Storage"; + name = "Shared Engineering Storage"; req_one_access_txt = "32;19" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, /turf/open/floor/plating, -/area/engine/break_room) +/area/engine/storage_shared) "uGW" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -76779,7 +76814,7 @@ /obj/structure/closet/secure_closet/engineering_welding, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/engine/break_room) +/area/engine/storage_shared) "vLD" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -76838,6 +76873,13 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"wPB" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/storage_shared) "wRy" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -116892,8 +116934,8 @@ bhU bjF blk bmZ -bpg -bie +hfn +wPB bep vzO bxd @@ -117150,8 +117192,8 @@ bjG bll bna kCw -bie -bjL +msD +hkq bve bxd byS @@ -117403,11 +117445,11 @@ aWw aWw aWw bhW -hKs -blq +rCu +bjL bnb -jnH -jnH +owR +owR gYu qdT bxd @@ -117660,12 +117702,12 @@ dgz aBI byK bhX -bjG +hKs bln bnc bph iHl -bln +usN bvg bxd byU @@ -117922,7 +117964,7 @@ ecs rxn bpi sao -bjL +gYu bvh bxd byV @@ -118437,7 +118479,7 @@ bne owR owR oJW -qdT +rWg bxc byW bAG @@ -118691,7 +118733,7 @@ bib bjJ blp bnf -bpj +bpg owR owR owR diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 61bb49af24..4eefe7c762 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -39318,8 +39318,7 @@ desc = "A remote control-switch for secure storage."; id = "ce_privacy"; name = "Privacy Shutters"; - pixel_x = 24; - req_access_txt = "11" + pixel_x = 24 }, /turf/open/floor/plasteel/yellow/side{ dir = 6 diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 558c197858..0531caa9f1 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -589,6 +589,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Engineering Storage" icon_state = "engi_storage" +/area/engine/storage_shared + name = "Shared Engineering Storage" + icon_state = "engi_storage" + /area/engine/transit_tube name = "Transit Tube" icon_state = "transit_tube" From 1737aab9083c72a970a38b95255dca0124836c74 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sat, 21 Jul 2018 12:23:17 -0700 Subject: [PATCH 034/403] Automatic changelog generation for PR #39193 [ci skip] --- html/changelogs/AutoChangeLog-pr-39193.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39193.yml diff --git a/html/changelogs/AutoChangeLog-pr-39193.yml b/html/changelogs/AutoChangeLog-pr-39193.yml new file mode 100644 index 0000000000..e226d2d53a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39193.yml @@ -0,0 +1,7 @@ +author: "Denton" +delete-after: True +changes: + - rscadd: "Shared engineering storage rooms have been added to Deltastation." + - bugfix: "Fixed access requirements of lockdown buttons in the CE office. On some maps, these were set to the wrong department." + - bugfix: "Fixed Box and Metastation's CE locker having no access requirements." + - bugfix: "Deltastation: Fixed engineers having access to atmospheric technicians' storage room. Fixed engineers having no access to port bow solars (the ones at the incinerator by Atmospherics). Also fixed Minisat airlock access requirements." From 721273c884292241f94070a065a524becc36c4b5 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Sat, 21 Jul 2018 21:24:00 +0200 Subject: [PATCH 035/403] Pubby: Replaces medical/cargo protolathes with techfabs (#39243) --- _maps/map_files/PubbyStation/PubbyStation.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 4eefe7c762..cc5482399f 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -31727,7 +31727,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/machinery/rnd/production/protolathe/department/medical, +/obj/machinery/rnd/production/techfab/department/medical, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -47178,7 +47178,7 @@ /turf/open/floor/plasteel/dark, /area/security/main) "cCT" = ( -/obj/machinery/rnd/production/protolathe/department/cargo, +/obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/storage) "cCU" = ( From 7f0d6a70096fc1ee94bf692c4b0a39b2bbee4808 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sat, 21 Jul 2018 12:24:03 -0700 Subject: [PATCH 036/403] Automatic changelog generation for PR #39243 [ci skip] --- html/changelogs/AutoChangeLog-pr-39243.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39243.yml diff --git a/html/changelogs/AutoChangeLog-pr-39243.yml b/html/changelogs/AutoChangeLog-pr-39243.yml new file mode 100644 index 0000000000..039ff98034 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39243.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "Pubbystation: Medbay and Cargo now have a techfab instead of protolathe." From b0db3dece0fdb178006746688385f59fcc42cbe0 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 21 Jul 2018 12:37:59 -0700 Subject: [PATCH 037/403] Fixes performance issues --- code/game/objects/effects/portals.dm | 8 +++++++- .../projectiles/projectile_effects.dm | 6 +++++- .../effects/temporary_visuals/projectiles/tracer.dm | 12 ++++++++---- code/modules/projectiles/projectile.dm | 3 ++- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index e3a5c85719..dbcb8c987c 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -27,6 +27,7 @@ var/turf/open/atmos_destination //Atmos link destination var/allow_anchored = FALSE var/innate_accuracy_penalty = 0 + var/last_effect = 0 /obj/effect/portal/anom name = "wormhole" @@ -154,7 +155,12 @@ return if(ismegafauna(M)) message_admins("[M] has used a portal at [ADMIN_VERBOSEJMP(src)] made by [usr].") - if(do_teleport(M, real_target, innate_accuracy_penalty)) + var/no_effect = FALSE + if(last_effect == world.time) + no_effect = TRUE + else + last_effect = world.time + if(do_teleport(M, real_target, innate_accuracy_penalty, no_effects = no_effect)) if(istype(M, /obj/item/projectile)) var/obj/item/projectile/P = M P.ignore_source_check = TRUE diff --git a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm index acb41c9a35..103cee137d 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm @@ -51,6 +51,10 @@ pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1) pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1) -/obj/effect/projectile_lighting/Initialize(mapload, color, range, intensity) +/obj/effect/projectile_lighting + var/owner + +/obj/effect/projectile_lighting/Initialize(mapload, color, range, intensity, owner_key) . = ..() set_light(range, intensity, color) + owner = owner_key diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 44ec6839d6..767e8c141a 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -1,4 +1,4 @@ -/proc/generate_tracer_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5, light_range = 2, light_color_override, light_intensity = 1) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! +/proc/generate_tracer_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5, light_range = 2, light_color_override, light_intensity = 1, instance_key) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! if(!istype(starting) || !istype(ending) || !ispath(beam_type)) return var/datum/point/midpoint = point_midpoint_points(starting, ending) @@ -9,9 +9,13 @@ . = PB if(light_range > 0 && light_intensity > 0) var/list/turf/line = getline(starting.return_turf(), ending.return_turf()) - for(var/i in line) - var/turf/T = i - QDEL_IN(new /obj/effect/projectile_lighting(T, light_color_override, light_range, light_intensity), qdel_in > 0? qdel_in : 5) + tracing_line: + for(var/i in line) + var/turf/T = i + for(var/obj/effect/projectile_lighting/PL in T) + if(PL.owner == instance_key) + continue tracing_line + QDEL_IN(new /obj/effect/projectile_lighting(T, light_color_override, light_range, light_intensity, instance_key), qdel_in > 0? qdel_in : 5) line = null if(qdel_in) QDEL_IN(PB, qdel_in) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 6bb475e617..44fca82f76 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -590,8 +590,9 @@ if(!length(beam_segments)) return if(tracer_type) + var/tempref = REF(src) for(var/datum/point/p in beam_segments) - generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity) + generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity, tempref) if(muzzle_type && duration > 0) var/datum/point/p = beam_segments[1] var/atom/movable/thing = new muzzle_type From 6945432198adf1086aee5248b6f51806b26ee50e Mon Sep 17 00:00:00 2001 From: McBawbaggings Date: Sat, 21 Jul 2018 22:29:42 +0100 Subject: [PATCH 038/403] qdels rogue query (#39246) AnturK asked me to fix this as i asked some questions about it while doing my own stuff --- code/modules/admin/banjob.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index fbb97fcea7..20a7228fb5 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -30,6 +30,7 @@ C.jobbancache = list() var/datum/DBQuery/query_jobban_build_cache = SSdbcore.NewQuery("SELECT job, reason FROM [format_table_name("ban")] WHERE ckey = '[sanitizeSQL(C.ckey)]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)") if(!query_jobban_build_cache.warn_execute()) + qdel(query_jobban_build_cache) return while(query_jobban_build_cache.NextRow()) C.jobbancache[query_jobban_build_cache.item[1]] = query_jobban_build_cache.item[2] From 377f44051165055aa188adf379d129a44b000df5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 21 Jul 2018 14:30:29 -0700 Subject: [PATCH 039/403] Fixes VV on movables not being able to move things into nullspace (#39245) forcemove was refactored and no longer will let you pass in null. --- code/game/atoms_movable.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 3064be9119..f186d1d0cb 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -58,9 +58,12 @@ return TRUE return FALSE if("loc") - if(var_value == null || istype(var_value, /atom)) + if(istype(var_value, /atom)) forceMove(var_value) return TRUE + else if(isnull(var_value)) + moveToNullspace() + return TRUE return FALSE return ..() From dd7542983637a0a3578bd3139796d38c5a068055 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sat, 21 Jul 2018 23:31:07 +0200 Subject: [PATCH 040/403] Fixes alien drool properly (#39241) My bad, forgot to move that one. --- code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index a1c4f7ee35..631a640d58 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -241,11 +241,11 @@ Doesn't work on other aliens/AI.*/ A.update_icons() /obj/effect/proc_holder/alien/neurotoxin/remove_ranged_ability(msg) - ..() if(isalienadult(ranged_ability_user)) var/mob/living/carbon/alien/humanoid/A = ranged_ability_user A.drooling = 0 A.update_icons() + ..() /obj/effect/proc_holder/alien/resin name = "Secrete Resin" From 17079fb4986d792dc9d71d3602c63a5bbdab0662 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Sat, 21 Jul 2018 23:37:40 +0200 Subject: [PATCH 041/403] Fixes 'debug' outfit (#39256) In #39131 I forgot giving the "debug" outfit a gas mask and shoes; this adds a welding gas mask and adv magboots to it. --- code/modules/clothing/outfits/standard.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 1f7ac9fb20..325c124867 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -428,11 +428,13 @@ name = "Debug outfit" uniform = /obj/item/clothing/under/patriotsuit suit = /obj/item/clothing/suit/space/hardsuit/syndi/elite + shoes = /obj/item/clothing/shoes/magboots/advance suit_store = /obj/item/tank/internals/oxygen + mask = /obj/item/clothing/mask/gas/welding belt = /obj/item/storage/belt/utility/chief/full gloves = /obj/item/clothing/gloves/combat id = /obj/item/card/id/ert glasses = /obj/item/clothing/glasses/meson/night ears = /obj/item/radio/headset/headset_cent/commander back = /obj/item/storage/backpack/holding - backpack_contents = list(/obj/item/card/emag=1, /obj/item/flashlight/emp/debug=1, /obj/item/construction/rcd/combat =1, /obj/item/gun/magic/wand/resurrection/debug=1, /obj/item/melee/transforming/energy/axe=1) + backpack_contents = list(/obj/item/card/emag=1, /obj/item/flashlight/emp/debug=1, /obj/item/construction/rcd/combat=1, /obj/item/gun/magic/wand/resurrection/debug=1, /obj/item/melee/transforming/energy/axe=1) From bab88b377f58e0466fff9efd8cbb75c684946c7b Mon Sep 17 00:00:00 2001 From: AnturK Date: Sat, 21 Jul 2018 23:38:13 +0200 Subject: [PATCH 042/403] Fixes malpractice (#39244) Slime surgery too --- code/modules/mob/living/carbon/carbon.dm | 4 ++-- code/modules/mob/living/simple_animal/slime/slime.dm | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ffad7bb78c..c47f6ef568 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -84,9 +84,9 @@ /mob/living/carbon/attackby(obj/item/I, mob/user, params) if(lying && surgeries.len) - if(user != src && user.a_intent == INTENT_HELP) + if(user != src && (user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM)) for(var/datum/surgery/S in surgeries) - if(S.next_step(user)) + if(S.next_step(user,user.a_intent)) return 1 return ..() diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index ea2b9890f6..134a7bde44 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -306,9 +306,9 @@ discipline_slime(M) else if(stat == DEAD && surgeries.len) - if(M.a_intent == INTENT_HELP) + if(M.a_intent == INTENT_HELP || M.a_intent == INTENT_DISARM) for(var/datum/surgery/S in surgeries) - if(S.next_step(M)) + if(S.next_step(M,M.a_intent)) return 1 if(..()) //successful attack attacked += 10 @@ -321,9 +321,9 @@ /mob/living/simple_animal/slime/attackby(obj/item/W, mob/living/user, params) if(stat == DEAD && surgeries.len) - if(user.a_intent == INTENT_HELP) + if(user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM) for(var/datum/surgery/S in surgeries) - if(S.next_step(user)) + if(S.next_step(user,user.a_intent)) return 1 if(istype(W, /obj/item/stack/sheet/mineral/plasma) && !stat) //Let's you feed slimes plasma. if (user in Friends) From 3c4e898d381f89e4650e63d224560850fd00ed06 Mon Sep 17 00:00:00 2001 From: Cruix Date: Sat, 21 Jul 2018 14:51:13 -0700 Subject: [PATCH 043/403] Fixed jumping to faraway cameras as the AI clearing static from your screen until you move again (#39230) Static was being cleared on camera jump but not re-added until you moved the eye again. --- code/modules/mob/living/silicon/ai/freelook/cameranet.dm | 2 +- code/modules/mob/living/silicon/ai/freelook/chunk.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index 8d5590def6..3fd4a7ad7f 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -91,7 +91,7 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) for(var/chunk in remove) var/datum/camerachunk/c = chunk - c.remove(eye) + c.remove(eye, FALSE) for(var/chunk in add) var/datum/camerachunk/c = chunk diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index d83292f767..c2794394ed 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -26,10 +26,10 @@ // Remove an AI eye from the chunk, then update if changed. -/datum/camerachunk/proc/remove(mob/camera/aiEye/eye) +/datum/camerachunk/proc/remove(mob/camera/aiEye/eye, remove_static_with_last_chunk = TRUE) eye.visibleCameraChunks -= src seenby -= eye - if(!eye.visibleCameraChunks.len) + if(remove_static_with_last_chunk && !eye.visibleCameraChunks.len) var/client/client = eye.GetViewerClient() if(client) switch(eye.use_static) From eccc11b83ccbba8fcd81c12d99fcda8278675ba7 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sat, 21 Jul 2018 14:51:16 -0700 Subject: [PATCH 044/403] Automatic changelog generation for PR #39230 [ci skip] --- html/changelogs/AutoChangeLog-pr-39230.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39230.yml diff --git a/html/changelogs/AutoChangeLog-pr-39230.yml b/html/changelogs/AutoChangeLog-pr-39230.yml new file mode 100644 index 0000000000..0736735d2e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39230.yml @@ -0,0 +1,4 @@ +author: "Cruix" +delete-after: True +changes: + - bugfix: "AI eyes will now see static immediately after jumping between cameras." From d867633d07d5f721e885f4f1a810fb318536793f Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Sat, 21 Jul 2018 17:07:05 -0700 Subject: [PATCH 045/403] Fix Modify Armor Values in VV menu (#39247) --- code/datums/datumvars.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 086d8a0968..a5becd3614 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -814,7 +814,7 @@ for (var/i in armorlist) pickerlist += list(list("value" = armorlist[i], "name" = i)) - var/list/result = presentpicker(usr, "Modify armor", "Modify armor: [O]", Button1="Save", Button2 = "Cancel", Timeout=FALSE, Type = "text", values = pickerlist) + var/list/result = presentpicker(usr, "Modify armor", "Modify armor: [O]", Button1="Save", Button2 = "Cancel", Timeout=FALSE, inputtype = "text", values = pickerlist) if (islist(result)) if (result["button"] == 2) // If the user pressed the cancel button From 31e791d07b917ac83d3f2d250e1f23b4cf224a2e Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Sat, 21 Jul 2018 17:08:09 -0700 Subject: [PATCH 046/403] Fix git not ignoring _maps/backup folders (#39250) --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f4f4d8ff21..bafbee69d8 100644 --- a/.gitignore +++ b/.gitignore @@ -201,5 +201,5 @@ tools/MapAtmosFixer/MapAtmosFixer/bin/* .atom-build.json #extra map stuff -_maps/backup/ -_maps/templates.dm +/_maps/**/backup/ +/_maps/templates.dm From 43e4742e2cae629b34366038a83c2d753b57faa2 Mon Sep 17 00:00:00 2001 From: BeeSting12 Date: Sat, 21 Jul 2018 20:30:23 -0400 Subject: [PATCH 047/403] Removes the omni circuit printer from robotics on delta, meta, and box. [Ready for review] (#39235) * science will hate me * gottem * Fixes both maps * resolves conflicts(?) * last commit * pubby * Undo spurious Box changes --- _maps/map_files/BoxStation/BoxStation.dmm | 2 +- _maps/map_files/Deltastation/DeltaStation2.dmm | 2 +- _maps/map_files/MetaStation/MetaStation.dmm | 2 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 904c495839..ec53289ffe 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -22862,7 +22862,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/rnd/production/circuit_imprinter, +/obj/machinery/rnd/production/circuit_imprinter/department/science, /turf/open/floor/plasteel/white, /area/science/robotics/lab) "bhy" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 7f4dddf589..45625e7756 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -87447,13 +87447,13 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "dGe" = ( -/obj/machinery/rnd/production/circuit_imprinter, /obj/item/reagent_containers/glass/beaker/sulphuric, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 }, /obj/effect/turf_decal/bot, +/obj/machinery/rnd/production/circuit_imprinter/department/science, /turf/open/floor/plasteel, /area/science/robotics/lab) "dGf" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 1714ee6d2a..2cd397a348 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -64471,8 +64471,8 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/rnd/production/circuit_imprinter, /obj/effect/turf_decal/bot, +/obj/machinery/rnd/production/circuit_imprinter/department/science, /turf/open/floor/plasteel, /area/science/robotics/lab) "cGW" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index cc5482399f..3810fa1563 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -24909,7 +24909,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "bnO" = ( -/obj/machinery/rnd/production/circuit_imprinter, /obj/machinery/light{ dir = 8 }, @@ -24917,6 +24916,7 @@ dir = 4; pixel_x = -28 }, +/obj/machinery/rnd/production/circuit_imprinter/department/science, /turf/open/floor/plasteel/vault{ dir = 8 }, From 467a546c3e52b2b3c2bde4fe3a61985a7e7d56b2 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sat, 21 Jul 2018 17:30:26 -0700 Subject: [PATCH 048/403] Automatic changelog generation for PR #39235 [ci skip] --- html/changelogs/AutoChangeLog-pr-39235.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39235.yml diff --git a/html/changelogs/AutoChangeLog-pr-39235.yml b/html/changelogs/AutoChangeLog-pr-39235.yml new file mode 100644 index 0000000000..cfd7af1953 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39235.yml @@ -0,0 +1,4 @@ +author: "BeeSting12" +delete-after: True +changes: + - bugfix: "Robotics' circuit printers have been changed to science departmental circuit printers to allow science to do their job more efficiently." From 96409b4f873d80b55e3ba4659999b3a7f720ffc2 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 21 Jul 2018 17:36:54 -0700 Subject: [PATCH 049/403] [s] fixes comms console href exploit canUseTopic was never checked for some things. thanks to LetterN --- code/game/machinery/computer/communications.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 5e5c08ee99..66b2031ffb 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -52,6 +52,8 @@ /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return + if(!usr.canUseTopic(src)) + return if(!is_station_level(z) && !is_reserved_level(z)) //Can only use in transit and on SS13 to_chat(usr, "Unable to establish a connection: \black You're too far away from the station!") return From 53c2ab49b2183dd9a0f3820193e8a7cdd6cacde7 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 21 Jul 2018 17:55:38 -0700 Subject: [PATCH 050/403] Flash confusion stacking clamped to 2x of power (#39188) so 10 seconds in most cases unless admins custom proccall'd or something --- code/modules/assembly/flash.dm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index b5a7c5d3c5..b89a3f876d 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -1,3 +1,4 @@ +#define CONFUSION_STACK_MAX_MULTIPLIER 2 /obj/item/assembly/flash name = "flash" desc = "A powerful and versatile flashbulb device, with applications ranging from disorienting attackers to acting as visual receptors in robot production." @@ -108,7 +109,9 @@ to_chat(M, "[src] emits a blinding light!") if(targeted) if(M.flash_act(1, 1)) - M.confused += power + if(M.confused < power) + var/diff = power * CONFUSION_STACK_MAX_MULTIPLIER - M.confused + M.confused += min(power, diff) if(user) terrible_conversion_proc(M, user) visible_message("[user] blinds [M] with the flash!") @@ -125,7 +128,8 @@ to_chat(M, "[src] fails to blind you!") else if(M.flash_act()) - M.confused += power + var/diff = power * CONFUSION_STACK_MAX_MULTIPLIER - M.confused + M.confused += min(power, diff) /obj/item/assembly/flash/attack(mob/living/M, mob/user) if(!try_use_flash(user)) @@ -137,8 +141,9 @@ var/mob/living/silicon/robot/R = M add_logs(user, R, "flashed", src) update_icon(1) - M.Knockdown(rand(80,120)) - R.confused += 5 + R.Knockdown(rand(80,120)) + var/diff = 5 * CONFUSION_STACK_MAX_MULTIPLIER - M.confused + R.confused += min(5, diff) R.flash_act(affect_silicon = 1) user.visible_message("[user] overloads [R]'s sensors with the flash!", "You overload [R]'s sensors with the flash!") return TRUE From 5aa6922c59acce4084979fd3b1a206475725ed0d Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sat, 21 Jul 2018 23:39:11 -0700 Subject: [PATCH 051/403] Fixes the pickup animation. (#39261) I'm not certain if it was the static, the mutable appearance, or the JJR PR that broke it, but I'm going to assume all of the above. --- code/game/atoms_movable.dm | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index f186d1d0cb..253f752353 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -779,37 +779,36 @@ return TRUE -/obj/item/proc/do_pickup_animation(atom/target) +/obj/item/proc/do_pickup_animation(turf/target) set waitfor = FALSE - var/mutable_appearance/I = new(icon = src, loc = loc, layer = layer + 0.1) + var/image/I = image(icon = src, loc = loc, layer = layer + 0.1) I.plane = GAME_PLANE I.transform *= 0.75 I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA - var/turf/T = get_turf(src) - var/direction + var/direction = get_dir(src, target) var/to_x = 0 var/to_y = 0 - - flick_overlay(I, GLOB.clients, 6) - var/static/matrix/M = new - M.Turn(pick(-30, 30)) - - animate(I, transform = M, time = 1) - sleep(1) - animate(I, transform = matrix(), time = 1) - sleep(1) - if(!QDELETED(T) && !QDELETED(target)) - direction = get_dir(T, target) if(direction & NORTH) to_y = 32 else if(direction & SOUTH) to_y = -32 + if(direction & EAST) to_x = 32 else if(direction & WEST) to_x = -32 + if(!direction) to_y = 16 + + flick_overlay(I, GLOB.clients, 6) + var/matrix/M = new + M.Turn(pick(-30, 30)) + + animate(I, transform = M, time = 1) + sleep(1) + animate(I, transform = matrix(), time = 1) + sleep(1) animate(I, alpha = 175, pixel_x = to_x, pixel_y = to_y, time = 3, easing = CUBIC_EASING) sleep(1) animate(I, alpha = 0, time = 1) From 7af93823ec1c0fce00cebb3aec82c3bfbf1e2391 Mon Sep 17 00:00:00 2001 From: obscolene Date: Sun, 22 Jul 2018 00:47:13 -0700 Subject: [PATCH 052/403] Curator's whip now makes a whip crack sound effect (#39240) A leather whip makes a cracking sound, not a metal chain sound --- code/game/objects/items/melee/misc.dm | 4 ++-- sound/weapons/whip.ogg | Bin 0 -> 14276 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 sound/weapons/whip.ogg diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index d0f83d9253..19814af792 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -112,7 +112,7 @@ limbs_to_dismember = arms + legs if(holding_bodypart) limbs_to_dismember += holding_bodypart - + var/speedbase = abs((4 SECONDS) / limbs_to_dismember.len) for(bodypart in limbs_to_dismember) i++ @@ -352,7 +352,7 @@ force = 15 w_class = WEIGHT_CLASS_NORMAL attack_verb = list("flogged", "whipped", "lashed", "disciplined") - hitsound = 'sound/weapons/chainhit.ogg' + hitsound = 'sound/weapons/whip.ogg' /obj/item/melee/curator_whip/afterattack(target, mob/user, proximity_flag) . = ..() diff --git a/sound/weapons/whip.ogg b/sound/weapons/whip.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9bc0d456104729a3b13ef00f512b5242707232cc GIT binary patch literal 14276 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 PHtZmu-2zdE5DoiZ44G3> literal 0 HcmV?d00001 From 858b072754ffa0f9a8e0c0b3bb67d835c14c3735 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 00:47:15 -0700 Subject: [PATCH 053/403] Automatic changelog generation for PR #39240 [ci skip] --- html/changelogs/AutoChangeLog-pr-39240.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39240.yml diff --git a/html/changelogs/AutoChangeLog-pr-39240.yml b/html/changelogs/AutoChangeLog-pr-39240.yml new file mode 100644 index 0000000000..cbf886611f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39240.yml @@ -0,0 +1,4 @@ +author: "obscolene" +delete-after: True +changes: + - soundadd: "Curator's whip actually makes a whip sound now" From 5e448bb57c1a1a4a04b63ed89b26bcb9a0f18b09 Mon Sep 17 00:00:00 2001 From: Mickyan <38563876+Mickyan@users.noreply.github.com> Date: Sun, 22 Jul 2018 17:03:44 +0200 Subject: [PATCH 054/403] replaced blood with dried blood (#39263) --- _maps/map_files/Deltastation/DeltaStation2.dmm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 45625e7756..31e08cb074 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -68004,10 +68004,10 @@ /area/maintenance/port) "cQd" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/splatter, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plasteel, /area/maintenance/port) "cQe" = ( @@ -93381,7 +93381,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plasteel/grimy, /area/library/abandoned) "dSu" = ( @@ -94573,7 +94573,7 @@ /turf/open/floor/plating, /area/library/abandoned) "dVJ" = ( -/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/wood{ icon_state = "wood-broken6" }, @@ -97771,10 +97771,10 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "edj" = ( -/obj/effect/decal/cleanable/blood/splatter, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plasteel, /area/maintenance/port/aft) "edk" = ( From 657f5acfb9322eebc35705135cc03d88d95d94e6 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 08:03:46 -0700 Subject: [PATCH 055/403] Automatic changelog generation for PR #39263 [ci skip] --- html/changelogs/AutoChangeLog-pr-39263.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39263.yml diff --git a/html/changelogs/AutoChangeLog-pr-39263.yml b/html/changelogs/AutoChangeLog-pr-39263.yml new file mode 100644 index 0000000000..85f85f3886 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39263.yml @@ -0,0 +1,4 @@ +author: "Mickyan" +delete-after: True +changes: + - bugfix: "Deltastation: replaced blood decals in maintenance with their dried counterparts" From 1d48674ba106341d68e44f70e6aba5ec0aefdd15 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Sun, 22 Jul 2018 17:04:03 +0200 Subject: [PATCH 056/403] Improves Oldstation/Charlie Station (#39248) * Improves Oldstation/Charlie Station * Actually adds titanium * Removes dvars --- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 769 +++++++++++++----- code/game/objects/items/cards_ids.dm | 26 +- .../objects/structures/ghost_role_spawners.dm | 9 +- .../reagents/reagent_containers/bottle.dm | 102 +++ .../reagents/reagent_containers/glass.dm | 100 --- .../ruins/spaceruin_code/oldstation.dm | 4 + 6 files changed, 681 insertions(+), 329 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 612d6d8f14..79611ff7d7 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -14,11 +14,16 @@ /area/ruin/space/has_grav/ancientstation/hivebot) "ae" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel/twenty, /obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, +/obj/item/stack/sheet/plasteel{ + amount = 30 + }, +/obj/item/stack/sheet/mineral/titanium{ + amount = 30 + }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/ancientstation/hivebot) "af" = ( @@ -38,10 +43,10 @@ "aj" = ( /obj/structure/closet/crate, /obj/item/stack/sheet/mineral/silver{ - amount = 15 + amount = 25 }, /obj/item/stack/sheet/mineral/gold{ - amount = 15 + amount = 25 }, /obj/item/stack/ore/bluespace_crystal, /obj/item/stack/ore/bluespace_crystal, @@ -251,11 +256,11 @@ /area/ruin/space/has_grav/ancientstation/comm) "aS" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, /obj/item/solar_assembly, /obj/item/solar_assembly, /obj/item/solar_assembly, /obj/item/solar_assembly, +/obj/structure/closet/crate/engineering/electrical, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) "aT" = ( @@ -326,9 +331,7 @@ /area/ruin/space/has_grav/ancientstation/comm) "bc" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/item/storage/backpack/old, -/turf/open/floor/plating, +/turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation) "bd" = ( /obj/structure/transit_tube{ @@ -353,11 +356,11 @@ /area/ruin/unpowered) "bi" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, /obj/item/electronics/airlock, /obj/item/electronics/airlock, /obj/item/electronics/apc, /obj/item/electronics/apc, +/obj/structure/closet/crate/engineering/electrical, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) "bj" = ( @@ -365,6 +368,10 @@ /obj/structure/chair{ dir = 1 }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plasteel/blue/side{ dir = 10 }, @@ -406,10 +413,10 @@ "bp" = ( /obj/structure/closet/crate, /obj/item/stack/sheet/mineral/plasma{ - amount = 15 + amount = 25 }, /obj/item/stack/sheet/mineral/uranium{ - amount = 10 + amount = 25 }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/ancientstation/hivebot) @@ -521,11 +528,11 @@ /area/ruin/space/has_grav/ancientstation) "bM" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, /obj/item/solar_assembly, /obj/item/solar_assembly, /obj/item/solar_assembly, /obj/item/solar_assembly, +/obj/structure/closet/crate/engineering/electrical, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "bN" = ( @@ -632,12 +639,12 @@ /area/ruin/space/has_grav/ancientstation/betanorth) "cf" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/transit_tube/station/reverse/flipped{ - dir = 1 - }, /obj/structure/transit_tube_pod{ dir = 4 }, +/obj/structure/transit_tube/station/reverse{ + dir = 1 + }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/betanorth) "cg" = ( @@ -856,13 +863,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/deltacorridor) -"cJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/ancientstation/deltacorridor) "cK" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end{ dir = 4 @@ -1074,6 +1074,10 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plasteel/green/side{ dir = 9 }, @@ -1095,6 +1099,7 @@ tank_volume = 1000 }, /obj/item/reagent_containers/glass/bucket, +/obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/hydroponics) "dr" = ( @@ -1162,6 +1167,7 @@ name = "Research and Development" }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/rnd) "dA" = ( @@ -1169,6 +1175,7 @@ /obj/machinery/door/airlock/research{ name = "Research and Development" }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/rnd) "dB" = ( @@ -1205,12 +1212,12 @@ /area/template_noop) "dK" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "2-4" }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, /turf/template_noop, /area/template_noop) "dL" = ( @@ -1336,7 +1343,9 @@ "ec" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/hostile/hivebot/strong, -/turf/open/floor/plasteel/white/corner, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 9 + }, /area/ruin/space/has_grav/ancientstation/rnd) "ed" = ( /obj/effect/decal/cleanable/dirt, @@ -1364,7 +1373,7 @@ /area/ruin/space/has_grav/ancientstation/betanorth) "ei" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, /turf/template_noop, @@ -1422,6 +1431,7 @@ }, /obj/item/cultivator, /obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/item/shovel/spade, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/hydroponics) "eq" = ( @@ -1542,7 +1552,7 @@ /turf/open/floor/plating/airless, /area/template_noop) "eJ" = ( -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "0-8" }, /turf/open/floor/plating/airless, @@ -1693,10 +1703,10 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "fe" = ( @@ -1776,6 +1786,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) +"fo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 5 + }, +/area/ruin/space/has_grav/ancientstation/rnd) "fp" = ( /obj/structure/sign/poster/official/here_for_your_safety, /turf/closed/wall/rust, @@ -1888,6 +1904,7 @@ /obj/machinery/door/poddoor{ id = "ancient" }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/powered) "fH" = ( @@ -1987,8 +2004,9 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/plasteel/white/corner{ - dir = 4 +/turf/open/floor/plasteel/whitepurple/side{ + icon_state = "whitepurple"; + dir = 10 }, /area/ruin/space/has_grav/ancientstation/rnd) "fU" = ( @@ -2008,8 +2026,8 @@ /obj/machinery/light{ dir = 4 }, -/turf/open/floor/plasteel/white/corner{ - dir = 1 +/turf/open/floor/plasteel/whitepurple/side{ + dir = 6 }, /area/ruin/space/has_grav/ancientstation/rnd) "fX" = ( @@ -2054,53 +2072,40 @@ /area/template_noop) "gc" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "2-4" }, /turf/template_noop, /area/template_noop) "gd" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/template_noop, /area/template_noop) "ge" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/template_noop, -/area/template_noop) -"gf" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-4" }, /turf/template_noop, /area/template_noop) @@ -2110,53 +2115,50 @@ req_access_txt = "200" }, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "gh" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "gi" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "2-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "gj" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "gk" = ( @@ -2167,9 +2169,6 @@ icon_state = "1-4" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/engi) "gl" = ( @@ -2177,9 +2176,6 @@ /obj/item/stack/cable_coil{ amount = 2 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "gm" = ( @@ -2576,7 +2572,7 @@ /area/ruin/space/has_grav/ancientstation/engi) "gW" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, /turf/open/floor/plasteel/floorgrime, @@ -2667,7 +2663,7 @@ /area/ruin/space/has_grav/ancientstation/engi) "hl" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, /turf/open/floor/plasteel/yellow/corner{ @@ -2679,8 +2675,8 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "hn" = ( @@ -2778,6 +2774,10 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -2806,10 +2806,10 @@ /area/ruin/space/has_grav/ancientstation/rnd) "hF" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/aluminium{ +/obj/item/reagent_containers/glass/bottle/aluminium{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/bromine{ +/obj/item/reagent_containers/glass/bottle/bromine{ pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, @@ -2819,10 +2819,10 @@ /area/ruin/space/has_grav/ancientstation/rnd) "hG" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/carbon{ +/obj/item/reagent_containers/glass/bottle/carbon{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/chlorine{ +/obj/item/reagent_containers/glass/bottle/chlorine{ pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, @@ -2832,10 +2832,10 @@ /area/ruin/space/has_grav/ancientstation/rnd) "hH" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/copper{ +/obj/item/reagent_containers/glass/bottle/copper{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/ethanol{ +/obj/item/reagent_containers/glass/bottle/ethanol{ pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, @@ -2868,28 +2868,32 @@ /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/betanorth) "hM" = ( -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "0-4" }, /turf/open/floor/plating/airless, /area/template_noop) "hN" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-8" }, /turf/template_noop, /area/template_noop) "hO" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/light/small{ brightness = 3; dir = 8 }, /obj/effect/decal/cleanable/oil, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plasteel/yellow/side{ dir = 8 }, @@ -2973,13 +2977,13 @@ /area/ruin/space/has_grav/ancientstation/rnd) "hZ" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/fluorine{ +/obj/item/reagent_containers/glass/bottle/fluorine{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/hydrogen{ +/obj/item/reagent_containers/glass/bottle/hydrogen{ pixel_x = -6 }, -/obj/item/reagent_containers/glass/beaker/large/water{ +/obj/item/reagent_containers/glass/bottle/water{ pixel_y = 8 }, /obj/effect/decal/cleanable/dirt, @@ -2989,7 +2993,7 @@ /area/ruin/space/has_grav/ancientstation/rnd) "ib" = ( /obj/structure/lattice/catwalk, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-4" }, /turf/template_noop, @@ -3000,7 +3004,7 @@ name = "Station Solar Control Computer" }, /obj/item/paper/guides/jobs/engi/solars, -/obj/structure/cable, +/obj/structure/cable/yellow, /turf/open/floor/plasteel/yellow/side{ dir = 10 }, @@ -3105,9 +3109,7 @@ /area/ruin/space/has_grav/ancientstation/rnd) "ir" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /turf/open/floor/plasteel/orange/side{ dir = 4 }, @@ -3118,22 +3120,26 @@ req_access_txt = "200" }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/rnd) "it" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/mercury{ +/obj/item/reagent_containers/glass/bottle/mercury{ pixel_x = 6; pixel_y = 8 }, -/obj/item/reagent_containers/glass/beaker/large/nitrogen{ +/obj/item/reagent_containers/glass/bottle/nitrogen{ pixel_x = -6; pixel_y = 8 }, -/obj/item/reagent_containers/glass/beaker/large/oxygen{ +/obj/item/reagent_containers/glass/bottle/oxygen{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/phosphorus{ +/obj/item/reagent_containers/glass/bottle/phosphorus{ pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, @@ -3141,23 +3147,19 @@ /area/ruin/space/has_grav/ancientstation/rnd) "iu" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/iodine{ +/obj/item/reagent_containers/glass/bottle/iodine{ pixel_y = 8 }, -/obj/item/reagent_containers/glass/beaker/large/iron{ +/obj/item/reagent_containers/glass/bottle/iron{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/lithium{ +/obj/item/reagent_containers/glass/bottle/lithium{ pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/airalarm/all_access{ - dir = 8; - pixel_x = 24 - }, /turf/open/floor/plasteel/orange/side{ dir = 4 }, @@ -3262,13 +3264,13 @@ /area/ruin/space/has_grav/ancientstation/rnd) "iG" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/potassium{ +/obj/item/reagent_containers/glass/bottle/potassium{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/radium{ +/obj/item/reagent_containers/glass/bottle/radium{ pixel_x = -6 }, -/obj/item/reagent_containers/glass/beaker/large/welding_fuel{ +/obj/item/reagent_containers/glass/bottle/welding_fuel{ pixel_y = 8 }, /obj/effect/decal/cleanable/dirt, @@ -3285,6 +3287,10 @@ brightness = 3; dir = 8 }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plasteel/cafeteria, /area/ruin/space/has_grav/ancientstation/kitchen) "iI" = ( @@ -3353,10 +3359,10 @@ /area/ruin/space/has_grav/ancientstation/rnd) "iQ" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/sugar{ +/obj/item/reagent_containers/glass/bottle/sugar{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/sulfur{ +/obj/item/reagent_containers/glass/bottle/sulfur{ pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, @@ -3366,10 +3372,10 @@ /area/ruin/space/has_grav/ancientstation/rnd) "iR" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/silver{ +/obj/item/reagent_containers/glass/bottle/silver{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/sodium{ +/obj/item/reagent_containers/glass/bottle/sodium{ pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, @@ -3377,10 +3383,10 @@ /area/ruin/space/has_grav/ancientstation/rnd) "iS" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large/sacid{ +/obj/item/reagent_containers/glass/bottle/sacid{ pixel_x = 6 }, -/obj/item/reagent_containers/glass/beaker/large/silicon{ +/obj/item/reagent_containers/glass/bottle/silicon{ pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, @@ -3389,7 +3395,8 @@ }, /area/ruin/space/has_grav/ancientstation/rnd) "iT" = ( -/obj/structure/closet/crate, +/obj/item/defibrillator, +/obj/structure/closet/crate/medical, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/atmo) "iU" = ( @@ -3398,6 +3405,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "iV" = ( @@ -3451,6 +3461,7 @@ /obj/machinery/door/airlock/research{ name = "Research and Development" }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/rnd) "jd" = ( @@ -3458,6 +3469,7 @@ /obj/machinery/door/airlock/research{ name = "Research and Development" }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/rnd) "je" = ( @@ -3490,6 +3502,11 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/structure/cable/yellow, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "jj" = ( @@ -3500,12 +3517,16 @@ /obj/machinery/door/airlock/engineering{ name = "Backup Generator Room" }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "jl" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) @@ -3541,12 +3562,12 @@ /area/ruin/space/has_grav/ancientstation) "jq" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/transit_tube/station/reverse/flipped{ - dir = 1 - }, /obj/structure/transit_tube_pod{ dir = 4 }, +/obj/structure/transit_tube/station/reverse{ + dir = 1 + }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "jr" = ( @@ -3617,10 +3638,12 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/closet/crate, /obj/item/assembly/flash/handheld, /obj/item/assembly/flash/handheld, /obj/item/storage/box/firingpins, +/obj/structure/closet/crate/secure/weapon{ + req_access_txt = "203" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/deltacorridor) "jB" = ( @@ -3643,8 +3666,8 @@ /obj/item/stack/cable_coil{ amount = 15 }, -/obj/item/paper, /obj/effect/decal/cleanable/dirt, +/obj/item/paper/fluff/ruins/oldstation/generator_manual, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "jE" = ( @@ -3662,6 +3685,7 @@ icon_state = "2-8" }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "jG" = ( @@ -3713,12 +3737,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/deltacorridor) -"jN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/item/disk/tech_disk, -/turf/open/floor/plating, -/area/ruin/space/has_grav/ancientstation/deltacorridor) "jO" = ( /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/atmo) @@ -3734,7 +3752,7 @@ /turf/template_noop, /area/space/nearstation) "jR" = ( -/obj/structure/cable, +/obj/structure/cable/yellow, /turf/open/floor/plating/airless, /area/template_noop) "jS" = ( @@ -3755,6 +3773,7 @@ name = "Cryogenics Room" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "jV" = ( @@ -3793,6 +3812,10 @@ "jZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/meter, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) "ka" = ( @@ -3800,11 +3823,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) -"kb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/turf/open/floor/plating, -/area/ruin/space/has_grav/ancientstation) "kc" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb{ @@ -4000,9 +4018,8 @@ /area/ruin/space/has_grav/ancientstation/atmo) "kC" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/solar_assembly, -/obj/item/stack/sheet/glass{ - amount = 30 +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 1 }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) @@ -4032,6 +4049,7 @@ /obj/structure/closet/crate, /obj/item/reagent_containers/spray/weedspray, /obj/item/reagent_containers/spray/pestspray, +/obj/item/reagent_containers/spray/cleaner, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) "kH" = ( @@ -4042,6 +4060,7 @@ /obj/item/solar_assembly, /obj/item/solar_assembly, /obj/item/solar_assembly, +/obj/structure/closet/crate/engineering/electrical, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) "kI" = ( @@ -4052,6 +4071,10 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/ancientstation/proto) "kJ" = ( @@ -4160,9 +4183,8 @@ /turf/open/floor/plating/airless, /area/ruin/space/has_grav/ancientstation/atmo) "kW" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Air Outlet Pump" +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8 }, /turf/open/floor/plasteel/airless/floorgrime, /area/ruin/space/has_grav/ancientstation/atmo) @@ -4173,7 +4195,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on{ +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon{ dir = 8; id_tag = "oldstation_air_out"; name = "air output" @@ -4191,6 +4213,7 @@ }, /obj/structure/cable, /obj/item/storage/backpack/old, +/obj/item/storage/backpack/old, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) "kZ" = ( @@ -4305,6 +4328,7 @@ /obj/machinery/door/airlock/science{ name = "Artificial Program Core Room" }, +/obj/machinery/door/firedoor, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hivebot) "lz" = ( @@ -4313,6 +4337,10 @@ "lL" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, /turf/open/floor/plasteel/orange/corner, /area/ruin/space/has_grav/ancientstation/rnd) "lM" = ( @@ -4354,34 +4382,207 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hivebot) +"nM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/orange/side{ + dir = 8 + }, +/area/ruin/space/has_grav/ancientstation/rnd) "oM" = ( /obj/machinery/door/airlock/external{ name = "Engineering External Access"; - req_access = null; req_access_txt = "200" }, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) +"py" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/mob/living/simple_animal/hostile/hivebot, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"qB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"rv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation) +"sC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) +"sD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/toilet, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) +"td" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/particle_accelerator/particle_emitter/center, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"tT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/particle_accelerator/end_cap, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"vG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 9 + }, +/area/ruin/space/has_grav/ancientstation/rnd) +"wC" = ( +/obj/structure/particle_accelerator/power_box, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"yk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation) +"zh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 6 + }, +/area/ruin/space/has_grav/ancientstation/rnd) +"Af" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation) +"BH" = ( +/obj/structure/particle_accelerator/particle_emitter/left, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) "Dj" = ( /obj/structure/transit_tube{ dir = 4 }, /turf/template_noop, /area/space/nearstation) +"FH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/mirror{ + name = "dusty mirror"; + pixel_x = -26 + }, +/obj/machinery/light/small{ + dir = 8; + pixel_y = -10 + }, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) "Ga" = ( /obj/structure/transit_tube/crossing/horizontal, /turf/template_noop, /area/space/nearstation) +"It" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + name = "dusty mirror"; + pixel_x = 26 + }, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) +"Ka" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation) +"Ku" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/particle_accelerator/control_box, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"KR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/internals/plasma/full, +/obj/item/tank/internals/plasma/full, +/obj/item/tank/internals/plasma/full, +/obj/item/tank/internals/plasma/full, +/obj/structure/closet/crate/secure/engineering{ + name = "plasma tank crate"; + req_access_txt = "204" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"Ll" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/particle_accelerator/particle_emitter/right, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"LY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation) +"MS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation/deltacorridor) "MZ" = ( /obj/machinery/door/airlock/highsecurity, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -4389,6 +4590,146 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hivebot) +"NF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation/rnd) +"NK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/urinal{ + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) +"OA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation/rnd) +"OC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) +"OY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/mob/living/simple_animal/hostile/hivebot, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"Pl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/solar_assembly, +/obj/item/stack/sheet/glass{ + amount = 30 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation) +"PV" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-25" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/departments/restroom{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation) +"Ql" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation) +"Qp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westright, +/obj/machinery/shower{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) +"Sf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/particle_accelerator/fuel_chamber, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"SJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 10 + }, +/area/ruin/space/has_grav/ancientstation/rnd) +"SP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/mirror{ + name = "dusty mirror"; + pixel_x = -26 + }, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) +"Vs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation/deltacorridor) +"XJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/engi) +"Yc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation) +"Yi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/ancientstation/engi) +"Ym" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft, +/obj/machinery/shower{ + dir = 8 + }, +/obj/item/soap/nanotrasen, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/ancientstation) +"ZE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/space/has_grav/ancientstation) (1,1,1) = {" aa @@ -5277,7 +5618,7 @@ ei dH dH dH -gf +gc ei ei ei @@ -5564,9 +5905,9 @@ dl ek em fd -fE +Yi gj -fE +Yi hm em ie @@ -5669,7 +6010,7 @@ em iw dl iV -jj +XJ jC dl aa @@ -5801,7 +6142,7 @@ cl cO dm cl -cl +rv eO fg cl @@ -5810,14 +6151,14 @@ cl hq eO ih -cl +rv dm cO -cl +LY jE aG jZ -aY +yk kC aG aG @@ -5863,11 +6204,11 @@ bT cP jl jF -bx -aU -aU +Yc +Af aU aU +Pl kY aG aa @@ -5961,7 +6302,7 @@ co bR aG aG -bN +ZE kD kN kD @@ -6414,12 +6755,12 @@ aa aa aa aG -aS -aY -aY -aY -aY -bC +NK +OC +sC +FH +SP +Ql bN bN cU @@ -6440,10 +6781,10 @@ jb jp bN bC -kb aY -kG aY +kG +aS aY aG aa @@ -6462,25 +6803,25 @@ aa aa aa aG -aG -aG +sD +It bc -aY -aY +Qp +Ym aG -bW +PV bN cV du bN -bN +Ka bN bR bN gz bN bR -bN +Ka bN bN iO @@ -6509,7 +6850,7 @@ aa aa aa aa -aa +aG aG aG aG @@ -7241,7 +7582,7 @@ cz cY dw dW -ey +MS eW ft fR @@ -7249,7 +7590,7 @@ gK ey hC ey -ey +MS iC dw ey @@ -7384,9 +7725,9 @@ bD cC db dy -dY +vG ez -dZ +NF dZ fT eb @@ -7528,11 +7869,11 @@ lx cE dc dy -ea +fo eC dZ dZ -fU +zh gO hh eb @@ -7676,7 +8017,7 @@ ec dZ dZ eC -fV +SJ eb dy dy @@ -7729,12 +8070,12 @@ gQ dy hF lM -eb -lM +OA +nM iQ dy jx -ed +py jV kk kx @@ -7816,7 +8157,7 @@ bD cF db dy -ea +fo eF dZ dZ @@ -7961,7 +8302,7 @@ cH dg dC ee -ca +qB eY cX ed @@ -7971,7 +8312,7 @@ hJ ed ca ee -cX +Vs jf ca cH @@ -8054,19 +8395,19 @@ ac bD cc cc -cc +dh bD aa bD eZ eZ +eZ dh dh dh -eZ -hK -bD -aa +dh +td +tT bD cc cc @@ -8101,24 +8442,24 @@ ac ac bD cd -cJ -dh +OY +KR bD aa bD eZ fz -dh -dh +fz dh hK hK -bD -aa +Ku +Ll +Sf bD jg jz -jN +dh bD aa aa @@ -8158,12 +8499,12 @@ bD fz fz fz -fz hK +hK +BH +wC bD bD -aa -bD bD bD bD @@ -8209,8 +8550,8 @@ bD bD bD bD -aa -aa +bD +bD aa aa aa diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 2ff9d1e850..e4967b494d 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -384,25 +384,27 @@ update_label("John Doe", "Clowny") /obj/item/card/id/away/old name = "a perfectly generic identification card" desc = "A perfectly generic identification card. Looks like it could use some flavor." - access = list(ACCESS_AWAY_GENERAL) + icon_state = "centcom" /obj/item/card/id/away/old/sec - name = "Security Officer ID" - desc = "Security officers ID card." - icon_state = "centcom" + name = "Charlie Station Security Officer's ID card" + desc = "A faded Charlie Station ID card. You can make out the rank \"Security Officer\"." + assignment = "Charlie Station Security Officer" + access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_SEC) /obj/item/card/id/away/old/sci - name = "Scientist ID" - desc = "Scientists ID card." - icon_state = "centcom" + name = "Charlie Station Scientist's ID card" + desc = "A faded Charlie Station ID card. You can make out the rank \"Scientist\"." + assignment = "Charlie Station Scientist" + access = list(ACCESS_AWAY_GENERAL) /obj/item/card/id/away/old/eng - name = "Engineer ID" - desc = "Engineers ID card." - icon_state = "centcom" + name = "Charlie Station Engineer's ID card" + desc = "A faded Charlie Station ID card. You can make out the rank \"Station Engineer\"." + assignment = "Charlie Station Engineer" + access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_ENGINE) /obj/item/card/id/away/old/apc name = "APC Access ID" - desc = "Special ID card to allow access to APCs." - icon_state = "centcom" + desc = "A special ID card that allows access to APC terminals." access = list(ACCESS_ENGINE_EQUIP) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 6c5ecf149e..6290139bb4 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -477,7 +477,8 @@ mob_species = /datum/species/human flavour_text = "You are a security officer working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \ - your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod." + your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \ + Work as a team with your fellow survivors and do not abandon them." uniform = /obj/item/clothing/under/rank/security shoes = /obj/item/clothing/shoes/jackboots id = /obj/item/card/id/away/old/sec @@ -501,7 +502,8 @@ mob_species = /datum/species/human flavour_text = "You are an engineer working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \ - your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod." + your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \ + Work as a team with your fellow survivors and do not abandon them." uniform = /obj/item/clothing/under/rank/engineer shoes = /obj/item/clothing/shoes/workboots id = /obj/item/card/id/away/old/eng @@ -525,7 +527,8 @@ mob_species = /datum/species/human flavour_text = "You are a scientist working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \ - your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod." + your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \ + Work as a team with your fellow survivors and do not abandon them." uniform = /obj/item/clothing/under/rank/scientist shoes = /obj/item/clothing/shoes/laceup id = /obj/item/card/id/away/old/sci diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 4d737657f8..66befb1bb6 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -302,3 +302,105 @@ name = "BVAK bottle" desc = "A small bottle containing Bio Virus Antidote Kit." list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10) + +//Oldstation.dmm chemical storage bottles + +/obj/item/reagent_containers/glass/bottle/hydrogen + name = "hydrogen bottle" + list_reagents = list("hydrogen" = 30) + +/obj/item/reagent_containers/glass/bottle/lithium + name = "lithium bottle" + list_reagents = list("lithium" = 30) + +/obj/item/reagent_containers/glass/bottle/carbon + name = "carbon bottle" + list_reagents = list("carbon" = 30) + +/obj/item/reagent_containers/glass/bottle/nitrogen + name = "nitrogen bottle" + list_reagents = list("nitrogen" = 30) + +/obj/item/reagent_containers/glass/bottle/oxygen + name = "oxygen bottle" + list_reagents = list("oxygen" = 30) + +/obj/item/reagent_containers/glass/bottle/fluorine + name = "fluorine bottle" + list_reagents = list("fluorine" = 30) + +/obj/item/reagent_containers/glass/bottle/sodium + name = "sodium bottle" + list_reagents = list("sodium" = 30) + +/obj/item/reagent_containers/glass/bottle/aluminium + name = "aluminium bottle" + list_reagents = list("aluminium" = 30) + +/obj/item/reagent_containers/glass/bottle/silicon + name = "silicon bottle" + list_reagents = list("silicon" = 30) + +/obj/item/reagent_containers/glass/bottle/phosphorus + name = "phosphorus bottle" + list_reagents = list("phosphorus" = 30) + +/obj/item/reagent_containers/glass/bottle/sulfur + name = "sulfur bottle" + list_reagents = list("sulfur" = 30) + +/obj/item/reagent_containers/glass/bottle/chlorine + name = "chlorine bottle" + list_reagents = list("chlorine" = 30) + +/obj/item/reagent_containers/glass/bottle/potassium + name = "potassium bottle" + list_reagents = list("potassium" = 30) + +/obj/item/reagent_containers/glass/bottle/iron + name = "iron bottle" + list_reagents = list("iron" = 30) + +/obj/item/reagent_containers/glass/bottle/copper + name = "copper bottle" + list_reagents = list("copper" = 30) + +/obj/item/reagent_containers/glass/bottle/mercury + name = "mercury bottle" + list_reagents = list("mercury" = 30) + +/obj/item/reagent_containers/glass/bottle/radium + name = "radium bottle" + list_reagents = list("radium" = 30) + +/obj/item/reagent_containers/glass/bottle/water + name = "water bottle" + list_reagents = list("water" = 30) + +/obj/item/reagent_containers/glass/bottle/ethanol + name = "ethanol bottle" + list_reagents = list("ethanol" = 30) + +/obj/item/reagent_containers/glass/bottle/sugar + name = "sugar bottle" + list_reagents = list("sugar" = 30) + +/obj/item/reagent_containers/glass/bottle/sacid + name = "sulphuric acid bottle" + list_reagents = list("sacid" = 30) + +/obj/item/reagent_containers/glass/bottle/welding_fuel + name = "welding fuel bottle" + list_reagents = list("welding_fuel" = 30) + +/obj/item/reagent_containers/glass/bottle/silver + name = "silver bottle" + list_reagents = list("silver" = 30) + +/obj/item/reagent_containers/glass/bottle/iodine + name = "iodine bottle" + list_reagents = list("iodine" = 30) + +/obj/item/reagent_containers/glass/bottle/bromine + name = "bromine bottle" + list_reagents = list("bromine" = 30) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 8da31a7ba1..3b97888904 100755 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -331,103 +331,3 @@ /obj/item/reagent_containers/glass/beaker/waterbottle/large/empty list_reagents = list() - -/obj/item/reagent_containers/glass/beaker/large/hydrogen - name = "hydrogen beaker" - list_reagents = list("hydrogen" = 50) - -/obj/item/reagent_containers/glass/beaker/large/lithium - name = "lithium beaker" - list_reagents = list("lithium" = 50) - -/obj/item/reagent_containers/glass/beaker/large/carbon - name = "carbon beaker" - list_reagents = list("carbon" = 50) - -/obj/item/reagent_containers/glass/beaker/large/nitrogen - name = "nitrogen beaker" - list_reagents = list("nitrogen" = 50) - -/obj/item/reagent_containers/glass/beaker/large/oxygen - name = "oxygen beaker" - list_reagents = list("oxygen" = 50) - -/obj/item/reagent_containers/glass/beaker/large/fluorine - name = "fluorine beaker" - list_reagents = list("fluorine" = 50) - -/obj/item/reagent_containers/glass/beaker/large/sodium - name = "sodium beaker" - list_reagents = list("sodium" = 50) - -/obj/item/reagent_containers/glass/beaker/large/aluminium - name = "aluminium beaker" - list_reagents = list("aluminium" = 50) - -/obj/item/reagent_containers/glass/beaker/large/silicon - name = "silicon beaker" - list_reagents = list("silicon" = 50) - -/obj/item/reagent_containers/glass/beaker/large/phosphorus - name = "phosphorus beaker" - list_reagents = list("phosphorus" = 50) - -/obj/item/reagent_containers/glass/beaker/large/sulfur - name = "sulfur beaker" - list_reagents = list("sulfur" = 50) - -/obj/item/reagent_containers/glass/beaker/large/chlorine - name = "chlorine beaker" - list_reagents = list("chlorine" = 50) - -/obj/item/reagent_containers/glass/beaker/large/potassium - name = "potassium beaker" - list_reagents = list("potassium" = 50) - -/obj/item/reagent_containers/glass/beaker/large/iron - name = "iron beaker" - list_reagents = list("iron" = 50) - -/obj/item/reagent_containers/glass/beaker/large/copper - name = "copper beaker" - list_reagents = list("copper" = 50) - -/obj/item/reagent_containers/glass/beaker/large/mercury - name = "mercury beaker" - list_reagents = list("mercury" = 50) - -/obj/item/reagent_containers/glass/beaker/large/radium - name = "radium beaker" - list_reagents = list("radium" = 50) - -/obj/item/reagent_containers/glass/beaker/large/water - name = "water beaker" - list_reagents = list("water" = 50) - -/obj/item/reagent_containers/glass/beaker/large/ethanol - name = "ethanol beaker" - list_reagents = list("ethanol" = 50) - -/obj/item/reagent_containers/glass/beaker/large/sugar - name = "sugar beaker" - list_reagents = list("sugar" = 50) - -/obj/item/reagent_containers/glass/beaker/large/sacid - name = "sulphuric acid beaker" - list_reagents = list("sacid" = 50) - -/obj/item/reagent_containers/glass/beaker/large/welding_fuel - name = "welding fuel beaker" - list_reagents = list("welding_fuel" = 50) - -/obj/item/reagent_containers/glass/beaker/large/silver - name = "silver beaker" - list_reagents = list("silver" = 50) - -/obj/item/reagent_containers/glass/beaker/large/iodine - name = "iodine beaker" - list_reagents = list("iodine" = 50) - -/obj/item/reagent_containers/glass/beaker/large/bromine - name = "bromine beaker" - list_reagents = list("bromine" = 50) diff --git a/code/modules/ruins/spaceruin_code/oldstation.dm b/code/modules/ruins/spaceruin_code/oldstation.dm index b216145023..e72dbea044 100644 --- a/code/modules/ruins/spaceruin_code/oldstation.dm +++ b/code/modules/ruins/spaceruin_code/oldstation.dm @@ -47,3 +47,7 @@ SIGNIFICANT EVENTS OF NOTE
1: The primary radiation detectors were taken offline after 112 years due to power failure, secondary radiation detectors showed no residual \ radiation on station. Deduction, primarily detector was malfunctioning and was producing a radiation signal when there was none.

2: A data burst from a nearby Nanotrasen Space \ Station was received, this data burst contained research data that has been uploaded to our RnD labs.

3: Unknown invasion force has occupied Delta station." + +/obj/item/paper/fluff/ruins/oldstation/generator_manual + name = "S.U.P.E.R.P.A.C.M.A.N.-type portable generator manual" + info = "You can barely make out a faded sentence...

Wrench down the generator on top of a wire node connected to either a SMES input terminal or the power grid." From 15447735317702e096acdfa920698a94fa4e851e Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 08:04:06 -0700 Subject: [PATCH 057/403] Automatic changelog generation for PR #39248 [ci skip] --- html/changelogs/AutoChangeLog-pr-39248.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39248.yml diff --git a/html/changelogs/AutoChangeLog-pr-39248.yml b/html/changelogs/AutoChangeLog-pr-39248.yml new file mode 100644 index 0000000000..3426b26c16 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39248.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Charlie/Delta Station (the \"old cryogenics pod\" ghost role) has been improved. Survivors can now finish the singularity engine and will have more minerals available inside the Hivebot mothership. The local atmos network is connected to an air tank; fire alarms and a bathroom have been added. Keep an eye out for a defibrillator too." From f49e73d8dd8acbec5aa80733b13795605d38d4a4 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Sun, 22 Jul 2018 22:16:58 +0200 Subject: [PATCH 058/403] Adds examine descs to organ harvester (#39264) Organ harvester was lacking examine descs, new players might not know that it's started with alt+click. --- code/game/machinery/harvester.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm index 1531fc0c79..ce78929855 100644 --- a/code/game/machinery/harvester.dm +++ b/code/game/machinery/harvester.dm @@ -169,3 +169,10 @@ /obj/machinery/harvester/relaymove(mob/user) if (!state_open) container_resist(user) + +/obj/machinery/harvester/examine(mob/user) + ..() + if(state_open) + to_chat(user, "[src] must be closed before harvesting.") + else + to_chat(user, "Alt-click [src] to start harvesting.") From a5d17c673e9b779d4d5eb5994f41880d22b60987 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 13:17:01 -0700 Subject: [PATCH 059/403] Automatic changelog generation for PR #39264 [ci skip] --- html/changelogs/AutoChangeLog-pr-39264.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39264.yml diff --git a/html/changelogs/AutoChangeLog-pr-39264.yml b/html/changelogs/AutoChangeLog-pr-39264.yml new file mode 100644 index 0000000000..910085448c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39264.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - spellcheck: "Added examine descriptions to the organ harvester." From 4f648a2f995bdb4c707a0f02b81b0912fab0fc7d Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 22 Jul 2018 13:22:57 -0700 Subject: [PATCH 060/403] Ports vault safe to ui_interact, fixes automatic refreshing being broken (#39255) --- code/game/objects/structures/safe.dm | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 3a10d200a1..f256b6bd4c 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -13,6 +13,7 @@ FLOOR SAFES anchored = TRUE density = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF + interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT var/open = FALSE //is the safe open? var/tumbler_1_pos //the tumbler position- from 0 to 72 var/tumbler_1_open //the tumbler position to open at- 0 to 72 @@ -23,7 +24,6 @@ FLOOR SAFES var/maxspace = 24 //the maximum combined w_class of stuff in the safe var/explosion_count = 0 //Tough, but breakable - /obj/structure/safe/New() ..() tumbler_1_pos = rand(0, 71) @@ -61,32 +61,25 @@ FLOOR SAFES return TRUE return FALSE - /obj/structure/safe/proc/decrement(num) num -= 1 if(num < 0) num = 71 return num - /obj/structure/safe/proc/increment(num) num += 1 if(num > 71) num = 0 return num - /obj/structure/safe/update_icon() if(open) icon_state = "[initial(icon_state)]-open" else icon_state = initial(icon_state) - -/obj/structure/safe/attack_hand(mob/user) - . = ..() - if(.) - return +/obj/structure/safe/ui_interact(mob/user) user.set_machine(src) var/dat = "
" dat += "[open ? "Close" : "Open"] [src] | - [dial] +" @@ -98,7 +91,6 @@ FLOOR SAFES dat += "
" user << browse("[name][dat]", "window=safe;size=350x300") - /obj/structure/safe/Topic(href, href_list) if(!ishuman(usr)) return From a3f97c5a383bed4b8f1b605a8ba7492f5ae347fa Mon Sep 17 00:00:00 2001 From: Denton Date: Sun, 22 Jul 2018 23:05:22 +0200 Subject: [PATCH 061/403] Moves auto unlocked exofab nodes to techweb nodes --- code/modules/research/techweb/_techweb.dm | 1 - code/modules/research/techweb/all_nodes.dm | 115 ++++++++++----------- 2 files changed, 53 insertions(+), 63 deletions(-) diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index 7c23609c21..f11b0ad709 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -355,5 +355,4 @@ allowed_buildtypes = SMELTER /datum/techweb/specialized/autounlocking/exofab - node_autounlock_ids = list("robotics", "mmi", "cyborg", "mecha_odysseus", "mech_gygax", "mech_durand", "mecha_phazon", "mecha", "mech_tools", "clown") allowed_buildtypes = MECHFAB diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 3a9c6d7021..2f3405256a 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1,7 +1,7 @@ //Current rate: 132500 research points in 90 minutes -//Base Node +//Base Nodes /datum/techweb_node/base id = "base" starting_node = TRUE @@ -11,6 +11,35 @@ "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", "space_heater", "xlarge_beaker", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38") //Default research tech, prevents bricking +/datum/techweb_node/mmi + id = "mmi" + starting_node = TRUE + display_name = "Man Machine Interface" + description = "A slightly Frankensteinian device that allows human brains to interface natively with software APIs." + design_ids = list("mmi") + +/datum/techweb_node/cyborg + id = "cyborg" + starting_node = TRUE + display_name = "Cyborg Construction" + description = "Sapient robots with preloaded tool modules and programmable laws." + design_ids = list("robocontrol", "sflash", "borg_suit", "borg_head", "borg_chest", "borg_r_arm", "borg_l_arm", "borg_r_leg", "borg_l_leg", "borgupload", + "cyborgrecharger", "borg_upgrade_restart", "borg_upgrade_rename") + +/datum/techweb_node/mech + id = "mecha" + starting_node = TRUE + display_name = "Mechanical Exosuits" + description = "Mechanized exosuits that are several magnitudes stronger and more powerful than the average human." + design_ids = list("mecha_tracking", "mechacontrol", "mechapower", "mech_recharger", "ripley_chassis", "firefighter_chassis", "ripley_torso", "ripley_left_arm", "ripley_right_arm", "ripley_left_leg", "ripley_right_leg", + "ripley_main", "ripley_peri", "mech_hydraulic_clamp") + +/datum/techweb_node/mech_tools + id = "mech_tools" + starting_node = TRUE + display_name = "Basic Exosuit Equipment" + description = "Various tools fit for basic mech units" + design_ids = list("mech_drill", "mech_mscanner", "mech_extinguisher", "mech_cable_layer") /////////////////////////Biotech///////////////////////// /datum/techweb_node/biotech @@ -219,39 +248,20 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 -/datum/techweb_node/mmi - id = "mmi" - display_name = "Man Machine Interface" - description = "A slightly Frankensteinian device that allows human brains to interface natively with software APIs." - prereq_ids = list("neural_programming") - design_ids = list("mmi") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) - export_price = 5000 - /datum/techweb_node/posibrain id = "posibrain" display_name = "Positronic Brain" description = "Applied usage of neural technology allowing for autonomous AI units based on special metallic cubes with conductive and processing circuits." - prereq_ids = list("neural_programming", "mmi") + prereq_ids = list("neural_programming") design_ids = list("mmi_posi") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 -/datum/techweb_node/cyborg - id = "cyborg" - display_name = "Cyborg Construction" - description = "Sapient robots with preloaded tool modules and programmable laws." - prereq_ids = list("mmi", "robotics") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) - export_price = 5000 - design_ids = list("robocontrol", "sflash", "borg_suit", "borg_head", "borg_chest", "borg_r_arm", "borg_l_arm", "borg_r_leg", "borg_l_leg", "borgupload", - "cyborgrecharger", "borg_upgrade_restart", "borg_upgrade_rename") - /datum/techweb_node/cyborg_upg_util id = "cyborg_upg_util" display_name = "Cyborg Upgrades: Utility" description = "Utility upgrades for cyborgs." - prereq_ids = list("engineering", "cyborg") + prereq_ids = list("engineering") design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 @@ -260,7 +270,7 @@ id = "cyborg_upg_med" display_name = "Cyborg Upgrades: Medical" description = "Medical upgrades for cyborgs." - prereq_ids = list("adv_biotech", "cyborg") + prereq_ids = list("adv_biotech") design_ids = list("borg_upgrade_defibrillator", "borg_upgrade_piercinghypospray", "borg_upgrade_highstrengthsynthesiser", "borg_upgrade_expandedsynthesiser", "borg_upgrade_pinpointer") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 @@ -423,7 +433,7 @@ id = "cyber_organs" display_name = "Cybernetic Organs" description = "We have the technology to rebuild him." - prereq_ids = list("adv_biotech", "cyborg") + prereq_ids = list("adv_biotech") design_ids = list("cybernetic_heart", "cybernetic_liver", "cybernetic_liver_u", "cybernetic_lungs") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -432,7 +442,7 @@ id = "cyber_implants" display_name = "Cybernetic Implants" description = "Electronic implants that improve humans." - prereq_ids = list("adv_biotech", "cyborg", "adv_datatheory") + prereq_ids = list("adv_biotech", "adv_datatheory") design_ids = list("ci-nutriment", "ci-breather", "ci-gloweyes", "ci-welding", "ci-medhud", "ci-sechud") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -602,21 +612,11 @@ export_price = 5000 ////////////////////////mech technology//////////////////////// -/datum/techweb_node/mech - id = "mecha" - display_name = "Mechanical Exosuits" - description = "Mechanized exosuits that are several magnitudes stronger and more powerful than the average human." - prereq_ids = list("robotics", "adv_engi") - design_ids = list("mecha_tracking", "mechacontrol", "mechapower", "mech_recharger", "ripley_chassis", "firefighter_chassis", "ripley_torso", "ripley_left_arm", "ripley_right_arm", "ripley_left_leg", "ripley_right_leg", - "ripley_main", "ripley_peri", "mech_hydraulic_clamp") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) - export_price = 5000 - /datum/techweb_node/adv_mecha id = "adv_mecha" display_name = "Advanced Exosuits" description = "For when you just aren't Gundam enough." - prereq_ids = list("adv_robotics", "mecha") + prereq_ids = list("adv_robotics") design_ids = list("mech_repair_droid") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -625,7 +625,7 @@ id = "mecha_odysseus" display_name = "EXOSUIT: Odysseus" description = "Odysseus exosuit designs" - prereq_ids = list("mecha") + prereq_ids = list("base") design_ids = list("odysseus_chassis", "odysseus_torso", "odysseus_head", "odysseus_left_arm", "odysseus_right_arm" ,"odysseus_left_leg", "odysseus_right_leg", "odysseus_main", "odysseus_peri") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) @@ -661,20 +661,11 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 -/datum/techweb_node/mech_tools - id = "mech_tools" - display_name = "Basic Exosuit Equipment" - description = "Various tools fit for basic mech units" - prereq_ids = list("mecha") - design_ids = list("mech_drill", "mech_mscanner", "mech_extinguisher", "mech_cable_layer") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) - export_price = 5000 - /datum/techweb_node/adv_mecha_tools id = "adv_mecha_tools" display_name = "Advanced Exosuit Equipment" description = "Tools for high level mech suits" - prereq_ids = list("adv_mecha", "mech_tools") + prereq_ids = list("adv_mecha") design_ids = list("mech_rcd") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -683,7 +674,7 @@ id = "med_mech_tools" display_name = "Medical Exosuit Equipment" description = "Tools for high level mech suits" - prereq_ids = list("mecha", "adv_biotech", "mech_tools") + prereq_ids = list("adv_biotech") design_ids = list("mech_sleeper", "mech_syringe_gun", "mech_medi_beam") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -701,7 +692,7 @@ id = "mecha_tools" display_name = "Exosuit Weapon (LBX AC 10 \"Scattershot\")" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "ballistic_weapons") + prereq_ids = list("ballistic_weapons") design_ids = list("mech_scattershot") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -710,7 +701,7 @@ id = "mech_carbine" display_name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "ballistic_weapons") + prereq_ids = list("ballistic_weapons") design_ids = list("mech_carbine") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -719,7 +710,7 @@ id = "mmech_ion" display_name = "Exosuit Weapon (MKIV Ion Heavy Cannon)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "electronic_weapons", "emp_adv") + prereq_ids = list("electronic_weapons", "emp_adv") design_ids = list("mech_ion") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -728,7 +719,7 @@ id = "mech_tesla" display_name = "Exosuit Weapon (MKI Tesla Cannon)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "electronic_weapons", "adv_power") + prereq_ids = list("electronic_weapons", "adv_power") design_ids = list("mech_tesla") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -737,7 +728,7 @@ id = "mech_laser" display_name = "Exosuit Weapon (CH-PS \"Immolator\" Laser)" description = "A basic piece of mech weaponry" - prereq_ids = list("mecha", "beam_weapons") + prereq_ids = list("beam_weapons") design_ids = list("mech_laser") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -746,7 +737,7 @@ id = "mech_laser_heavy" display_name = "Exosuit Weapon (CH-LC \"Solaris\" Laser Cannon)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "adv_beam_weapons") + prereq_ids = list("adv_beam_weapons") design_ids = list("mech_laser_heavy") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -755,7 +746,7 @@ id = "mech_grenade_launcher" display_name = "Exosuit Weapon (SGL-6 Grenade Launcher)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "explosive_weapons") + prereq_ids = list("explosive_weapons") design_ids = list("mech_grenade_launcher") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -764,7 +755,7 @@ id = "mech_missile_rack" display_name = "Exosuit Weapon (SRM-8 Missile Rack)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "explosive_weapons") + prereq_ids = list("explosive_weapons") design_ids = list("mech_missile_rack") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -773,7 +764,7 @@ id = "clusterbang_launcher" display_name = "Exosuit Module (SOB-3 Clusterbang Launcher)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "explosive_weapons") + prereq_ids = list("explosive_weapons") design_ids = list("clusterbang_launcher") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -782,7 +773,7 @@ id = "mech_teleporter" display_name = "Exosuit Module (Teleporter Module)" description = "An advanced piece of mech Equipment" - prereq_ids = list("mech_tools", "adv_bluespace") + prereq_ids = list("adv_bluespace") design_ids = list("mech_teleporter") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -791,7 +782,7 @@ id = "mech_wormhole_gen" display_name = "Exosuit Module (Localized Wormhole Generator)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "mech_tools", "adv_bluespace") + prereq_ids = list("adv_bluespace") design_ids = list("mech_wormhole_gen") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -800,7 +791,7 @@ id = "mech_taser" display_name = "Exosuit Weapon (PBT \"Pacifier\" Mounted Taser)" description = "A basic piece of mech weaponry" - prereq_ids = list("mecha", "electronic_weapons") + prereq_ids = list("electronic_weapons") design_ids = list("mech_taser") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -809,7 +800,7 @@ id = "mech_lmg" display_name = "Exosuit Weapon (\"Ultra AC 2\" LMG)" description = "An advanced piece of mech weaponry" - prereq_ids = list("mecha", "ballistic_weapons") + prereq_ids = list("ballistic_weapons") design_ids = list("mech_lmg") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -818,7 +809,7 @@ id = "mech_diamond_drill" display_name = "Exosuit Diamond Drill" description = "A diamond drill fit for a large exosuit" - prereq_ids = list("mecha", "adv_mining") + prereq_ids = list("adv_mining") design_ids = list("mech_diamond_drill") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 From 6709d4d9ed45d747e9b8e63dafcafb8ef84002dc Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Sun, 22 Jul 2018 23:25:20 +0200 Subject: [PATCH 062/403] Improves chemical grenade descs (#39262) Chem grenade casing descs are just "A do it yourself [initial(name)]!", which means players have to either pull up the wiki or code dive to find out what the hell they actually do. I gave empty casings detailed descs so aspiring pyromaniacs can quickly see what casings do. --- .../objects/items/grenades/chem_grenade.dm | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index c961fca9f2..c04e8471bd 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -18,6 +18,7 @@ var/ignition_temp = 10 // The amount of heat added to the reagents when this grenade goes off. var/threatscale = 1 // Used by advanced grenades to make them slightly more worthy. var/no_splash = FALSE //If the grenade deletes even if it has no reagents to splash with. Used for slime core reactions. + var/casedesc = "This basic model accepts both beakers and bottles. It heats contents by 10°K upon ignition." // Appears when examining empty casings. /obj/item/grenade/chem_grenade/Initialize() . = ..() @@ -138,7 +139,7 @@ stage = N if(stage == EMPTY) name = "[initial(name)] casing" - desc = "A do it yourself [initial(name)]!" + desc = "A do it yourself [initial(name)]! [initial(casedesc)]" icon_state = initial(icon_state) else if(stage == WIRED) name = "unsecured [initial(name)]" @@ -211,10 +212,10 @@ //Large chem grenades accept slime cores and use the appropriately. /obj/item/grenade/chem_grenade/large name = "large grenade" - desc = "A custom made large grenade. It affects a larger area." + desc = "A custom made large grenade. Larger splash range and increased ignition temperature compared to basic grenades. Fits exotic containers." + casedesc = "This casing affects a larger area than the basic model and can fit exotic containers, including slime cores. Heats contents by 25°K upon ignition." icon_state = "large_grenade" - allowed_containers = list(/obj/item/reagent_containers/glass, /obj/item/reagent_containers/food/condiment, - /obj/item/reagent_containers/food/drinks) + allowed_containers = list(/obj/item/reagent_containers/glass, /obj/item/reagent_containers/food/condiment, /obj/item/reagent_containers/food/drinks) affected_area = 5 ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades. threatscale = 1.1 // 10% more effective. @@ -255,21 +256,23 @@ /obj/item/grenade/chem_grenade/cryo // Intended for rare cryogenic mixes. Cools the area moderately upon detonation. name = "cryo grenade" - desc = "A custom made cryogenic grenade. It rapidly cools its contents upon detonation." + desc = "A custom made cryogenic grenade. Rapidly cools contents upon ignition." + casedesc = "Upon ignition, it rapidly cools contents by 100°K. Smaller splash range than regular casings." icon_state = "cryog" affected_area = 2 ignition_temp = -100 /obj/item/grenade/chem_grenade/pyro // Intended for pyrotechnical mixes. Produces a small fire upon detonation, igniting potentially flammable mixtures. name = "pyro grenade" - desc = "A custom made pyrotechnical grenade. It heats up and ignites its contents upon detonation." + desc = "A custom made pyrotechnical grenade. Heats up contents upon ignition." + casedesc = "Upon ignition, it rapidly heats contents by 500°K." icon_state = "pyrog" - affected_area = 3 ignition_temp = 500 // This is enough to expose a hotspot. /obj/item/grenade/chem_grenade/adv_release // Intended for weaker, but longer lasting effects. Could have some interesting uses. name = "advanced release grenade" desc = "A custom made advanced release grenade. It is able to be detonated more than once. Can be configured using a multitool." + casedesc = "This casing is able to detonate more than once. Can be configured using a multitool." icon_state = "timeg" var/unit_spread = 10 // Amount of units per repeat. Can be altered with a multitool. @@ -324,7 +327,7 @@ /obj/item/grenade/chem_grenade/metalfoam name = "metal foam grenade" - desc = "Used for emergency sealing of air breaches." + desc = "Used for emergency sealing of hull breaches." stage = READY /obj/item/grenade/chem_grenade/metalfoam/Initialize() @@ -342,7 +345,7 @@ /obj/item/grenade/chem_grenade/smart_metal_foam name = "smart metal foam grenade" - desc = "Used for sealing and reconstruction of air breaches." + desc = "Used for emergency sealing of hull breaches, while keeping areas accessible." stage = READY /obj/item/grenade/chem_grenade/smart_metal_foam/Initialize() From 0e24e1df6fe13e815520889c235c6ecbfde3a3ea Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 14:25:23 -0700 Subject: [PATCH 063/403] Automatic changelog generation for PR #39262 [ci skip] --- html/changelogs/AutoChangeLog-pr-39262.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39262.yml diff --git a/html/changelogs/AutoChangeLog-pr-39262.yml b/html/changelogs/AutoChangeLog-pr-39262.yml new file mode 100644 index 0000000000..f5e10b561b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39262.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - spellcheck: "Chemical grenades, empty casings and smart metal foam nades now have more detailed descriptions." From a8cd571690f1b4bcc96cd0d0aad670be1ed44812 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sun, 22 Jul 2018 23:27:52 +0200 Subject: [PATCH 064/403] If the antag status gets removed ending checks will check again. (#39268) As in if last antag gets his antag status removed round will end if it should. --- code/game/gamemodes/game_mode.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 12791dd870..7c20a31c77 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -221,7 +221,7 @@ return 0 - if(living_antag_player && living_antag_player.mind && isliving(living_antag_player) && living_antag_player.stat != DEAD && !isnewplayer(living_antag_player) &&!isbrain(living_antag_player)) + if(living_antag_player && living_antag_player.mind && isliving(living_antag_player) && living_antag_player.stat != DEAD && !isnewplayer(living_antag_player) &&!isbrain(living_antag_player) && (living_antag_player.mind.special_role || LAZYLEN(living_antag_player.mind.antag_datums))) return 0 //A resource saver: once we find someone who has to die for all antags to be dead, we can just keep checking them, cycling over everyone only when we lose our mark. for(var/mob/Player in GLOB.alive_mob_list) From 63073e95e9747a1f2175fd5e38bc339c63e95881 Mon Sep 17 00:00:00 2001 From: Epoc <32695675+epochayur@users.noreply.github.com> Date: Sun, 22 Jul 2018 16:55:39 -0700 Subject: [PATCH 065/403] Adds "Toggle Flashlight" to PDA Context Menu (#39229) new verb for the PDA that toggles the flashlight, moved the toggle code to a new proc why: because i'm tired of having to open the PDA menu at the beginning of every round to turn on the flashlight --- code/game/objects/items/devices/PDA/PDA.dm | 23 +++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 7a665901e9..bbcde8a253 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -451,13 +451,7 @@ GLOBAL_LIST_EMPTY(PDAs) //MAIN FUNCTIONS=================================== if("Light") - if(fon) - fon = FALSE - set_light(0) - else if(f_lum) - fon = TRUE - set_light(f_lum) - update_icon() + toggle_light() if("Medical Scan") if(scanmode == PDA_SCANNER_MEDICAL) scanmode = PDA_SCANNER_NONE @@ -713,6 +707,12 @@ GLOBAL_LIST_EMPTY(PDAs) remove_pen() +/obj/item/pda/verb/verb_toggle_light() + set category = "Object" + set name = "Toggle Flashlight" + + toggle_light() + /obj/item/pda/verb/verb_remove_id() set category = "Object" set name = "Eject ID" @@ -730,6 +730,15 @@ GLOBAL_LIST_EMPTY(PDAs) remove_pen() +/obj/item/pda/proc/toggle_light() + if(fon) + fon = FALSE + set_light(0) + else if(f_lum) + fon = TRUE + set_light(f_lum) + update_icon() + /obj/item/pda/proc/remove_pen() if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE)) From bbc8973f98800cde80aebf0af0874dc70fabb871 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 16:55:42 -0700 Subject: [PATCH 066/403] Automatic changelog generation for PR #39229 [ci skip] --- html/changelogs/AutoChangeLog-pr-39229.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39229.yml diff --git a/html/changelogs/AutoChangeLog-pr-39229.yml b/html/changelogs/AutoChangeLog-pr-39229.yml new file mode 100644 index 0000000000..1935015d95 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39229.yml @@ -0,0 +1,4 @@ +author: "Epoc" +delete-after: True +changes: + - rscadd: "Adds \"Toggle Flashlight\" to PDA context menu." From 55ae9c1cd43b12f9b0238d6af750936c1942eecf Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Sun, 22 Jul 2018 22:05:34 -0700 Subject: [PATCH 067/403] Fix some erroneous reagent typepaths (#39300) --- code/modules/reagents/chemistry/reagents/alcohol_reagents.dm | 2 +- code/modules/reagents/chemistry/reagents/drug_reagents.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 252f349a9f..5107ed27b9 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1697,7 +1697,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "glass of fernet cola" glass_desc = "A sawed-off cola bottle filled with Fernet Cola. Nothing better after eating like a lardass." -/datum/reagent/consumable/ethanol/fernetcola/on_mob_life(mob/living/carbon/M) +/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) M.adjustToxLoss(0.5*REM, 0) M.nutrition = max(M.nutrition - 3, 0) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 33511c8905..a5ea41628d 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -132,7 +132,7 @@ ..() . = 1 -/datum/reagent/krokodil/addiction_act_stage2(mob/living/M) +/datum/reagent/drug/krokodil/addiction_act_stage2(mob/living/M) if(prob(25)) to_chat(M, "Your skin feels loose...") ..() From 595f52d8ad549300ca5d479e99818efff0cb86e7 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 22:05:37 -0700 Subject: [PATCH 068/403] Automatic changelog generation for PR #39300 [ci skip] --- html/changelogs/AutoChangeLog-pr-39300.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39300.yml diff --git a/html/changelogs/AutoChangeLog-pr-39300.yml b/html/changelogs/AutoChangeLog-pr-39300.yml new file mode 100644 index 0000000000..7484aec1a8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39300.yml @@ -0,0 +1,5 @@ +author: "SpaceManiac" +delete-after: True +changes: + - bugfix: "Fernet Cola's effect has been restored." + - bugfix: "Krokodil's addition stage two warning message has been restored." From 04e41a4333f829e92c79cbd40b856b92b77d8388 Mon Sep 17 00:00:00 2001 From: Hathkar <30916002+Hathkar@users.noreply.github.com> Date: Mon, 23 Jul 2018 01:08:16 -0400 Subject: [PATCH 069/403] Re-added Vault Access to captain's remote. (#39269) --- code/modules/jobs/access.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index ced08bbc6a..28f2063b8d 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -166,7 +166,7 @@ if(6) //supply return list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_CARGO, ACCESS_QM, ACCESS_VAULT) if(7) //command - return list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_GATEWAY, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HOP, ACCESS_CAPTAIN) + return list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_GATEWAY, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HOP, ACCESS_CAPTAIN, ACCESS_VAULT) /proc/get_region_accesses_name(code) switch(code) From b7ad78c19f541fb6e0a24e5a35f00d36eb93a7fc Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 22:08:19 -0700 Subject: [PATCH 070/403] Automatic changelog generation for PR #39269 [ci skip] --- html/changelogs/AutoChangeLog-pr-39269.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39269.yml diff --git a/html/changelogs/AutoChangeLog-pr-39269.yml b/html/changelogs/AutoChangeLog-pr-39269.yml new file mode 100644 index 0000000000..57baacc249 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39269.yml @@ -0,0 +1,4 @@ +author: "Hathkar" +delete-after: True +changes: + - tweak: "Captain's Door Remote now has vault access again." From 758946ac6684d2e6a5d1382cb59ab9c9d9554cf9 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Mon, 23 Jul 2018 07:11:11 +0200 Subject: [PATCH 071/403] Adds buzzkill grenade to nuke ops uplink (#39257) * Adds buzzkill grenade to nuke ops uplink * Replaces single grenade with a box of three --- code/game/objects/items/grenades/spawnergrenade.dm | 7 +++++++ code/game/objects/items/storage/uplink_kits.dm | 8 ++++++++ code/modules/uplink/uplink_items.dm | 9 +++++++++ 3 files changed, 24 insertions(+) diff --git a/code/game/objects/items/grenades/spawnergrenade.dm b/code/game/objects/items/grenades/spawnergrenade.dm index 3f10039458..42800b8e65 100644 --- a/code/game/objects/items/grenades/spawnergrenade.dm +++ b/code/game/objects/items/grenades/spawnergrenade.dm @@ -34,3 +34,10 @@ /obj/item/grenade/spawnergrenade/syndiesoap name = "Mister Scrubby" spawner_type = /obj/item/soap/syndie + +/obj/item/grenade/spawnergrenade/buzzkill + name = "Buzzkill grenade" + desc = "The label reads: \"WARNING: DEVICE WILL RELEASE LIVE SPECIMENS UPON ACTIVATION. SEAL SUIT BEFORE USE.\" It is warm to the touch and vibrates faintly." + icon_state = "holy_grenade" + spawner_type = /mob/living/simple_animal/hostile/poison/bees/toxin + deliveryamt = 10 diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 39a4f14eed..6bd5d52377 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -339,3 +339,11 @@ new /obj/item/stamp/chameleon/broken(src) new /obj/item/pda/chameleon/broken(src) // No chameleon laser, they can't randomise for //REASONS// + +/obj/item/storage/box/syndie_kit/bee_grenades + name = "buzzkill grenade box" + desc = "A sleek, sturdy box with a buzzing noise coming from the inside. Uh oh." + +/obj/item/storage/box/syndie_kit/bee_grenades/PopulateContents() + for(var/i in 1 to 3) + new /obj/item/grenade/spawnergrenade/buzzkill(src) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 34d1d0d828..e4cdfc6a6f 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -395,6 +395,15 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) player_minimum = 25 restricted = TRUE +/datum/uplink_item/dangerous/buzzkill + name = "Buzzkill Grenade Box" + desc = "A box with three grenades that release a swarm of angry bees upon activation. These bees indiscriminately attack friend or foe \ + with random toxins. Courtesy of the BLF and Tiger Cooperative." + item = /obj/item/storage/box/syndie_kit/bee_grenades + cost = 5 + surplus = 35 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + // Ammunition /datum/uplink_item/ammo category = "Ammunition" From 4e023fbd88ae6eba5ddda64f2dbb78c98793cf1f Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 22 Jul 2018 22:11:14 -0700 Subject: [PATCH 072/403] Automatic changelog generation for PR #39257 [ci skip] --- html/changelogs/AutoChangeLog-pr-39257.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39257.yml diff --git a/html/changelogs/AutoChangeLog-pr-39257.yml b/html/changelogs/AutoChangeLog-pr-39257.yml new file mode 100644 index 0000000000..b266f2d050 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39257.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - rscadd: "Nuclear Operatives can now purchase Buzzkill grenades for 5TC per box of three. Those release a swarm of angry bees with random toxins." From 4ee88b2a554b347df4fb297ef11741f2d27ff299 Mon Sep 17 00:00:00 2001 From: Tlaltecuhtli <33834933+Tlaltecuhtli@users.noreply.github.com> Date: Mon, 23 Jul 2018 10:05:02 +0200 Subject: [PATCH 073/403] Adds beesplosion chemical reaction (#39110) A reagent reaction which creates short lived bees that take on the other reagents in the container --- .../mob/living/simple_animal/hostile/bees.dm | 7 +++++ .../chemistry/recipes/pyrotechnics.dm | 25 ++++++++++++++++++ sound/creatures/bee.ogg | Bin 0 -> 36527 bytes 3 files changed, 32 insertions(+) create mode 100644 sound/creatures/bee.ogg diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index d8edf7fe67..748a8e9c5d 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -295,3 +295,10 @@ forceMove(beehome.drop_location()) else ..() + +/mob/living/simple_animal/hostile/poison/bees/short + desc = "These bees seem unstable and won't survive for long." + +/mob/living/simple_animal/hostile/poison/bees/short/Initialize() + . = ..() + addtimer(CALLBACK(src, .proc/death), 50 SECONDS) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 8b8c009a43..2bb8990eb8 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -116,6 +116,31 @@ empulse(location, round(created_volume / 12), round(created_volume / 7), 1) holder.clear_reagents() + +/datum/chemical_reaction/beesplosion + name = "Bee Explosion" + id = "beesplosion" + required_reagents = list("honey" = 1, "strange_reagent" = 1, "radium" = 1) + +/datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume) + var/location = holder.my_atom.drop_location() + if(created_volume < 5) + playsound(location,'sound/effects/sparks1.ogg', 100, TRUE) + else + playsound(location,'sound/creatures/bee.ogg', 100, TRUE) + var/list/beeagents = list() + for(var/X in holder.reagent_list) + var/datum/reagent/R = X + if(required_reagents[R.id]) + continue + beeagents += R + var/bee_amount = round(created_volume * 0.2) + for(var/i in 1 to bee_amount) + var/mob/living/simple_animal/hostile/poison/bees/short/new_bee = new(location) + if(LAZYLEN(beeagents)) + new_bee.assign_reagent(pick(beeagents)) + + /datum/chemical_reaction/stabilizing_agent name = "stabilizing_agent" id = "stabilizing_agent" diff --git a/sound/creatures/bee.ogg b/sound/creatures/bee.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cd2779f83474ccb210862b8074a1224b3a48e667 GIT binary patch literal 36527 zcmeFZc|4Tg`#*l$cNsC+sxg)zkffV`}0aT*b?J@)$OFIk1Nd69cT4>AecT(URF*?R!&w4CUNeZ9Ua(;7yM}Y zTzB`qu71JW?~1dQJI>SPq?5N7A6RkT<%*BXpK_SCr~6f3n2Fhj($h zuKrgM?00Wp>R0?v`VR&ELxKNL;6D`j4+Z{1f&ZUTfZ>k;BB`ZqMFTK{lb17swFLLZ zqXB>m031XmITJ7IOBN*MO593K(xc{DWTR4(qFVTzV&q!?zQGioLBoU|2$o=p%bV55 z_o%w^orv?vQFS*_c?@GBntxPfdGkZu=}KW$p~saTNik*)8wSvd0+4#b5j+;u8;&3x z$p_x<3Hh`OKhE@Fl`6^!WtDG-g&D~&RjeuH@%ON*KMdV*wOst@?8KhuH%!PGTA|A0rof~T`WsJl

Vl;)8ccq6*8VQT{(i&$fi|fTw$B4?o=4b@MA&UbIPyjQb^Q#S+M-^+ zrw*e5azs>9zDSbb0;JEXB)ag(Qd+>7N)i}L0$eg7PrvXo{)u}=wOdKGSLZWC=QH-- zO#m9O2{q-orx*S|uFEzlF8}j|bZeIakRUDFt_ihW6Gd5ww)r5Kep9#|0M`_0foSnj zJnyU6=6e>r&R^H*NHXf)Fgo=2B2bqd0FZJ*E!TuPKx$aX^!q4T`>GH78V`e{pi<=j zoI-x{3pf$stjj6*U}lAQ$KPZL24BmU%dE}*XC$xzA$J;<-kZMOt;(4`lT*x-(cc(l znQ@}FI5p$<3VQbNe*xE0@@-m6PFioeZ;w8EdcmLEE$$4avf}q(8UI`+XDh!W*v|cZ zI#cl|2JCCon?74q%LC@3k}^(EYAye~?=Q9}w$JQoRQ&|@h#JfAsAaJObKB0DU%OeT zW&f3Zkl?yGj_|c+g~9^k7;!wpg~Ex)uHWZO%#mxC%s&EqTqVy@0r5@ zAe`$r7yo_x&B}kcI6r|X^;V*?OTH69y_GigoLMSw;?ic91GyNX1afgKWj5RQiK?DQ z0c8j)U65p9AX)H7qQFIkImc@<^8Xf+$W))Vl8-^D`1gfd6MY9c+V^kQyKh3~++yI> zCogkBK^<+0w)Xe3dFVG@6Ja;vH#HnMH5_~CNaTNItbZg20EH&}w@fDCV&vK~!%VbT z{w(m{l5>rx?SW9o15v|gqQ>tL-QN{W*A@E?qs$eJFYwy+@%r^cT`nlw^((pbqg@95 zT}G>2Y-<8-s{az0KVmaA?DubyLlqIYYTOsS1p0qTPL4#}XO%b+{RB~)1o2xbu2Jd5 zY1s?KB-Z~TIc~(qsl>+w;v6APA}Yl_DxF+Q@_hSb>Bawe{UbT&eMG?vlpK_g=)Xx$ zgPf2yC{520#_NCPsNM$>^g8Ouzb^m)G{mzT{@zE-Eo25Qlm;zi(3a}|XNdu82NjL` z6+yx#0{}k&Oy?I4+~(xQ#j8eXx-siF3$nX{gzOm(Y;@JtaCxa~0mx%>cU8;y`Losc2bRiq~Ue!!TAru*<;eqKYL zBJ!|0@-XU8?f>o$4y0&K4_<%01{|o*lBQ4bud%>U8Wd1SMNpIc@6&%Xmbns*>A#JI zR5V6f8vpM{`p+BwLxKO10w9aiaDpGGR<5u#ZLkUraPJE;0j9sE80=)TcJ`)#(czC6 z=-ET*O#OdL2dH4bE8aYI_D~^9yyBs3rgvfP|G-QD>=sy&4K~)JR?Id2&DY=;Su;9Z z$kG>%r#;&r?*2y6k^J9(xnKYYreOktfx~Z+|9q!BJ#GL{NpQ9S?F+pG7aAbg#U`5x z01{ko9sBQJ^Z&l|zYItdECB%bNEql1@+cdL-)-8wjL2_ngz z7E~`F*%_#0S9UW%aGJTb8vrm-py88B%FHd21QE2K$ZxM9I@fi~d5kZh?H+!?q|8N; zB+?7XFHV93z5A`AK;zCW{hwk*V;*o926tn-Bk8kI)HjgHPuReg{ffq5%V7qRTY6zJ z8Pp`m-wg--?2ZtqWn@sh&{7+r?S_+Gg5AM>FPubb3;_Ti8)yJn1M``VqG!y4#?RLP9)V|YfB^DBjH7{E0lO2o7Hh7fk(QpYvxS9} zWC5#|lvuKbrd~n5g}i}GL5c-~aB_k{F)ZK0LXrUpKB@wKFw7B=rS!me(AslK!gZ<6 ziE0_h&1U*?3m5Q#=1nn=6V=8^N{|EXWD|pqRIuzsfiu`HGtuG@Vk>$4hO>SPG;UjgqvQL2I)=wzBm3;!VTk#3`e@fENzWa;% zx3d4Dv5y_N8dO4wbyC-;m`r8`pZY;UMNsWsGI{AuHI@Fuevac*;xD~u0O{`M!vCDA zz7cEyV0sk*q{G-C96M!3j~&dQ^8(j6D~-?M$1(5 zWq1mMtL6cgIVl)Wz%p{dry?lcY_CU`QnEj9D| zUQEq_kALoeDhj}Xz`{R8)PcaqzuxzIpd<^aKab${OGn-PM5JVzO%$G-r9IChZ-o3U zv!I8@#Z*x>ge{5jd8@BqrmZV5o0C7H&m>I27`nhT-|8D=g)&Pr7DvQL6{IGnXmzGq zu;ZlVuE)roSDmrcYNO)*p#VS!kw47LgA55_2UL)H@w5Od8~f2F6cTw-IIkh+s*%cx zEM+iqK^N)!32Wa ztjd|Q8b~c2T|EOM6Ekpoqxr1~kpK-d^B;$k`pnGyCv1Y${@ov-hE1qy@yXGM3f|Mm zbKjfFx*x}}XDJU?{KFPF&6q>{4d34!QB24AF?7saR{IHW_C77oXB z85^w3onx~ID)@YV+nqv`lmBpkH3-mI*mxUMsuQZ2Wb$;m%|MjzqPf^;yMqILDTabW zD_K#bNEnDBD-@y_T86GD6DVVhyB+j;SHXixCeXItl(u_DETy%cl4@?R5+~YMLx9;Gj8x$0DHR>5SEd>6_J&AtM;$3IU7)f?lbGtKxDPCUvM7XU^3J zC*?F+@zO&OQY+sSzf`K2ee>>)o9&$~O$(}n_H0`Js$M206{6%1loc`#s=L>AN>qa^ z1T0+lo*FLMX1FiC&2;uDML#)sT03%bw^-(cbjsd{>e}A;=0W}AZ>IGbpSFo74`w#T zUKj{h(%-%A?_IB8t1GU))*?jf*|xqs7m}3LV{O z`qWFy_>sx?dhelg002>v=!6lwWO&t>Ra8_6s)UL#y2Af*N?}U5t*@Tx%j{t}SYKP+9e*=nJw`$P zu&X(mC~kRB(7ns*E#j(}jJU<9uK9iB155N!$NT)+vdSr*o$13ld=HKV-ZD3%HF(-| z{_*|$aWjv8=}i6dzWiEgmBB=xuEA?S95|*g8bZGTC}?p^qPX>8H0lj8W??suIF}c2 z`*QhCe}v5vs7srcrVjv~mIL?-Oquc~-zEuTUV^FUV2yNl%oD>$xw{WC8X8in#PK8n zRNf$5YDfYT1}Bq?pv^-9eKlmY^edt9x6f}|A$IZZC-kDRUp%>8MHFA28>Ijm@9gOj z%tHd@ahcWO7h>ZNno(NqyWd>IaaBv{zGA1vl^W5!v2fiM<<{%x&QGe%UHotsH9H!> zJooZh@+=dYX(c~o+j=iOUGq$$*f!j?^{4cnSdzTYOnPPlP1h)oor^caq;w!Iq}rzO z(jh^>-bM#WXM_w7y7YJEfRkV;!qCdqWyx8b8WnZ4xj7Y_b6OfbfaHxPqMHc>K70jv z5T{fIaYnWH^XB}JjEL{^g6LrM0mkJC_J4clEP1kxv< zqmyIx;rJWNb6$3}`RrZ?d(GafznnR3k`DWz8ee~~)_Z}Nw5B^@Xj^`QOV#E|kGD1P z9ZBRu#i_P8LEd3aTt2Cc-)(IeS4kYe@Wh%9{oH$Xd%1}$k!_`nQxOU3U<6;$(lLt9aPIgG=~>ltqFjU}6Bd3gkH6C+zminy}PND-Zkl$9dsf~J`w ziMf?fMj<{iPRuX+URgteISdl`R<=y<*iU~S6=(ADUpQapn^5~bRC?78-ShC^?AWGM z_O})Cp{J&^v-P5pJ3Kr(=ICa|>H8B*H%`TE)|OkDe> z=fP zY)wP`?#@)=S3~vm!}nzBCS8xGytGPBzA_?n@YGU8=+HZZz=DUPMPnMDN2Ch}_M*KrwBDZ`UX^pm5aAuPxSTBU3L%K8qpT;)jP%vB@- zu_UJNka}>v_J_pSiy#va-~@z{Y-eoWh)bNhYg7eR)ga){F14*S7apwWUv}?AieK zEF4JsX3j#+om_5#U}nNmBXE;G1lnQZa0g#ePzf2u$by^=ZpyL>3ZNApd>N$`tE6jL zZWT+UFJRXeV>Z@|^Xi7^{5_aWDsMOXkPK!9%`AYJskd9pLX zef+ZKjXP(rJ$m8$DB$|5orJ=~ngjWww#30qgjua%ox7Xm?2Gn%X}+la&pKFGKkn@Jg{YLDGqbPm713PfGaZt;Rj^wcr~yJf$#x5f;UM(e~C?pRvQ|9@zD1_^8lt>C?WPq3@*aV zPN24hK@U4s@Q714XXs%O&|gQDYNB*d=7RmlC<1s2$*Lb}2wB48ii(Oj@Gw>a&T|QP zxVCS8^5Bj})Yu%1yKDW}~N;WY( zb8fAyTeJ*BUKkY#r{nU{Cd6ygR3BFqcxPWPE=bQix%SPm(>rT(g=u0N+l!H`Ss&Tq z5LvmIS?!s2@VsNnGt4*E>i(=GY}JTNxiQZ4J!<%SiO-JjKwNvSGbJ6EROQg54+v2Z z8R&i4rtmT=QCS0d3yC~d1~>6DBy+VVt`-uT*kbY8p_ zFY;ioB!}pxgMc=+$9IUO4w>E6zH&aUU89~$E?m6dpcXa#s8A+lOgmZniv*AF?e`_3 zu%gx?TwcZ9mPg;VQ+iCj?y9~VH(q2+5GXx2VMXWMch{6H@ugEOYW=KpT{iDAo9f%2 zt~K0Uu`$(b>Ai+P9nkT6yjQ=SB z^3Di4RJUzMUUAfs}PPinmL=n?Kw^;6||gFLGu}$Bzhni?F8YeIBg8!(XK$- zHi4SADJ3ORG7@{*xCxMDS1OgjVCzrGt{`~_TS@`eB9sD zsPPnewK8G9!@Rmilq4Q|fkle{IBxVuW>>=0j!Q_^;c_A_W{A*^civ2^dMV^2Up@Y& z(tlR}7iZd&FJIQneA7jcV-*r7*7lMo>iwlJ9dtaGd8Dq9HoEV@7d0kQT+!00QIT_$ zQ}ccQ25&h_#`XA-XU6Mh+J_3zoGP#@NG7F?H4Z>li_exA z#z%E`E2$1I=p4yWl`uEJt7h9+RS9V-Cx2(o4foNZzxA0N!kwFnDH?IeEmERLjleMG ze)E=I=8)bfm=%MZpcUe(Zu}B|Tzm`>W+iE2qjpYZOmSCw$-0A5cAE6|gMJWGz>Hiz zYFl=c!UNyx;J2QNzw{)y=GWVcpZ50cmFtCWnW!#~llm?#hb**hu8docuXSYdSKf`A zcHi5dSRaRNKE>Xa@w@h_Kk@5U&`ZI?^OUSFriy3%hQ!__?Eh33niKZ9Vp_M_^&&Xw z{bvT?FF+$26jd-$0S#&}j(&L|kb7%x{`>Ne$<4Wq*`I4)mwqjO3c`wo(Cji`!v%s= z$`TrYeOehUj&rYQg_D*1!tqy%2@K5^sst7l*=VX(i+%te6J;msmdb?+P{CrC5_KJ@0)^}4t46+2Zf*4Gc$lT@%h^Q=Oz2d~^`hBL|#2wHV08w}1lbBlM!_Q;k~pjaL#%vePGEeAnh^T-enf2b>nZ6= zr|6iDLVxT`-N>pgyKC(&o$}D=-Iu)g{5}Tmu4lSyOwN82n78(w`jwEV`XOC#P0grj(pwTY3gsaFK~x7cE3&Gq)s!0X_m9S*SpyA z*iDD8!R&jRtUPHver72d{ZUb>Eg`9?M^mGY{@K+U$b8bemV-n&K4>Jkjk61u3S!cg z`HTE4%guP{1UWQC9Ha?u>^M6eOG^|=lK_=;pW_{y^g17YDNY7IgFWNgY`-zL{wu(A zAauk{*3C1U?@`-xHyOko%hCO=PebKZhK5(3Rtqn$B*~`l{oFpGC@k5OoL}gAk&{Nb z-p{(_^YvZEXF0awq!wY-d>f5L*s=Kq-Sb`^^}{7U@cPHYH+;)8IFGrCp!rM{rqWd9 zMZ0BJ?r;Pff%8Nm>0Z;p2R_Oq6N4E8m~@I7$JNY8UFl}5Mm=MNza?Ekji9RX+c*Pl zGc+&n00x1P^OEDKz>SRw@<~Y*I!Z`EmD5t-Bqf}=d2@9UEu6s1E)b2%8?!=ELe0M8 zePj=9mGvawE=$q8HyK!N+4)@D`6*q_+7|lJ&qcqI2gO;}4mKxt4cM^qVy5=@72{Ua zD!w+=8hmFNKHdBtVw!9y<7u(jq_leJWDD zYr*W8`rLu_L&Mm|?v5fj^egALC6<=hyKaxZY>oYt)Ak(gV$Q~+8t8UGgDmwz8S~BH zuOvfc=aMt(P~Rhqh(lYbMtR&8zBxV?NTCvL@p|#FhbQzWD3Vd)5JH)g}j2s zN*ru-Y#C+bhQBY@-_)wN5L|zVM+Ny6d1n1TMzRz6xUHh)m`a9Mh<4&EP_{Qj; zG6STn+GD*8iM>7)#ILPQfR|;p09JhQk)GI>b6?jJ zH}N$Avw?*!Cflj2ceYpj_C9UjaNO%W)%D?JiSG6W>Z*^Rd{v6}*K3ckf=JzT?F=)u z%57_`$(Y=NyM(=AL3`M`g2)+kac*Ub!2_l_SKaGm3+*`uL7y93hn<+@K=Z`^>Qxxk z4g~{_bOZK-ii1P;rIE2wk}1Kwf^rDY^1gJ(5jU~}Rv-nRS~Qj;ZpBWcWLA<+()U_< z{hH{<_IEX5i&9_2Gh0n zymC~>+J=29AQ9T_^2R5vW+^dk&g$!gh_2f;GHpM{&K3$=n@)T0Q;H5&ae%#{i)Gly z0%Sx`QGq;JbIl@0>)b10E=n4AjANmX1CEJ_33nL>b-FBfSsX?KaFq{XWcet%9Q~Hj z%>I~VFJ7~9UerCmc{4QXaRsL(x|EKAgTTq2!>Suowt;?;4}}{yeLU-nrETJ3tve{W!TF*+=9qDjT-LwrEz#?yNDkY(ip6SIZ$*HMfsbOKD zhNh~XL{Rfs>I{-0B{}3mDMHAY4ZB=3nYYia!X%4mr2{f8x|A#sjiF%jSf${sQaaFR zd>&@P%JvL{EfOd*KkE0srt$|rs#Eg*aM~i1%6`Yl!7Qd*X4>=_C9C_5Tp+=nt)X*ARMRu01IuO9I%@Il4wpKE0zj^**L$6w zSsCaTy_>ye?dmNvve~opEq~k;+WB_d9ezw$khf z53@!vK~BZeZ8ULs(R%bNw}2*Q^GL{Oqb3!YZqWl3wo!j5Gqi#%6IvFM9*J#fHQ_ic zhcJdzfRK-@u^>k|b9E!O!knR$*hgCwnuDTuYD^IAPVx*QZAXdJP6bVx%zaJ%ZrJ^U zZ6n*?SF8oHx40D$5&rR^%j<%`luh$TH@EU0igz|#jcOmN9=*I+dTDavF7$+c`H459 zxHPej;iBlW)F=~fq4?|%d#h)x)1B9}+WehernbM>eEZb;?$oD7Ddqf$_JE(W`+<9f zS80c;YvH|RjPkTWx6w%YMJD4zl&jhHyj&qWn*G``nNt8@Xjl&Jz^eH^R~?w{S>mV= zPZx;s068q0p6p5ut*zxsrG>2bWJ{T6d~D>N$nqwKM@TATo3v!u1<^(jl%+J8q{)*< z+<55~`^G2h7E{kK^0jKN*v(r%43l^6W4X<}OWu`)X5Nzuc9Y|4eA4e)W(e&}%4}TO ze=hV`Z284b2dw|@C$;*Br?-SR2bV7n#t$sJshX%F*&WKQ0OlKnZ)Vwg-ZM)d#@gB@ zLY35qu5_yBSd3_CFe$aD_^PM>aGrWV^CIqRjpVC`dn)Y_&Upy{FH&w}4%ojP(Lnbh zm|ZF0PMy|Ank&dif!B4yX2q6}aF$HX&mgSDiEGAnfjhDhqV=~u!COMol_6rI9le#x zton%zccOW11*1_M(R_u%_!b_`6GS)`#Rjj^!X-*(`Xqlbta{U^<}0+sOMx%#9xq1W zPbS`GD;Dl}`HbFUm_r?9Qb`oe*w@?0yEZMu{R+d-*E5IkP8l>hvOxLKpBzz>cJkEu z1S^qw{c(kTJG+oaU2Wg0u=nl!0*&&|Mc-`{Xse}sYd-09!Cfu1NYbcx!Ei=|S2b`y zHDhI2;Ip!_#-4c*kWEBuvL6jC3=_agfwu2;=5$WH8@RAz&+f@2W2Bgvz|awsIOr$- z*@yv-2HBNmV@gGfiLshs1f7|q@S8OTeh3`?rsXn(QVtI_CSYx>OyiRl0H3&FR5khtA8buFaU+5EwPHH*~j~RuB@Fo(CI#~ zAVT>C1*25rEnkkB2HCpLAq<_N=yP^K7YBE~dQJb_^X&-_U0yn!M>E&s^Xs$Aub6M_ z1Lm1izs4VE9iqeR+N-(0|M|8mm2@F@;$B`Fl&?r*RP+?pB)PLSN$4lx2wW=dWXjn+0&`W$akMwo32K`pY{r>Y__NUiR`q>p$;pa-cFzy5%2v1L z?w?wyu^oqcmST0JouA*W+2;Z5ZIdnOKI8yO*GtL_$TU~Xf(2gKjX!K zCHyuSsZOG$CxRSVR^;g6of_GVcdul%YSu-wLC__HF;5OQ54-~(BL@lX<)I{Th91H* zIE0~u4zpgW68ZA|$Kb7JGE?Z6eBWezbPI1LNH*~yf(dRi?j@>IQFZC1zR4F$S<-hS zdJ2WPmG2i-?HxA>O&MMYC@ZULtAB8~$n#m1q|aT$FeleO(jsQSig;q+tm5RZ{Dw+R zm0tPcr(cP+9}M4lt@yJg-1~8-j*@Xx&fodyvDW0Op03)@3jFDhFzWlC!_ETs9?2uf zHCbV8jtP7jw;=N|ap$7kalr>kN_za^&0qCmzyJ#&3QR`{-~#{NoMS>Y&E<5PF}CJ+ zF6bb{p?4@)PsUOk2Mi8{Kyw($m9Z2$5(~u0YRTgIN^q8T!rPL!#Wl( z8FIg3P8ulpMEyL(GAZKsEWj)A-nn~v?_W(+ZOLA`(y!s{X!okpsbq&k&w#m7l#^I{ z(u3?-4A`p~)3bBYL5mokWQo%<5@^^4XhFPD*5V3?do+XiH0bN$z`ePPvl%=p*U$sU zxsHvDmbiOh5z1CAxE4htrIqEf6226Idod1O79C8MD8j{ZLJ&W1e!7|l4XbWnSg><0 zGV16kqgZRJoZJcY_9$VMN;kAQO(cA{kCkM+Qfo#UntyP~%3dR$WP;6?@212ie=;u? zgv>vBZMy%{I`C!L>P`lS&)1T4+s=E!f z*T|A?ko(PukSdp&iV9b>Dj0bH?J68NTeFxVY#uI_wGyp^9mF_;ShIuL?5prnKJlM&fzavt)v8Xqzc7w|D#Gyx z`7dABHM)LKsll%F(eVkBz(*$MBAQE8o^C5~ zAh1V>0vVnfI{h6lrf;k|--4s?6}DInmMgNOONQhI#HCYmB0~g}OK?T*M6?H7N(ziq zxR}qr%Gc3Bc}7FcON)lSWhH-`)^jj2d9QwF_klj%IX0tYfb=@$(0Jn)m*SO@JA;;Y z9!4!2y+;eMo_N;O@m}e*XNS$Dk{}tVP;!j@Oy1sl_j-Fr;T==;TT9w6s(LS^Pa;Mv z?e4y*kx37Et!A2$4BM7o4?m&4weLMJu$7=)kz<%=H}oNH_37P;Ukf|8p5jAj?Ym+d zXm*1c@Pz1Eh)VGBawNw$W9~7U=~*x+9{;()$OyDOsOASXum+RBdBE@(S^AP#lnj|r zSBI8~bbv)lMH=VeC#rIIqcJ*WJd0DO%Bo*ee9nF1;W>5Z-Ye!4yz=@tXr@*g601rIZpS?b6++ev>ke7c)rm-c?&1j?!-C$iSWJz0M+EdR=sXD85(aGnd>w3*q7e(L`j z$!m17F;S<9>2+s80~1OXVb-+bBe|vtVP_k->Rr^4&z$5(N0<;!23-XZ(F4z~fT@xW zbn#&r4>J#)fzUF?3TsrU6sDP2A$xp>?zHs-M9v+l;3zD_+qbq+S<& zfrY>Xg*HgCX4d+Tsyem@H#<%Yzx3YU9)z2=uAiD$DaSZpjTQ-L=;abH z=Rc+r6rG0unGKy5ahrC2{rX(y%Fhd-Myjuuk5V{;Ugf& zwor9Z3#KasxBVQg86R`DzC#%# z&9UB_RyzJZdS}%5Wak^xg_zOF*Pr4qDva|5_xI?w&a}3grdZJ(JSxA@djIR!{+4a! znggz#)yK0IoD^!nRP!VZ=G^^DHRm#=g|M)-eDlSgcnIm70c#Y zERATxp>{Lv-AK6P5|rOuG^JcMU$!DFjP7wc-(f}^7+!LE!wdv#f`?Kd6}o6k9h6rY z(LEZ~lFmvd2v_qc^yz+|1;d zZS%)-Ee{3&VDhDs5#3oHz-x6#mSfEfs5;)Bg!1B!7bX#dBN)6aR8_bhtAJ-5D(JvS z@L`a1SpZr%E~dh&xkw2L9@~UE#V8F8*=yzV)c1epugada4pu|0$2IePVTEc!frm6VpMny9L;nFf?fXq~-8< zft3L`-yCtn^n;N!=ERXgP(($T{PkKuTor^>ML}4arvaZH+R|FZtW091aj~J*)w!6? zL;rK2Jdyy%4Zcqo!!yLXwcuh2gwW7XO&X5S;7}r*)QF>VJ*H{^A0Fzl5EYUZu$D;t z&=(%~LVDY_6LPVsRf5k$#wxrg9%Z3{(^4FLaCS%9tn-HyR71y&Ktq#9vHD?rN7-xl zY-;$d*tsFho3H}c>Z+CK-Tua1`FjCBM=ssAvB9o(S_iIfaV-DXKexC4%S`&d^@%cESD_J#EivV z%RNEQk26z>_jg=aK@N;G1e-U4U@~7AUkR=P%YImpa`+AeUBO%!OBmzBpsw>N!iEUU zSP?u2n#WAD6bET=9G@7SNEDj ziXcJsDvNmY^oBW#LSQAjc>++L$=AudteQmStjHfe<4=AjdK?%^Zcu(&O9v+Q?cbOk zHMpym)xwW?;tWkZ7Ck&=^9)1Ia@{TSKMmcb)0C>;o%{B9di3hGVez%Z6s4S=m#pFh>%H66_EqMse3%sps>?r90)%I^8Das-pt!Fqx45G z7!-h*d&SPAwN>sWG5*?LXE)9MzFM$zT4vPm+u{WuhvNPxYR4&#qVrV?qKHaJK;CL1 zzFw;ReW&52p)BJ|(dgpG_4n%gJzw_Noqe|8wM;3`SNT0-y2W7Hfq5CF5`bxdhM}l$ z{4@X*du7UrR#;MFXD!V_R4APqA_R~e4t&ay!ub1j#6dDCQkayA8R#(yp~=OuOZO0c zSegvh{P0|*5S_=Uc=%nf?5b~*C*%ly%s{)Ke_W>AmOhc?oe}5RIZ?M}K9OMNnf_I- z)tfWiv-h^V68;Kb^XM; zjORi8f&av#CugJeG=B!|uLMT!S&v<_RoS87{vD; z51zxt`cKmV8bpf9p{hf@wrc7w|RN%wq%Vj9m+Vwk1 z@*BuuX(8lDkw}ckB(xL zuX;8#m=|rv!y&HwrT((xLi|;Auaw#Mn-jh=CF`*nnGfaW&Iis4egWvWw5KhtUYw7M z9W7nDc#NjJEKyVZbUw!2|M>H=QUcREpPs3egBMeZE`oEk`$UF@a4p6b@W|*>3}7VT zYzCeg-DPw(w`J30USbzzVmc2(R^p(C04C6aascFT1H>X;BegqClV;j0E#(!J=#nf+ zLW^#rERQ7(0;(Bp{&H2<;%29iu~buf7lyZK?vejbZfPPB7Mi0}x*v7n6<&Mp?t!3d zq_;-)x_r>*iSEXGF`Z@7FAt_hJ{7sc>k40mx4isS`Q){md1vC6!_(Ne8g(CRUO9|n zrAAMA=Rv%Eox2XEBr?99RtTtr_Oe@#@r>_!ozW@#-W0Sz|K6JO9im?%t@*{w3)|Da z4!iH2@h?4$eHWx zTlLY}bJhiqxtZWQm>44^?k>NtC~)6;M?WxWcK@B$J5R#$b$CtoSzerZD$m_}Vn!(? z8}wdDd82!u{6|BhrM~Hm2PPgcGZz!EDY9h!>6+?p-a8(@23=7-=L2FM`p%>~v0YMF z$~8seG7|KySC}TfIO^l~Mn;y@7Z%&Ek12JSm;kTOFf;&0p!;*X=AYaar+ipZv4tqR zXE7DJNww(;i5jIEQ{cf41dd)BDuQdlR^;GaF${=86o)j9P>_SKR5EO=lA5-weNfs{F?5P@J=VvGLX|*QUUC2PY^mbe)C$h6FGEYFqlj zd&0}^;$!+u)|3a)t75ipl-^EVVAx+WOJ+al^RLBUUW}6h z1xQ*&5P1xm`X>kCR8Xw}@yMzIZYObZDlkX=$boArOW;G7wqTWXjhh&?JyFKC+B&7_ zPz;$D!sd~ZQdr=36wb$00>h$9Fd{H)GjouaSXm%&tZY7VW%wq zyEg-O?4}Q=q%Z9yUhql83`H+~(0p|9aXWtX;q)5DtJ*_h*168({#?h@+BsXdN?hGc z+a6hFYV};!(Kqs|mMVwR@0}AAIxfHeeIbp81X7X$j9aWCR{^Cy;PxF7ucRI}c61B_&l! zkQGL!eomj_b{PZgbK0yO&|xPc`;;E}Wb~D*;-Tc!)_zr=nz0|fs=m+_Ri)2qaIO8oYyWgGjv3fr z%s106rW4WP*xUG5_PQpsLUJmfTm{`VDbS*j1GggTUL-5K+!E>_S6b~KiF0spPmFLJ za|m;A57U*yqVwGR1W=Y`a5qSq6q$U%9L;Ol7m7wxl-g~ouJib`u;{$CzodK5Y!`#V z5{HMPFB60wtlUhekVOhmZ{J(+Ml_4rrq9>#!&39O7|cq|xsbVfwnZ5yn+7|qD{ODE ze!Vj!&(|AWNr368!2M{MrZ+kss~z7B`beV{5`F(*^-@{&&o89ay9vT&p8ZekmTTtb z!s^a0l!O0pV7_@udHetop!9lGLHym{hcpDilg@tu7~sF70AAbEZSgG3Y)miy`nfoB z0IaPX(0t!n{rdeiE4YtggBf<(q<8>2HyY^t@gu@cp2buE;{piSQLPT}147Sc5H$#- zX%dHJA80TWEFE*hz@V(kjyQLaE*Pw}IfQ{BhAfrSCqYXlyP=Uf%OCRJewj!keLE9n z!y6*hAu|=G<5hA;qrzJnzw@=a>#8@er=|q$85%)I$err(jw7-nmy*4Bcx_G&*dH?3 zM@E-tsrz-BI=ia=`sV6e_v1~p5n^>8;qUBLBKB`YJk=_i zqIjV|MWs9}RRr_}sfo(+O0vzwL3`A)5hR*S7%RfEU+9w}l5)`IWgsBT6NZ6ULQr{l zbBK%;uX#gJV&z+a$r~1#XQtSGrj|IdVLdYx)Vr z=xL;$Y+9|}X04%4Da8Tcx?yyPQ}Fqr+jWy7A~icV?vAfSAAA|_KtJ4hH?q_J&YVYT z70I{5<|Qy!u(#~8`qlT0;H1@pf#KQf*0Wna`a^8sGj#bOZFlA8{MnL6l`eDdQu}JIjbCurs6|Vw z)vP)TaCBUmkhZl%iKwmDm-6 z*6Zmr@1%IO-hK75dh%jXdmmnx5gtzqK(IKa?%=g_5Tj^rlo<$&bTaN8u^r3iRgYDMu*)T zJb!jrvpJ_#z+Aeh2pY|YehlMdwQ}{jt)Z;jCL{IB7imI4dFf|6HDq>||>_$om#?l1^5gBUXy zxyNCb8+vq_Cwt(9tjc5(5jRp)Amb@af|G_yN8elWYO)J30J~Vc@4j85uyOO?LlvW8 zT}zJY&`^Td=QoaABG3{>X}4;F88_iOrBU}af;vwvLv`&EHdj3w@#NX*e&3SZ;;AbN zu8gN^OQoe}O!d@KI;sYA&$?PSN2Dh0u^e03vR#^bmaMtH-gyCa{YlS#H@X> zbz}K1@!U5Enz%<2#N2*Nng;8|!AZRi*)p27<$36X`di!?Gn zd6)9uX@}7~NSDT~B!u)y; z*~;(#YU;fMq5cCu{CD)%EVhn;+>BowPdts}OTLYtc0L(~g9=P*)zi zzM&D?;Raoy)&EsZ-`lpDlO2x!HXazu6|~5MFQeg7OvkGIxou}Ieuf>BNaNUg7Cwz~ z<3XQ;Z>%NSe=srT?K+mivQyOQ8+dxu33wg<_ue@%Ks$xj1&nn)02h@5SY;(0H6=IV z=g@O(qo|C`0svGckCbK=O779O&36>^j}|I}_X#kU;W&C!$wVxH;DrD!z$%Gx6Fwf@ zB)KM5OMYQh)2BBm5Pcru_xq^vzJj*%R=5u}sg!D7N4{5!HF6*K52vM@^hJ!!`=zPM z&55;ZMpjE~*F@Lnq?7K#b%MspyJy3;OFg-VYQOn~4*cCp9iRAgA^|Z9LG3vmV_WDo zAFUO-Q*M{}`>x9G;XlC*Un^w-ew;pba5hKpf;nts+OCNopXHugXXTrF?yiaxOA+R@ z6Ej~@x5&xS1sB}IXo!gjYv4_b?E9dMBd-ib$g1$7$&jblosVW)mDSoKkFP=R`@Y^DMYcK{s>5P)M6zm?!~fsjn|jqQOZ((`qBzXGhda zV>d1(B1u<=xv_~X^hi(g_ejNAmThFdO`9G|H()R(e%m_-omF^&KH3WX@^PJ6Clxv@ zq#Ge<$EMF>2OWmv;~oo2l})s@pY5y>9+>#FlXZW}y{E+?>UVJQl{&}qn#b}>Gw)C` z!FS$dl_NV|IclyVmqN+l@@pVFXx3A1L#{D+*CM*^4rOd2wCUI>4mCZ-vp~rZnh4>& z#Q;P&2g|ftdg!;AfTycl+x)^2tQ9XtFxQ@w7+_0TwAb|t?jC9sI~CQWWdAJ1_jKR=B6Kf07(2RCG%AE3e{*i7R{B=J&lrtI7u*wvnGC2xdL;p z|LGcQragUwW+o}bu~;u5A{w98)TmT%saP`;pVp+R0Fs6p>v7QP#3v963C;!^`(PO< zSc<+=ld^&!E%1~v*a7-04N|SBS2p>2sR*d5INOJxTG=ZUonvB}>U%zRuZDwPCdK6A zO-_Cu8_zr+bT6#`rl2l|md-db&+~IfYd~=kPMlloVc*NJZa-WQSMtKaNXRjxcqTj8 zKl{Dj)cA#!j`-h(Hy#hqR)}9a^L(d3{m?hxx*y*zHPL$~3}7z-I$rRjqxrKKkpS*z z)Bo>%NN!i^B`8>i1veB}P@n`W4dAW<{I5-+QYk9FG#=`!Ml1t1&UwI{s-#d;0QU_3 zK8k}P5Mwd~xk}8W6TXTBgTpGlW-v@_@X{ZI2f6{9zVR0a%}UMEGd6FPe>_fYCALh* zf1K~*re{w?VY~%cN;J42w-!ViUb+gDo^OpNJM{912Lz1dwCd3EM;^*Pa~ z@u|Juq(${5dRenWearLNzJC|o?&*b`J>_V1ofYM{;2Y+k%AwV{y;IlGf83%xOjj0| z`|g?=6MF4Tv@6{+_Y83JNtsXiJW(x=2OX`($iNDo2R@NUN@XwHYb!ugku=I>wRY(iUa88?V9W-GC%4U z`PnySN$%}8&)u2tZc4+~V5<8k#&7zotBr4@{!r1=Cm<$m?vLuzz(?=C7E2E)vm8!8NQ|vIPGD2}b4Zot zVzK7qhu~HY5(d@=1n=FtrN5SOJ=Ip{C{*~Lz{Sa9=c5pkSUAQ%GKZxSX%;t-y9IL`(k>x875Tv1>nG)iw>`p0clau4A^n(X(K^?U% zqQ9@D1xXzn$milg6xfw?hl&HhxsnPy0SA+#tYFL6fnH zO&`*I-s+EB+1=BKReOGG^$&UCO>A4bYV7aYvAe3B4nB7K@9@p9CVb9DBc8?oJ@@ua z1Hj%M7pI_DQr9I5MCR-30H)Clqwme18Zk4!XBN=mItVgk-L?Uj)!ZiUvi~df=N@T! zoGD(k`Ua>;Pd$2+J$9gyr3tJkICFS|*a8fn8cj)o)7qqfnL~bDm$MotghDW@PGWoE z@QphhUfYNtg|C}tUw*bSB^e|SM!fw3lTXQ-X=IjK#phR~QFSJw0?ExDbgkyg?48za zLOxVl@w+thdkkZ-6kVShPc>{Rz&h3O?~>2j^1*?+pt?cblY4`{@vU<1hAMT7JUNKB zc{erJd{{8!({mq@9 z9lP<-jB|h>ZsqCN8D{>Ute}N_#s2;IZJTrv4YrH;+j8#5z!4tiawHq+n2s2%BlJxW zU`&e%5F&NW!J=jl#c3&z2iz@!#LWv^eQA^HAXVh6qbT&5KuQgTLM>tS6s6 zIeI|&*P&|`nNTES&0Q-c6l)B)XO&}(D@N>G-Z!YMQqOE)fth$c;cFc7x!d8RwY+RM(K zXc|k(9rv+VC6(q@N|bI8<=$?bfBL86!M}234BKBfSMGa-zo8n<9jP|ig#31ew&|?J z{==c|*^!*)fn{X+PV021Jg3^P^?NRXft`ncb|yxKsI}EM)_!~6OF4M7vpB$TalLu) zgyWQXcz9;_KxU7}lOJ)awu;_sw-|rAU3wdKe6;Je%Gg{-fWxGOFFb6+waLir<67wn zGmqA-zBIdL%^6{~Tc>~`Qh78Zqm#{GM5UZ;Ni-nvFtGS!e4|#qq;itYJ6Y^n7ns_T z%1s7c3URE5P;M?vSorFgv~afpS*EEG$2P90z$sse?0K0lg!6J1nk-3tA}0XL!OHge zcC;4s)hvaa+-cvg0_T~eWs%dt;hwrYJPJCEoh?Y)hsHhL+QvWHLv9#h6$Cg+kV;9S zM5lG?AVEExR5c#Wpf4{Z&)VuxxJ^df$OB&o{F-;0prll2fp(xRXUgtt8W7-R8Sd2cc(Y*nq z#@VaHOo3yanNVXdRZXuV6b&qFAj9z7M_7pg803A4ljNqiZRut3u@(EkojH1_kVHNR znlbwqt3B5@`>M(DoHuVInIx$8hDYPPVvd#fGH*h3_joB9+Lee8H+fuC=0FLrUAQu= z-K6DM^%mBMDnPEu$uS&D`Qo;bGqGB5Z4SM>QehzZYWMDJ&BwR&1h38ZJ`UVOll!mg z9R}0GSH5DvKPn3l`9hzW^+q@I`{t3;aHZ$$($O9E;*H?OgZrqv!tp;oYF;igkP=&% zmL`j;PNVVL$-`K4&|rl_1;xeZos)~D>Dkoe;Rf{dpPC^NW0*z)D|DC$gF;v!)uT5J z7NBgNl;_)y9my{`moJqMOB-RPLdFPEx!Q4PSsTMmFPM6|o;=rgb^7;b`h;b!Le4Q@ zPHvIHa5D?|h?2d}^(l+_lfxg|hKhh&;N|3S5%%BB=jMT5wI#C0jGv6AT;s8XSXwhf z$hOM8U?L4o46cS_B`T}br&BQ)G)We&i3G!QjqK{rZi63-RT!C=Ue*Q+E>UE=@l#QO zRlzlh+TI6;3gj1dZJQf|eg%cioh`qzmjAj^&P3IXchdjb4{b=fFW(%V@Awd4+4>Mg zmJ$qixTY0#CU{>y`1gEenmIl1`DM>vXa1xETtA<>!`X~pEH=yUG!+7e(^3pfLO_>y zHZ!Lu09?3S5YKF8z9=pY?nFLi5b~0biq=PKbIz{0(#rO<>0I17lopjxNI;PBUL2)Z zT0RM%jKvH`DHePu!K&eeSOlUT7rGp}tc9$$u~kH|IPzL(dB83-A9UQ*0~!=$OI?zKzL=ZH~ZH7JvAjG6VT??;5O(yS@7n5 z<8ET{u(9g+s7BaqsR-YbTHZRO*~6RRd+Jd|!JU;SLp67OMZWCTEJpcu9ApGBnzR=G zo@xq9=gYleO9&l0X0=OSABZ@2t3y-j`#tvWg<<)hKijwHsqk%c6e+xpXazdh6LbI} zai`Me|MyMkh>CPfW5sod@uK)rS5+TBZ?E6{2pgJUq$-@G)23nRjn+nLio6M;?knr!d&* zoJMpMj=pnvL+<-SGULpX`QG9%^!Q5`#GQ9-4pLfZNE9~Eg7o-0$JK`l-YMA)=y`*vYi;8%ADS1^Le2?Yg#vu*gd}| zs?jwiKMd424&FN_x2qHLjqos1I%_{INcvX37|=l~&xpZBGwk{zjUa zyA7=yn@XvNi5^>E3;CUI9$6ovX4iGmf!;RxAzQvbxYqjctKrvQ#~6P;KA*%0e0tbY z1)So5>HsppA4Qm4G>Dd3nW0TSp0xsZ*kHAqDMk7Jt8OvbtRqaR4b#)r=xe@BBquK< z&nk+mI&o5_63S7H#yew?{16DO$qWI3Ab>PDI{{5L!|Wvqi_sNSE_9rHIJy*492pgp z`KM0fpt41*uBx*DT3pR5E7A42<^KJZGOFZ<$8<#n`a9LTIRu~mOB z(f3vyYd6KNvTACoHbre-ok^(KKkGj2_1pK_$jixFsmx{Re%Q!?a=+gnBbw#!c5;?J zUfx^!T9CY=3|mP!751~|x`GN&qzP6`anTGfMr9d=ESNaow=*J=@4eL-n949*1iQi} z?|Nl>dwY*G6e&;>tdFL`<-n{OmRQ5mHL~o{96LI^J=h|8dS|0Z$%1*uU58A5j1Rb-^}h4?B&*JA>A^*DKwI-Pl&O25?UpXr zH>FMpl$PCsR{I_K-`1Aaw(i0w$_F7 zmrQilr5Ttik16SMUDby|Al_IfA@CIo4nrN0SbJ^ORnH_IY@#%I8+k01ay=`N z_P5`D%U$+%3~`y6QBkVUb#{j^flm;r^c`_eu0^V^iPDpMW%Lr4?M~(5X=HMipQV@+zGMdnyV$x&y zDEd*vuc$+!CubA52RP}vq*SF_sU`C^r}VB~@8akzT*v}0n+m?ZBQEHr=F-t{pIB7BQOx-(p2aaLuoheP>9L4l zGVYIg@(JIiRpT%1QO`f`{kzw?y08}CDQF~WAEjvB&@#HM(JH?!*qOH2(fnl3T%}lB zfA^bg{r=FarViXfRs70vU>qrFep=rgsCOt=Qnpssy2zuVRS!PIpo0U(ouXNgDQQ*P z+XApKO9j(aG#Z1sz{SBKtRF<+MnYFDY`BD~38mllEg?1B$^{3UN~ z(D!g-h?5ExhJ_2kQqM(&_>bq}=lv6sPGtt}1yJ_QPS);c&uh;C4&N7I7;ZVmMal$k zb^#abb+3GkALE6YfTcuGL^vvffYn5>t@n--sMj^I8|iCo7Qp&j@{w_r1{JQgwcc?v zWKAgo3Mn*r|KuuprEwBd2uGiuC}`l;(huT#GO)!Xq%HOL2`G7VmByCh7I5Rt*lQw9 zen!2;S9V-^dE0JEp3@3=P*K>Qx%v6<3mf_C7tcXP^L(Ee*P;szBY*Sy2UizAtc6DOIGnL+qKEnEx3L3QiECM!xAXPjiE;Wxn&D8!DEDG}AHxt>vV|bT1_v@}u#*XrKzjc-(pN&nQ(^^N7@#T6#26Yp1WRHo0Y!dOPKrfA%`lNl6%yEv-DgKDvS-JRy5?JEoWxQuq?&4MBA z`y1ZI%U^%v4kzHtt@rBwn5$nsUbuXAn6G%h(R1mpr++iO_YGA68#=tSaiMy4y^sEi zu41HK*gx!9?lB&gGdub2-3$|pwh%JrSX;~!J+4l%G*TDST$csteswZgxn5?m<+>_V zFd_;@?_9l+iqd}%}H%S@>6CkqV#`1GZahAP8 z@}&r6lnJ#q)>(#4F5dGmJFs-t=E8RmoiBskvdwx3hQ8PZIU%lgWoK(uMk^&ri}rbtZo= zy)un8teb5xaCD%r)9D*2Ln^?s!&XP!&kL}PH#?07bh4X9 zZ1cajk@8G{gAka-&L?=k{WcB-$oHM_05pVv4~zPi1Cjd zdH1B##~!xlLJI%gJUw_mA)QuJK$glAdG#!GX~8YrU*_+q+{-u9k6iz>g_IZNZYHW92OZv6q%Y{RC~VxoET%6E)Wo?J{&cwwLHjJD`3Z}{sM zm&f8H;`YB>QV||AS}xKK+`60CY`DVVa0YY)q+*z^gE=|YD^|r)w{&C;&yRk3#d6?e zd^+bkh&8fJ6+K#z|4#;zFkR)WtN@mv>YJ5%txSBtsY`K`nbN4rc~zmleppq}Lcx=T zEGLu(?Ji}}1&h|VgP*m>KN$4W&^p+Tg_Ceyv3Tyny$3&td7eqqe_@wbwTc%H8n+j7 z&SZ`!dkg!v4omMv2iLaTS8rAKd7G}%I`%hdS^4gCWCOe7nv_B`dxO=mh(vqoGyC6R z!FN5y{S}h8OfT*o-uYer;MCx?v3t9+pLISjwU10W%8cL4U7Gih-%LvroKJ#DequQF zU5bI#l|e->V&xh!n^_=(6wkbEwXM2)z7fM9Kz3lbXiv2pgJn}Y4nZZ z)%SZtBH`7GO%;Fdj`n22<(R_6>fS7FL7KX23>`4VkvTt#MKr!^Z!a?J6mZJ>4Jz;B zTq}KLlF5XeZ-JPmM9KZ&nYNH3USLiLbgC~Zbxr*5YpAmNV$St)^-zHl1`_%6*(VCX5JeKdL1wQlC$19NYJ8cv-jOefOwKJBpOB35SC5y8QU4*XO zU%m6MeRg2`z;R}9?DtcR58e!iL+LfMCpd`4k2T|iZ*2Ri749aC%KOt3a@}%6rd`iu zSdEG+xXye7dCF-TLC#unmpotpCWU>E^FTLz>xh2L-futA0{pxObO_V>08@sNp;;Mq zR!?>yVopJkgYoH8FoAw+;S(qrfwfKS{}`CjK$Ci+P-RVfKGr)nKQWn*OHvQP5x~BE zB3c5q>eKHGj={@@~F{Bm<&Xj5HAnrPP0^kL~)My;_u z*;o=40a%Ei_7TleSXHx3ZOmC5ieGiD;SV6#L8x+e|6D7e>e^4XxcpmR=1*K1~; zuoq%jC7@y4n3Enwx385_h_a&}fD`s~V+_DA4qPu#=ZR)y?$WZz)TOEuFCegIWA#nm zb;nG`uzC*aB}Z8z6e1NYr&7SesuP}OR-da5mxf)X%_%7(`A00g@m>f71A=05 z?d**uCwioV>`PmZ<+;D@Wt*=aZoYmqWNf(PIc86~k+QZ&Z#ox}MSWiV%+u!X8{Lm! zuk1&VfZ^M)?c@#KsTu#sdE&Vh z>E|(NKN)}5MY;y()uzv+XF9tY?A^Q{`gD8R=g@1(<%PNSkIiSBXNN?W+kS=?4uz)I z{EVgYMy8DE02hJ%W;7RbG*cHnk@FemLbA#6R;_ZpGU#$VJ%acg{V)N{7LwRhA!xUm zDN>h=N+C^7CleCnurwhU);Y$B5sSy>k7qvGtE_&Ib-z}Wi$9ghC=fq(I*Q{r{z|i5 zipbI}vcjROUFV5Tu}l0Cx8ZX1S;fw&pA#GC#ZInP7JA#w_PBD5x=?siH{8?5wfnc9 zq5e7x{KTL^XsgHPrul2X6@wNcqz@LR4znwwvKphNe|$czHk179-`{ts75);bfDWK!C**B35YC|Uo1;|USIw$Vodry# zgBK_aff5P$#R>xA;;fdE<3dPgA1@@c9g&dWj5HZ>2gN}G7LDN7)lb4Adc{jEp$Le6 zuK~5MR2S*14+VT^kHDBZCi>RxPYG_WqCPgKN^#Ujn^y)x?3zPn=vUK|MpJHy-s5r1 z{rX76%ECBH;oQkI759v72}DtX{rlIyh79a>z9j8*+GaXVoQ>wrF}F@^{&O4?j?Qej z8c&;6!=6m<8G1_}@;A21K74d2IrBmGDc~$4(0h64Ozj@#`Mj^k6s(0wVz2#2pL+*-(%}9X9Ff@wcsLxC^>AKsUf>>ipcIcL zkhl_Kyda^vWf8cQFL1%ig^Q%I%CBsD?_fz3%*kGuc;g!RnsI$nA@R=|>iO4a#3 zeP*vZU+uWa$Te#O#1aCrc<=coRY=wbl9qOPuR_E*<;_%;d%b3s@MC5}2JiK`B8R^M zUUOp3wukGFhcx~FehutjyO~a-)8Yfl`YdlS339azb=qIJ^C#24sN-w1Rr(<1^Q6XH zq3G71OGWEKGb3Npxq_KTT@Y9Nt98j`u2K-fKX6$!EjG z?Ic(lf{cT$ZN+P*{-)1#xqtnR3fLWqi)BsDGydRdh}k<6r&f8byA*DcZ4pE^lPZ|C zqux7VC=q$*YvG|P*W|`sn`^uIYKPIjy7PaZp7BdJVL3I;X~duhea!mey}Kbh59yOC zsHEiSNg>pRT#k!qT;v7E^CMacXyzWx&uco206{mEq>LI9QZfZM-no@EB#`Jm=_3J0 z3&CNqaZ^?NBup3TQ(+LHo$Cog=|}>?$9Q*EeT;5Abo+9`$hLQ~Pn;;E`x!CP$|)F$ z{&H*4^s`jaOTBRc9^;I;HueYbn#xjYW7i+;EDXLrsmFt*WboRmutQlSe0 zU7^fl{tKb_HllZuHiEUp64_1Y(ZycvAj0tOr}|wf>k1TVxJN_h0%JxjVLJp*F^DA6pYHuBvP zt5&DaUf=rRP`cL8YmsvvW`nBf@YS9Bm9in6>Kj%x;WB-2W`7V`i-EM0r~|`_TALiLV}@e|Ifhu+yfs0NJ>)1*dNF_*s3#z+ar&ufWxOswk0b~^=7IKLr_l;c z>S)>^D+^%3!e=Z@7D7`ip1>-f!20AoX+pX@J~a?|c095XG)d#T`a3IpZX|Z5uu?2G!jc=8QYE>8|N@0TN)^w|JBPI z+Y&j;Va(ti4JD&#a$xpt_=zqPrV*siTJq~~0PF-pWPY4h$gKS3KO^Q{SG%uDy;s-$ z(z8G^8I4~P9{;qc+oc5rF`rSqi+*xP{DKo8!yqIx#}xgP!ELUUspv)f)g)3Wh)@N8 zfUXXV8ipbO?pz~xdv%!E>h%=Y|0Kt-@i--5rn%bRWpt^FT0ua)MvKQ+3`A#x{u$U) zJNuLgw2wxy;+4r`eKuFQAU!1F7}lTCgY^)XLzy7zbrlp8DZ@E9mg-7OK8njmxfBAC zCy2wi*eBsw9+w&z1BAu0_q&JWhlB3Rzp4oeg=X^c6ZrrV&Sxc7hWxZ&AE>xZ#Lrrzd@pq=!(yZbX^ zYA%y9*syMhyV?PMkd~utasp)r$|lt`RYh1&J(3Dx;$g5Hg|j+waDcg=Xe5U)KRGw{ zcrI)lLE-NaQiat_vSIcMQeEb=MW&X1-N(kKOUzm(D}0DZ_SC>P9YpoMNxgDPPQ8T6 zB|s5SR4lTq9mUrhyigQ_q;HhDi>&tPDUe-|{5B?|(ZM_#J`Z1NJi2RNLwz^-GpHh6 zhNj1yckRckhBJHdX^4yJh0TU=;LjC_g3T1o=HOq2aa(t2#F@a0U#|tPx$h~wP_KFw z{M=gq7)-Pj%FNRJQq{sze%x0{xm&515hBb282*p+!JPW}|D+GLqaXz%xNiexj^lJF zU6{@a3Lji_20HU0o$>GP?(glxhmjeBBO|fDF2iR*Od-NxXo%Z9Jvk( zp`Zkioa~F`Ui(k;#$u09-aO1?S~P-x6;^2q!)8OlS1+VKnFEF$V3a2!kv>Y$)f}u4 z2}eXSh!RS~Vazt>KboL72G*td7_qt*2%kpDLFM=2G8m94tou#>`GAN9sti^Kl77O3 zz1x1w6k0u7iyWEp9o+O>4_Gj?;)?o*T+`8qFt4i5_|V+1CJ~4NGwg())3+Cj-d^I? zl=vq!9Iw-p{xG1t7;V^nACMA_k*KLN8fG21BJuV`O)Fz&NRGlW{pIB3gq@gI4JzUC zsqZq6-@4s$o4;2w7;kyZHFn!7eie(rDvewHpg7XkUjVM`w z=}|S7ARMCFlctGG!9p!{$WY}z342$s3y=np^0U_@pK%1_P2QS_ox&?(C{FxY;UV1e zqQM$Pc(dbSTHJLiUBei%fBKMK+?8pl{pDj@EcKTVKv!e`hnz%3g||j0XFMQgV(^wA z4%?>ERf_oyc+OPqqU+i67W!G8>T~|NJEy1zx8L??%8DSb>jgh$fdJ;dpVVv$DjqJnDKIFK^dXW^reSW`Hr zw7#wYln7AJAi^XT1JUaQPeFV0Soav6fG}YoIxeYlCE}oW zq%ZGTgGDfdry$_c$~|Ay8!(d@@oI*{MVPBBy2IjVsxLztwu_bH#DwDA9n-O>_Ja?L zA0K~qX12QVC~m3G(=~$kVI{Xlp2PKTdp>))6GQhO-o+JT(#Fo5=4)ecZW({aawmAt zj^kN#LT?ZA3l@c}`m z3e+qF6OU^MDSp#8%ezO=*I(nMq!BUtpt*qXHmV|IFZey-KXGH@x?zs`qLLV7;>%6U z?d}<2FB_X24butSv$A_pxF83ZT#K2^>4gP$d~ot~%&16G z>(BJ{D)AtkT!Bcvxrj2}2S4!S#yc#afXt_Is160(5G4;08u<-p}t-xMSub(wm_){ zFfhgtlTU)d)QQPyO}(mP_27{KL@=DHo{Yv2Skxy!*pQtFctS1?gXz)XWZ}1VX?gf0 z05*Rs?Mc$PnP^XD28fitYUyK``uddywa@skDv9y92#%dj=#8;g^2$e=2~7iFslc&y{11C``B$L$HF`DZYSc9XO(N@6I3qPtQ?TtBp!D$Ww0 zG{2KH!rht|lnK`5Y8Tzr`H1F-_!NZ29(gWnLEyi=M|h(DiuJju9(ba2bXwt9Z(nKd zi4=%A;ioo^1jMD?x-u>-%Bqldff^Ipd~kJWNO^g46pOr)ehXz;^4Yn^->r zGkh~sqqp;+l9s8NsA;7dfM+d(cY#MQy$BWVUR@zguuSD;&ix8pL2NeNewJtgK*_{3 z^%*@A;djgq9}1b$W!Ui%a!ld`7z2an<;UShetOSv8IWM}uk;U)5AX{6!G{KiUj)MH z&_-8z#h+?$V^7@(e}aJTn%)r4teifaE|0g3)_e)O_O$t1_b(p^$YM?g&n^1GVx(rt z(QG1hT#DzMAt@R2e71M(Ll4&YG`LO?H(1MngT5+gKA9Ztdz_M-yeFrou^>2u=p~St zMs!A-P$(3kMAMwa3NH+_peCgXWr}!;N&++L)gbS~DUHOWq)Gd7&;Gs{ty%t!2d5CS z9>)LH`_QDZ{#FKS$fK;rj8)?gI=ic-k3(Hk)73;o z4?Ei|k2LLw!?iH$>TRJ6UgiIsZ8-~rqAjw8vf~yz3O%~39Ud1?$N~&zSmESse+okU+!Rx4=OX92CHW1Q^N>qhTk}J|Oe8u>oJfRhl!d-}@rLbP|7h zT%iUn?*v=KkIXsBwzT{{OBveP+d;W|UE9E5)b^jotms zwPf66b9Grgl26&K@8fd?*tOwwuS#gZ#N8isRbQd{i zf$%->(s>MD${^5sb3p+AaY+COAz`5)lP$3Zvu&eLAlJ9}u-`H!zKP$aH3}V&lvZ>nf zyps2)U424MEr+A^l#~6*8%FtW&t7kO&zs(UdeifUniD`)_H?hQjt^tppKU1^al*ht z#$nJJ#aJ%9Kxixi-GNo0&%G;n_3&*+|J^B@#QUicyJZ~S+u_l+ZQS3h%%0wWO@(ha z`xQJ3NS)|RYz9h-w87)~95nRNab78UR%iaWEb=&WRVuO@6~4cpAM zLziM@FTkP(p@x4+8g(j{h!Cm1{VrgR0gC(6aT_1a(8dIsP6uhHM&_I;zTDO(si63iOFI(%{zFWz z)#o;$>{7-odQ{hKOjFvSBUk}-tTz^ehV&?Lt>WUi)MFFys5m$QkL*GrM=StpB`!u$ z$Od849Ub1Fdf~0v=9lBq<8XFy)_N!JR3wkrV&+d4-;P(k5$ABYhgd_`WQTFSZ0%B`00uB|k$bK>(0ATS3`1?+r7ws8foffT~O( zG&4DNoRxtAVkGT%`p;V3S$-J&xu?GeGYma5`jM`(H9#pI} z+a}okdX0Vf_VCwZhk>0LZ^IhR`Q0@@e#Uv^uFmFRI5#$A;X;oM@78-0H_ z?$BLeGHntR?I9FNux_RdlXQnkrYcAqfJ1&6R&C8^U8x=%=dG=2rQ2ZQ;1z#QJ*8d= z$=TyBk9(3>g*QVeqtJvJ`~KM1lcJh1YyKN0HaTR0QDR;z2hg;3Ap z;TT3D!RR@P#}cu!{A^$|crtkFooSVs4Otnh9P1?9?;AWN!Wyuy*J}MEK`?(eRcC5c zu8j>g-M4e9a<{F6U$A#=d@w?IE0Hpq_u;jEbX1sCcO_*1}sjxp_}MKu=F3`f=2Ql~!TSCtZEOB0hxLc+>U z3KtJ+mn*(ETyIlwY_qmLXTt?Vqsihhc~+e=!X?3hOPc}bzh(NMy!HvmscUDRIL^z7 z&z;$OaVs4OzkcEJ6p$%=azXywIf=aLeUh+n^U^b^0E0UhGH>#>dJpcsUKM|AD|eT% zy6{f1IN2lnuhy`XTj069z}vH1nY2d_8K&(d1NnaXRq&cdp96MX7LRG89&|)xoxH>S zB$iV8XFa>EE07H;;&}$7%=Cgs$n=8jSX!#mqwbV#ZUYHw8&+g9%>`;s`ecgtsUTZzNs^{%*%m?K8 zgaoz>J%fHa*s-sO3`IIM!5oXPydD36nk)7Im)$MzP})~Q1D#h Date: Mon, 23 Jul 2018 10:12:45 +0200 Subject: [PATCH 074/403] Fixes disabled limb examine (#39209) Limbs disabled by stamina damage no longer appear as broken and mangled. --- code/modules/mob/living/carbon/human/examine.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 6e9b4fdca1..a6f901e695 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -144,8 +144,13 @@ for(var/X in disabled) var/obj/item/bodypart/BP = X - var/more_brute = BP.brute_dam >= BP.burn_dam - msg += "[capitalize(t_his)] [BP.name] is [more_brute ? "broken and mangled" : "burnt and blistered"]!\n" + var/damage_text + if(!(BP.get_damage(include_stamina = FALSE) >= BP.max_damage)) //Stamina is disabling the limb + damage_text = "limp and lifeless" + else + var/more_brute = BP.brute_dam >= BP.burn_dam + damage_text = more_brute ? "broken and mangled" : "burnt and blistered" + msg += "[capitalize(t_his)] [BP.name] is [damage_text]!\n" //stores missing limbs var/l_limbs_missing = 0 From 6ef68004e9ffffbbb5cf55d586a28ce40cf3db10 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 23 Jul 2018 01:12:49 -0700 Subject: [PATCH 075/403] Automatic changelog generation for PR #39209 [ci skip] --- html/changelogs/AutoChangeLog-pr-39209.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39209.yml diff --git a/html/changelogs/AutoChangeLog-pr-39209.yml b/html/changelogs/AutoChangeLog-pr-39209.yml new file mode 100644 index 0000000000..a3743f2c0e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39209.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - bugfix: "Limbs disabled by stamina damage no longer appear as broken and mangled." From da97d3f9c283d21f013c9035688a8abcb528c7f4 Mon Sep 17 00:00:00 2001 From: WJohn Date: Mon, 23 Jul 2018 06:14:47 -0400 Subject: [PATCH 076/403] Fixes box corner decals for shuttles. (#39281) --- .../lavaland_surface_syndicate_base1.dmm | 8 ++++---- .../RandomRuins/SpaceRuins/caravanambush.dmm | 8 ++++---- _maps/shuttles/ruin_caravan_victim.dmm | 14 +++++++------- icons/turf/decals.dmi | Bin 55235 -> 55233 bytes 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 8813d563d0..c4702b1924 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -341,7 +341,7 @@ /area/ruin/unpowered/syndicate_lava_base/cargo) "dM" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 1 + dir = 8 }, /obj/structure/closet/crate, /obj/item/storage/box/donkpockets{ @@ -454,7 +454,7 @@ /area/ruin/unpowered/syndicate_lava_base/chemistry) "ea" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 8 + dir = 1 }, /obj/structure/closet/crate/secure/weapon{ req_access_txt = "150" @@ -1063,7 +1063,7 @@ /area/ruin/unpowered/syndicate_lava_base/cargo) "eY" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 1 + dir = 8 }, /obj/structure/closet/crate, /obj/item/storage/box/donkpockets{ @@ -1285,7 +1285,7 @@ /area/ruin/unpowered/syndicate_lava_base/cargo) "fs" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 8 + dir = 1 }, /obj/structure/closet/crate, /obj/item/storage/box/stockparts/deluxe, diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index e2a14dbc82..763f143287 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -612,7 +612,7 @@ /area/shuttle/caravan/freighter3) "hy" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 1 + dir = 8 }, /mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper{ environment_smash = 0; @@ -732,7 +732,7 @@ /area/shuttle/caravan/freighter3) "ib" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 8 + dir = 1 }, /obj/structure/closet/crate/secure/plasma, /obj/item/tank/internals/plasma/full, @@ -938,7 +938,7 @@ /area/shuttle/caravan/freighter2) "iX" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 1 + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/airless/dark, @@ -1014,7 +1014,7 @@ /area/shuttle/caravan/freighter2) "jr" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 8 + dir = 1 }, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/secure/weapon, diff --git a/_maps/shuttles/ruin_caravan_victim.dmm b/_maps/shuttles/ruin_caravan_victim.dmm index aa42b30b9f..4766b3a822 100644 --- a/_maps/shuttles/ruin_caravan_victim.dmm +++ b/_maps/shuttles/ruin_caravan_victim.dmm @@ -350,7 +350,7 @@ /area/shuttle/caravan/freighter1) "tg" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 8 + dir = 1 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/airless/dark, @@ -398,7 +398,7 @@ /area/shuttle/caravan/freighter1) "xz" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 1 + dir = 8 }, /turf/open/floor/plasteel/airless{ icon_state = "damaged5" @@ -527,7 +527,7 @@ /area/shuttle/caravan/freighter1) "DQ" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 1 + dir = 8 }, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -942,7 +942,7 @@ /area/shuttle/caravan/freighter1) "WX" = ( /obj/effect/turf_decal/box/white/corners{ - dir = 8 + dir = 1 }, /obj/structure/closet/crate, /obj/item/stack/sheet/plasteel/twenty, @@ -1097,7 +1097,7 @@ ss CU ZZ hk -RI +Sn NY "} (8,1,1) = {" @@ -1108,7 +1108,7 @@ uA Fv sf VT -Sn +RI hk AX Xh @@ -1189,7 +1189,7 @@ El zy fD fD -fD +Jv "} (15,1,1) = {" El diff --git a/icons/turf/decals.dmi b/icons/turf/decals.dmi index bcd5dcdf9594884838e46a234a1adcaee8a9ef61..263623ef3acb98f6c8b8820a1e486d3c14ba436d 100644 GIT binary patch delta 8956 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¬>Sp9;KEgHe7>!!Gr+)Q9nB^VAlcfcWXXM zva=vd)x8aS5eg~X>Pfgm#P|+d7n-NlQp#gh-mAA{?$a^{ygxc(OY)Gm|oK zVYZzwe zS9L_zDJnD@KU&5WuW~Waz@)Bn^rlzm3`$nurv@z}bL1EOe0;*Er>Dna9_F|{e?EU# z|GnF#KkE8#zFi(TANg`AFyiJ^Lr-BMKPXDY%#Ry$>PvUr0|Hd4!h8Y(HspDCi2l3+ z0#KWb4(QJ2W(RGd+W3{8t`~F$`oFBzJM$0+r(C};cYj;;d|v0ddPYV^9dsf<<#hG* z%FyUnAid^(H041GZ_kF#?eW19_nw|>HaXM{_XX3KdRr3L6uX=W@q-qgBB4x~xf{@+ z{G+N$*3M$pM~Ufl0bnUVC%hdT0vtxsAII}(Z+f)Qokw7jS}bprJ0_c8HFM(@6fOhj zLJ7CKyW9TSZHkkP@cd#;aC|`lXoZ}cds~lrd3k|2J@%-7{-g#)_QK&E(%sL`&*|d* r{NbLpj_yOnU*KB-J5&REh`^CR8ogejm2~tQ82D)2($y$dvkv-S3JnBW delta 8854 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 UDKHz$0s~)$`lfotx{i_m1y>#xi2wiq From de298a3adc901365b10d386d4d7f5e718ce5161e Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 23 Jul 2018 03:14:50 -0700 Subject: [PATCH 077/403] Automatic changelog generation for PR #39281 [ci skip] --- html/changelogs/AutoChangeLog-pr-39281.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39281.yml diff --git a/html/changelogs/AutoChangeLog-pr-39281.yml b/html/changelogs/AutoChangeLog-pr-39281.yml new file mode 100644 index 0000000000..449fb2e9b7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39281.yml @@ -0,0 +1,4 @@ +author: "WJohnston" +delete-after: True +changes: + - bugfix: "Fixed corner decals rotating incorrectly in the small caravan freighter." From 74bda160b97739cb9159dd19fe0800a5526735c0 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Mon, 23 Jul 2018 03:15:07 -0700 Subject: [PATCH 078/403] Add mapping icon states for rocks (#39280) --- icons/obj/flora/rocks.dmi | Bin 3452 -> 4102 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/flora/rocks.dmi b/icons/obj/flora/rocks.dmi index f2d49ec016ebc489dfb99ea77edde1abd27d4507..3e7ea031266ef017863bd53db5dc969e51ae717f 100644 GIT binary patch literal 4102 zcmV+h5c%(kP)V=-0C=30&@m5!Fcbvfx&0LvNSuffaAiTzFhGnB&QGb*P-)UO`1c(;8bjIM zOTN3|VwCl%=}@%|pM|kfPbje8?l}9%-VG>_XPgZ}z6R$X>&OWdh!o9a^kcMn#91$m zMS+yFr=hp-_b*MuX|_m9vZNfYH1(nOsI)dXXr&F#q=a)KGuyJFJ8Qu$af7_@;wH>XHwM-)RjA*&tFOn zuvjdf&gb)&{7&Jo*XtjFhYFZZr|^9rz=PnZy5l&;X0y5Bv8MZ){?p~M9mD(6w{f-G z&z?Oyym;|q^3g{h9kMJtB0&^IhcFD``+luIBcFAsenVw9&``M({r_UIxUn6-*=%m+ z^Z84fhSvmni5jfe>mOgY9%IE-37u#oeBe#1&$0}&+01xMp65>Y25{u}42=kt8h|*p z@KtKsBuv*CswFKb9&@RiuuU4zW^XJcdc^HyT zn-!OHZf|c3JH6ZOI;(JP(tu-unvMb9_zhW>4T=C(6Tr$0!w`9%V>+D{UOw^s`SXbj z33yBs!nAGm>~7|H-dk(aPT*p(cuIn5vuA=lz74uGCr1R(f@ehnb`PJyk=1H-NYk{` z>Q<}O;hS&1xdBkT+epwhtV}JHBuP;w;Gw(OW#ERwHT_4Sz837Hu6NQF@>#ohw!#Ex z!2>uFyp6TGAout82NMbI?(SZuX^M|O{@B@bc6mtM8_}@!Hrm1_+%E57g7hu&JV%sgz0pO&p-dXvQQ)e z``~$=S9ZDHc9?`eo6So84!@HGvgcM;Urup=wpguJhd7QA1OdML?z@}$eE!mfVA>QA zzcv!ccnDj&4npZ3NtR`}y}d<}Bu+lUmFdS*JUZIAxRQ!Hk+IMevkEf{o``E zoVaQi+B!0wzr9TZF;$Q)-zIzjN6|_-Dtmo>UG#)(_c@e}8`@c%XTIb-7$l zvMehGnvx`e@B2kdXhVX>Ffe0-3@T}Xvw_TJv%+~NQDoz>p=1Im{BOVgwviw3#TQ>3 zvMehmgmmFY&=&wuQh|I(7aJ!9-u1xDXPHzfzV0;|D!b+yCKI4h^}Hn~kX?8UDwufW+cnvu)19TG}{_N9F4uAOLUjP7q|Jz>y z^iKrf;h6~CD1heLwnPBg4djR%`<_XX6y7E$fb`*znS>8KJf!R*0%oUBP8gw9;_))T z)dd0GdH21dhXV9Z1im>j_CfP$SSh^g)EK8(b+8C|f@dkX@1Oc8lxlYcSq#vh}(JHYv0%n&%qk zZQ|s0Wv)nqfB);B0D$*D`0%V6;Zzg^sB++F-`S7nJ5a7bsYzu2^%R?1H>je^+GG%> ztAN*MpMG+9|APETa7+X){- zd;VSqgLLH#?V(4!L9e5MBZd#-XyAxn4@Lr<2}2!?90_m+TzWNg6-EN|j3Emj7zxlT z9>W6BkpMkGFAyCnMgnvQI(b_7b;IYE#25$Y2y#TVj~Pg&`^oQZuYYoyxDn>GHT>){ zF|)~i_?Z)Txq7PY1ecKjCqfT?$))LCU7w$Iwl&TVlryE9l3?@!PJo<3PvH|xign7m zJ^B)Qnm!4ZrYV9Tz;3r|JzahzKugF4wI;jY#r3(uhm&fU`v7<_0dmeH9nGdB7zxk< zrd2!gGuP?a(&4#WpThS%uTb~Q(!zJ!{hN?rBtS#RE?%DJm3IFW_0L70%)sh-UO@tF z64?9Td4M|!MglZ|UZXEnKcQQHnwk*rA-|wyC3#Q0pRo8SRKm#!BD!XC8aqE{vpn7f+tl?@Z-jn`@DJVqf zY%02Zw&CcjOHWl=tyYKCYBjj2QdGxM5K`^S7N}c)5Cli-^j%3n;me&^WCBcioYn%f z+02;VIF4hhGdgMj1E~7h4U<{9Oc}aNAPJb|1Spfh1`40hf^Pykj;7SL#FIm+5qB zbVg0*k0wBXQ8<|xn}HXZvCK5dQ#)bORFDLcF#5h#!e`EA{h#iJa&H1to*+4hBz=La zEX#~1oD1^dE(txZ&lb+I>ArSVnHk5|B#=aqyRX#=U;bA&$i(Aqa@FM?H2{uN%a~L& zVD<%Uh~v1}+lambiC}|G_&iq&pM*3ymXdHJf=LTpy?XTuuU@^f7OHQY;^lS;Run5( zt6WoymlZ4XCozCSA?){iBuP>b!PE_`5<>@TDROw#E+hxEPl%p^HtX-kvG=bLz*cL3~rFWXd%Alp#)_yGmxFNt3dgs(a zZLf7H;rEdrpl?+60)ikYh`{N|k`R1xOE=QGU2w|2JWbD&f|sLVeN}$n`2o&_+QA?SpK7kI|1GzRX+jpDeeZ(8 zko)NZ-E0n3bw7D8`B|;(Li0I)&!Vlx458f<|?_cA_xL(w_B&{^t~yCYkmOT?d!`7b%l}% zFvZwi^W4bRZ%SY0at*m@H1H*1$E}b9X9Iz6AEs%53!!U$xkVsa>bUH01 zFOu;CS34+80qrV-O>Ifg#r%PDZyMMejkl;KkO0nUwr0JcdMRKa~RoYX2=XGp@MRJ9&j9{9G zY`ecLKY%O;pONNCFDGYy02>L0f)W9=_bw}%f|M1hL%k*~0JxE0u~7 zY!ClBn)ehq-fnh2pTCqgResjTnvOHY<4v=P^w2Ja%0VAl4_b|zhRa!ZvfkR}5AF*k z0>}xBKshSM-{}y_(62m3GF|tRT}YsRqgJpzfIMfpTuz$A{i}peGr%Y)pUg_S8wrIwK2fpROLuq7GvN?8{)4e_=K3HOyBfRNW~`uu(4 z$OquNoZ%xgWiTGVV=-0C=30&@m5!Fc5~}x&0MiAaNo_z_km4h5=%9a6X|*L#0XE;NN%XXbiaB zCC}aP#we;&-J)!2K1=JAnIN#=?l^m^-VYGSGtLI7o`VmI^W-H2B26<{(~T~VIO~;l z5J)+DSbE7Yf75h5%@%1vjrhctGYGW)8MjMMWY3aROdwL_S6I@I;x&#{(W|HpD zPj_;p{c?lgmIDO$Gk=V#Em1Z#{{WTUj80_c8(sha41GyNK~#90?Onfb+{hLFR&d2l z02Zl8yEE?q6$iwNwG$P_*6LLF5Aa_gxU<)__O3hVFA!X-*iQ8##oi@^e83e8+%a83 zRw-yCWXlxtM?KCC$sw03$}&G-vA;;p%=_lOdGqGiXti2lK!13&>jUQVdB)F+#bUJU z^S(A5@PibjDdzKeHl0qvSJ^Y>^LfVCE}4CZ7_C;TT#&x+7yeXh^n54jX4?z%s-{pOLHsSkzsiu%16HRJzZI_TT=mH18O(8a$4Lr|-=Xr%1EnjLakK-7g z=OKzBc%Fwij<+&P;m2{DUtgsORhp!GZXf7UlMnbn+qMw|0fHca@B8q5e~XaKW>ctf zNs_>}Z8(kt+qRJ;2>@U=n?2(-Q55B`AP4{e9?4@H`Iy3eVAjL`fng z!Z1V-1X!=vld@}wHf_(<)zwJ8t1u$xW=;-KLYQStZdvzUu3`FY+f42D@$qqXb#*m*_3BlYB*_*D z^Z7jUJP)>Q*S2S}tYz0#x}loFjnw~Vv)QEV`t^D}IXXJJrfK?2&^2nXTCF~Qu07g} zR|%bHBYfbt)+b2<$8ogRq-koDHh`^mPt8lE2FM5MZZ<`gna~N-w3d~jt?*5r>$)xg zz_P5;{4xK8Buw=ZYYE`PXqV;9%jGgVIXT&j8%WYsvu1M7bUMxLbPxock)WDXU|XQN zYk=E!BT16N^`$0=h4DNOX_{g@9_L;TadL7pG9iK2G$E{Qt*5)2rsFMcpoeRgt zi}#xdu&!~JHEtI)5w2-^c_@N{kK-7M*JAvzDo{IY+eVcJxULJ!vH;xJZ_~!KOekIC zeV@oRAP53@o(FcwfNnEyYWt}nmSw?pU2Ha+yysa(!hIKX8FDX3dL3OC=HlWa3xWXS z@fh#lzpo^MUIcycG)*gAzAqg{{eZSuE|;0_`*2+smzS55qobp16M|J!L_9MLSj7+tQt|UDh{?=t6>^@+N0JRs_1oVES;DP2o z{bI2gB}tM8`l2X;ZQFU!uMG+JbwH?Kf++kCA3ii{2hPsUvLs3J0hun^5w-;Y3ei@2 zXzZO=kt+pm5*TZOcW>Y1&;I_0A6q}KFeEvhPVhjFEO<7=US3H0563<_}#Jjg|GD%1i6nesCBU*7Bh!OuB|$##^XKa^QyF8Q9Y0LEaz7F~Tr}9K5NEVm3t-MX)Rj&tJR*aH|zfG~y96 z%?^)RgV`7Y*m^HRn~;L&Nafvq8BZY@vXZFzpxI()lAl#{5u*71haX4p-oD8mKY5z} z)`o~ePne@jk^mVR-fT8FJUj&BJvwtEYaj*Kf`kIf;x9n4-_pdibk*4;3IG1rKLG&W zeEVG<3H`_4{|2C%h@60`26R53XADHiceMaglSrBxoNJ1@xQm)s(;%4c-nMx6_D%N9 zx8LFS-+sm8Cr|VKiwO~V8&DUzmBOzpfQ(G4aq*^TDx|v(Nl*iR|Ls@&;g5gHO`hX8 z+BQNZ;So@8B9#AYYck_X(tUi0pzvA7|NZwrS`vuIPo8d((0M3A*9Pn(xYsvkv)Qx1 z{^ifPHTdc0UnT$`f79WopMNQs_|6F^n<+s&6cU=WH4APK*EkNB7ikt9pBw-HUOX{VIai} zwFKyvTypL{XFNELQy_u&3?$T}azso{$|{@Qr)ou#B$!U8h@vPTn14v~`MXA`2FRLU zHMde-O)gE<&_>k5s11;lt5kt=-izZn`7{&~CFjHp(4*D_0k=z6bCV333<-|Gc=x-qO<3N(A%T;c|oVArx^g8pP%E>9 z2HdRp?<4&o8rm~<-ZyktRP8Eq7wCG~Qd0~X&@+11fKQ)3^_qU)>lX$M=o!6xL0>z1 z*MQ^Whd$@U>$wK|SNnG@x%)zpuCx0{Y(V{61sv1PsEj#$E|9-N5>5 z#@>3u>IT+d66)HjE-O-}1jx-+rSSU>cr}5Xh){J6KkrILXKtw6aYe29U2dQ))05x3 z+%Srh5!8yq?K36hxjSw0(1`}eE$;~8mtM^Th-n%8E?Q3~I( ztlZpiBPhP>((jrC3ZG`Su2U(uYcnCM)dCIKKvmiOUCd7$$8a1cKcSDisY~G#^uBl> z(9Kz26u#U(lP7e@mx?Hg;QPK&9vUyups-cbBNJ!s=RHl+prBdvDO^cHnx^nP58UEd zq6-qZmA{D=GdRWo`NC>PFwd?wY_Y znbn=#>tN~>7%$L}!q?e-;AX*wwEffq*L52SfyBy_H29K2m)k??jz?@tf-Z1acI=`G zS^IVFaoK%F3p7+4ue1Ag+f$k>*w6`pHeVJ>l0a=JOTUdKH1*_kM^?!^R;67@fNp6L z&4X^alC1R-wBb$70fjFQ6iSi=VHlRimvlYvU0h?fG1R~^OsCVlt>8U8|DdWtZqx{~ zi>_uwtpSn-xHp$w|YC_e-c|jVEr< z42EG?&%Y|Bd z!sorJ@L3^r4Z9>UilRzypi216o6fw*`*dLv9T9a)Ze?XrYb`Z^l}mbiWoAO4GWSKA}swR%fd)2lfdtpF^Q%cIdO99AEmn_tHJkCk5EUQ35U2jwsFokdGy+{+uu(ixbnx4hrCZZC}m+6wE|YPYev&j*hWaG_E^{8NmsV&j2hkZ`Al`Tg_@2mtV)<{H`L=) z Date: Mon, 23 Jul 2018 12:15:30 +0200 Subject: [PATCH 079/403] Unsets focus on mob Destroy. (#39286) --- code/modules/mob/mob.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 0f7f03f611..11dece55aa 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -4,6 +4,7 @@ GLOB.alive_mob_list -= src GLOB.all_clockwork_mobs -= src GLOB.mob_directory -= tag + focus = null for (var/alert in alerts) clear_alert(alert, TRUE) if(observers && observers.len) From 61e6f22414782852a934abddf2a7e30a25282f75 Mon Sep 17 00:00:00 2001 From: AnturK Date: Mon, 23 Jul 2018 12:16:24 +0200 Subject: [PATCH 080/403] Makes rapid fire mobs more configurable. (#39287) * Makes rapid fire mobs more configurable. * Better timing and comments. --- .../mob/living/simple_animal/hostile/hivebot.dm | 2 +- .../mob/living/simple_animal/hostile/hostile.dm | 11 ++++++----- .../mob/living/simple_animal/hostile/nanotrasen.dm | 2 +- .../mob/living/simple_animal/hostile/pirate.dm | 4 ++-- .../simple_animal/hostile/retaliate/spaceman.dm | 2 +- .../mob/living/simple_animal/hostile/russian.dm | 2 +- .../mob/living/simple_animal/hostile/syndicate.dm | 2 +- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 1a92e0b69f..3f0c468d26 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -48,7 +48,7 @@ icon_living = "ranged" icon_dead = "ranged" ranged = 1 - rapid = 1 + rapid = 3 retreat_distance = 5 minimum_distance = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 017af381f0..89b97b57c7 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -5,7 +5,8 @@ environment_smash = ENVIRONMENT_SMASH_STRUCTURES //Bitflags. Set to ENVIRONMENT_SMASH_STRUCTURES to break closets,tables,racks, etc; ENVIRONMENT_SMASH_WALLS for walls; ENVIRONMENT_SMASH_RWALLS for rwalls var/atom/target var/ranged = 0 - var/rapid = 0 + var/rapid = 0 //How many shots per volley. + var/rapid_fire_delay = 2 //Time between rapid fire shots var/projectiletype //set ONLY it and NULLIFY casingtype var, if we have ONLY projectile var/projectilesound var/casingtype //set ONLY it and NULLIFY projectiletype, if we have projectile IN CASING @@ -330,11 +331,11 @@ return visible_message("[src] [ranged_message] at [A]!") - if(rapid) + + if(rapid > 1) var/datum/callback/cb = CALLBACK(src, .proc/Shoot, A) - addtimer(cb, 1) - addtimer(cb, 4) - addtimer(cb, 6) + for(var/i in 1 to rapid) + addtimer(cb, (i - 1)*rapid_fire_delay) else Shoot(A) ranged_cooldown = world.time + ranged_cooldown_time diff --git a/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm b/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm index c02b9259b8..b170ae0574 100644 --- a/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm +++ b/code/modules/mob/living/simple_animal/hostile/nanotrasen.dm @@ -53,7 +53,7 @@ /mob/living/simple_animal/hostile/nanotrasen/ranged/smg icon_state = "nanotrasenrangedsmg" icon_living = "nanotrasenrangedsmg" - rapid = 1 + rapid = 3 casingtype = /obj/item/ammo_casing/c46x30mm projectilesound = 'sound/weapons/gunshot_smg.ogg' loot = list(/obj/item/gun/ballistic/automatic/wt550, diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 714d2c7e33..f76357de1b 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -47,7 +47,7 @@ icon_dead = "piratemelee_dead" projectilesound = 'sound/weapons/laser.ogg' ranged = 1 - rapid = 1 + rapid = 3 retreat_distance = 5 minimum_distance = 5 projectiletype = /obj/item/projectile/beam/laser @@ -72,7 +72,7 @@ icon_living = "piratespaceranged" projectilesound = 'sound/weapons/laser.ogg' ranged = 1 - rapid = 1 + rapid = 3 retreat_distance = 5 minimum_distance = 5 projectiletype = /obj/item/projectile/beam/laser diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm index 4e4849297c..a132503786 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/spaceman.dm @@ -64,7 +64,7 @@ icon_state = "nanotrasenrangedsmg" icon_living = "nanotrasenrangedsmg" vision_range = 9 - rapid = 1 + rapid = 3 ranged = 1 retreat_distance = 3 minimum_distance = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 988e340053..1b4067196d 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -62,7 +62,7 @@ icon_living = "russianofficer" maxHealth = 65 health = 65 - rapid = 1 + rapid = 3 casingtype = /obj/item/ammo_casing/c9mm loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged/officer, /obj/item/gun/ballistic/automatic/pistol/APS) diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 515914645e..0e4c7d9093 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -109,7 +109,7 @@ /mob/living/simple_animal/hostile/syndicate/ranged ranged = 1 - rapid = 1 + rapid = 3 retreat_distance = 5 minimum_distance = 5 icon_state = "syndicateranged" From fc647c653366dbc15519099c47c8a786cc95bfa1 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Mon, 23 Jul 2018 03:18:32 -0700 Subject: [PATCH 081/403] Allow using large cartridges on partially-full RCDs (#39275) --- code/game/objects/items/RCD.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index d17147eceb..6538ef9f3c 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -57,11 +57,14 @@ RLD var/loaded = 0 if(istype(W, /obj/item/rcd_ammo)) var/obj/item/rcd_ammo/R = W - if((matter + R.ammoamt) > max_matter) + var/load = min(R.ammoamt, max_matter - matter) + if(load <= 0) to_chat(user, "[src] can't hold any more matter-units!") return - qdel(W) - matter += R.ammoamt + R.ammoamt -= load + if(R.ammoamt <= 0) + qdel(R) + matter += load playsound(src.loc, 'sound/machines/click.ogg', 50, 1) loaded = 1 else if(istype(W, /obj/item/stack/sheet/metal) || istype(W, /obj/item/stack/sheet/glass)) From c493dd4298a0378dde8485cc3e9b543b20e38885 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 23 Jul 2018 03:18:35 -0700 Subject: [PATCH 082/403] Automatic changelog generation for PR #39275 [ci skip] --- html/changelogs/AutoChangeLog-pr-39275.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39275.yml diff --git a/html/changelogs/AutoChangeLog-pr-39275.yml b/html/changelogs/AutoChangeLog-pr-39275.yml new file mode 100644 index 0000000000..a72c788093 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39275.yml @@ -0,0 +1,4 @@ +author: "SpaceManiac" +delete-after: True +changes: + - tweak: "RCDs can now be loaded partially by compressed matter cartridges rather than always consuming the entire cartridge." From 81e074fdf87ce5d9ad587692f0929ad2b4846638 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 23 Jul 2018 19:31:31 +0000 Subject: [PATCH 083/403] Automatic changelog compile, [ci skip] --- html/changelog.html | 62 ++++++++++++++++++---- html/changelogs/.all_changelog.yml | 42 +++++++++++++++ html/changelogs/AutoChangeLog-pr-39193.yml | 7 --- html/changelogs/AutoChangeLog-pr-39209.yml | 4 -- html/changelogs/AutoChangeLog-pr-39229.yml | 4 -- html/changelogs/AutoChangeLog-pr-39230.yml | 4 -- html/changelogs/AutoChangeLog-pr-39235.yml | 4 -- html/changelogs/AutoChangeLog-pr-39240.yml | 4 -- html/changelogs/AutoChangeLog-pr-39243.yml | 4 -- html/changelogs/AutoChangeLog-pr-39248.yml | 4 -- html/changelogs/AutoChangeLog-pr-39257.yml | 4 -- html/changelogs/AutoChangeLog-pr-39262.yml | 4 -- html/changelogs/AutoChangeLog-pr-39263.yml | 4 -- html/changelogs/AutoChangeLog-pr-39264.yml | 4 -- html/changelogs/AutoChangeLog-pr-39269.yml | 4 -- html/changelogs/AutoChangeLog-pr-39275.yml | 4 -- html/changelogs/AutoChangeLog-pr-39281.yml | 4 -- html/changelogs/AutoChangeLog-pr-39300.yml | 5 -- 18 files changed, 94 insertions(+), 78 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-39193.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39209.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39229.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39230.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39235.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39240.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39243.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39248.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39257.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39262.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39263.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39264.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39269.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39275.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39281.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39300.yml diff --git a/html/changelog.html b/html/changelog.html index e891444a01..3d8501c775 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,58 @@ -->

+

23 July 2018

+

BeeSting12 updated:

+
    +
  • Robotics' circuit printers have been changed to science departmental circuit printers to allow science to do their job more efficiently.
  • +
+

Cruix updated:

+
    +
  • AI eyes will now see static immediately after jumping between cameras.
  • +
+

Denton updated:

+
    +
  • Shared engineering storage rooms have been added to Deltastation.
  • +
  • Fixed access requirements of lockdown buttons in the CE office. On some maps, these were set to the wrong department.
  • +
  • Fixed Box and Metastation's CE locker having no access requirements.
  • +
  • Deltastation: Fixed engineers having access to atmospheric technicians' storage room. Fixed engineers having no access to port bow solars (the ones at the incinerator by Atmospherics). Also fixed Minisat airlock access requirements.
  • +
  • Pubbystation: Medbay and Cargo now have a techfab instead of protolathe.
  • +
  • Charlie/Delta Station (the "old cryogenics pod" ghost role) has been improved. Survivors can now finish the singularity engine and will have more minerals available inside the Hivebot mothership. The local atmos network is connected to an air tank; fire alarms and a bathroom have been added. Keep an eye out for a defibrillator too.
  • +
  • Nuclear Operatives can now purchase Buzzkill grenades for 5TC per box of three. Those release a swarm of angry bees with random toxins.
  • +
  • Chemical grenades, empty casings and smart metal foam nades now have more detailed descriptions.
  • +
  • Added examine descriptions to the organ harvester.
  • +
+

Epoc updated:

+
    +
  • Adds "Toggle Flashlight" to PDA context menu.
  • +
+

Hathkar updated:

+
    +
  • Captain's Door Remote now has vault access again.
  • +
+

Mickyan updated:

+
    +
  • Deltastation: replaced blood decals in maintenance with their dried counterparts
  • +
+

SpaceManiac updated:

+
    +
  • RCDs can now be loaded partially by compressed matter cartridges rather than always consuming the entire cartridge.
  • +
  • Fernet Cola's effect has been restored.
  • +
  • Krokodil's addition stage two warning message has been restored.
  • +
+

WJohnston updated:

+
    +
  • Fixed corner decals rotating incorrectly in the small caravan freighter.
  • +
+

XDTM updated:

+
    +
  • Limbs disabled by stamina damage no longer appear as broken and mangled.
  • +
+

obscolene updated:

+
    +
  • Curator's whip actually makes a whip sound now
  • +
+

21 July 2018

Jared-Fogle updated:

    @@ -1571,16 +1623,6 @@

    resistor updated:

    • Added circuit labels! You can now customize the description of your assemblies.
    - -

    20 May 2018

    -

    Pubby updated:

    -
      -
    • Cargo bounties from Nanotrasen. Earn cargo points by completing fetch quests. remove: Several cargo exports have been reduced or merged into cargo bounties.
    • -
    -

    XDTM updated:

    -
      -
    • Added a new lavaland loot item: Memento Mori. A necklace which has the power to prevent death, but will turn you into dust if removed.
    • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 7c39eb7f26..0b039a6fc6 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -19119,3 +19119,45 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. to 45 (3 mags). Removed one of the wt-550s but put a compatible magazine in its place for the other to use. Turned the syndicate hardsuit into a regular grey space suit. +2018-07-23: + BeeSting12: + - bugfix: Robotics' circuit printers have been changed to science departmental circuit + printers to allow science to do their job more efficiently. + Cruix: + - bugfix: AI eyes will now see static immediately after jumping between cameras. + Denton: + - rscadd: Shared engineering storage rooms have been added to Deltastation. + - bugfix: Fixed access requirements of lockdown buttons in the CE office. On some + maps, these were set to the wrong department. + - bugfix: Fixed Box and Metastation's CE locker having no access requirements. + - bugfix: 'Deltastation: Fixed engineers having access to atmospheric technicians'' + storage room. Fixed engineers having no access to port bow solars (the ones + at the incinerator by Atmospherics). Also fixed Minisat airlock access requirements.' + - bugfix: 'Pubbystation: Medbay and Cargo now have a techfab instead of protolathe.' + - tweak: Charlie/Delta Station (the "old cryogenics pod" ghost role) has been improved. + Survivors can now finish the singularity engine and will have more minerals + available inside the Hivebot mothership. The local atmos network is connected + to an air tank; fire alarms and a bathroom have been added. Keep an eye out + for a defibrillator too. + - rscadd: Nuclear Operatives can now purchase Buzzkill grenades for 5TC per box + of three. Those release a swarm of angry bees with random toxins. + - spellcheck: Chemical grenades, empty casings and smart metal foam nades now have + more detailed descriptions. + - spellcheck: Added examine descriptions to the organ harvester. + Epoc: + - rscadd: Adds "Toggle Flashlight" to PDA context menu. + Hathkar: + - tweak: Captain's Door Remote now has vault access again. + Mickyan: + - bugfix: 'Deltastation: replaced blood decals in maintenance with their dried counterparts' + SpaceManiac: + - tweak: RCDs can now be loaded partially by compressed matter cartridges rather + than always consuming the entire cartridge. + - bugfix: Fernet Cola's effect has been restored. + - bugfix: Krokodil's addition stage two warning message has been restored. + WJohnston: + - bugfix: Fixed corner decals rotating incorrectly in the small caravan freighter. + XDTM: + - bugfix: Limbs disabled by stamina damage no longer appear as broken and mangled. + obscolene: + - soundadd: Curator's whip actually makes a whip sound now diff --git a/html/changelogs/AutoChangeLog-pr-39193.yml b/html/changelogs/AutoChangeLog-pr-39193.yml deleted file mode 100644 index e226d2d53a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39193.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - rscadd: "Shared engineering storage rooms have been added to Deltastation." - - bugfix: "Fixed access requirements of lockdown buttons in the CE office. On some maps, these were set to the wrong department." - - bugfix: "Fixed Box and Metastation's CE locker having no access requirements." - - bugfix: "Deltastation: Fixed engineers having access to atmospheric technicians' storage room. Fixed engineers having no access to port bow solars (the ones at the incinerator by Atmospherics). Also fixed Minisat airlock access requirements." diff --git a/html/changelogs/AutoChangeLog-pr-39209.yml b/html/changelogs/AutoChangeLog-pr-39209.yml deleted file mode 100644 index a3743f2c0e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39209.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - bugfix: "Limbs disabled by stamina damage no longer appear as broken and mangled." diff --git a/html/changelogs/AutoChangeLog-pr-39229.yml b/html/changelogs/AutoChangeLog-pr-39229.yml deleted file mode 100644 index 1935015d95..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39229.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Epoc" -delete-after: True -changes: - - rscadd: "Adds \"Toggle Flashlight\" to PDA context menu." diff --git a/html/changelogs/AutoChangeLog-pr-39230.yml b/html/changelogs/AutoChangeLog-pr-39230.yml deleted file mode 100644 index 0736735d2e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39230.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cruix" -delete-after: True -changes: - - bugfix: "AI eyes will now see static immediately after jumping between cameras." diff --git a/html/changelogs/AutoChangeLog-pr-39235.yml b/html/changelogs/AutoChangeLog-pr-39235.yml deleted file mode 100644 index cfd7af1953..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39235.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BeeSting12" -delete-after: True -changes: - - bugfix: "Robotics' circuit printers have been changed to science departmental circuit printers to allow science to do their job more efficiently." diff --git a/html/changelogs/AutoChangeLog-pr-39240.yml b/html/changelogs/AutoChangeLog-pr-39240.yml deleted file mode 100644 index cbf886611f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39240.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "obscolene" -delete-after: True -changes: - - soundadd: "Curator's whip actually makes a whip sound now" diff --git a/html/changelogs/AutoChangeLog-pr-39243.yml b/html/changelogs/AutoChangeLog-pr-39243.yml deleted file mode 100644 index 039ff98034..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39243.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - bugfix: "Pubbystation: Medbay and Cargo now have a techfab instead of protolathe." diff --git a/html/changelogs/AutoChangeLog-pr-39248.yml b/html/changelogs/AutoChangeLog-pr-39248.yml deleted file mode 100644 index 3426b26c16..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39248.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - tweak: "Charlie/Delta Station (the \"old cryogenics pod\" ghost role) has been improved. Survivors can now finish the singularity engine and will have more minerals available inside the Hivebot mothership. The local atmos network is connected to an air tank; fire alarms and a bathroom have been added. Keep an eye out for a defibrillator too." diff --git a/html/changelogs/AutoChangeLog-pr-39257.yml b/html/changelogs/AutoChangeLog-pr-39257.yml deleted file mode 100644 index b266f2d050..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39257.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - rscadd: "Nuclear Operatives can now purchase Buzzkill grenades for 5TC per box of three. Those release a swarm of angry bees with random toxins." diff --git a/html/changelogs/AutoChangeLog-pr-39262.yml b/html/changelogs/AutoChangeLog-pr-39262.yml deleted file mode 100644 index f5e10b561b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39262.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - spellcheck: "Chemical grenades, empty casings and smart metal foam nades now have more detailed descriptions." diff --git a/html/changelogs/AutoChangeLog-pr-39263.yml b/html/changelogs/AutoChangeLog-pr-39263.yml deleted file mode 100644 index 85f85f3886..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39263.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Mickyan" -delete-after: True -changes: - - bugfix: "Deltastation: replaced blood decals in maintenance with their dried counterparts" diff --git a/html/changelogs/AutoChangeLog-pr-39264.yml b/html/changelogs/AutoChangeLog-pr-39264.yml deleted file mode 100644 index 910085448c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39264.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - spellcheck: "Added examine descriptions to the organ harvester." diff --git a/html/changelogs/AutoChangeLog-pr-39269.yml b/html/changelogs/AutoChangeLog-pr-39269.yml deleted file mode 100644 index 57baacc249..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39269.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hathkar" -delete-after: True -changes: - - tweak: "Captain's Door Remote now has vault access again." diff --git a/html/changelogs/AutoChangeLog-pr-39275.yml b/html/changelogs/AutoChangeLog-pr-39275.yml deleted file mode 100644 index a72c788093..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39275.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpaceManiac" -delete-after: True -changes: - - tweak: "RCDs can now be loaded partially by compressed matter cartridges rather than always consuming the entire cartridge." diff --git a/html/changelogs/AutoChangeLog-pr-39281.yml b/html/changelogs/AutoChangeLog-pr-39281.yml deleted file mode 100644 index 449fb2e9b7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39281.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohnston" -delete-after: True -changes: - - bugfix: "Fixed corner decals rotating incorrectly in the small caravan freighter." diff --git a/html/changelogs/AutoChangeLog-pr-39300.yml b/html/changelogs/AutoChangeLog-pr-39300.yml deleted file mode 100644 index 7484aec1a8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39300.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SpaceManiac" -delete-after: True -changes: - - bugfix: "Fernet Cola's effect has been restored." - - bugfix: "Krokodil's addition stage two warning message has been restored." From 0f6c60d95baf9940847777d76d210ce5e6b1b5d3 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Mon, 23 Jul 2018 12:33:32 -0700 Subject: [PATCH 084/403] Return of Party button (#39270) * Return of Party button * Fix bad interaction with weather --- code/game/machinery/firealarm.dm | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 34a5659f3f..c3ce4c6a01 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -285,3 +285,40 @@ set_light(l_power = 0.8) else set_light(l_power = 0) + +/* + * Return of Party button + */ + +/area + var/party = FALSE + +/obj/machinery/firealarm/partyalarm + name = "\improper PARTY BUTTON" + desc = "Cuban Pete is in the house!" + var/static/party_overlay + +/obj/machinery/firealarm/partyalarm/reset() + if (stat & (NOPOWER|BROKEN)) + return + var/area/A = get_area(src) + if (!A || !A.party) + return + A.party = FALSE + A.cut_overlay(party_overlay) + +/obj/machinery/firealarm/partyalarm/alarm() + if (stat & (NOPOWER|BROKEN)) + return + var/area/A = get_area(src) + if (!A || A.party || A.name == "Space") + return + A.party = TRUE + if (!party_overlay) + party_overlay = iconstate2appearance('icons/turf/areas.dmi', "party") + A.add_overlay(party_overlay) + +/obj/machinery/firealarm/partyalarm/ui_data(mob/user) + . = ..() + var/area/A = get_area(src) + .["alarm"] = A && A.party From 48cccc899e6e7a6bfb9b69b4e8b6e20957e2ca0a Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 23 Jul 2018 12:33:35 -0700 Subject: [PATCH 085/403] Automatic changelog generation for PR #39270 [ci skip] --- html/changelogs/AutoChangeLog-pr-39270.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39270.yml diff --git a/html/changelogs/AutoChangeLog-pr-39270.yml b/html/changelogs/AutoChangeLog-pr-39270.yml new file mode 100644 index 0000000000..d39a94fe3a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39270.yml @@ -0,0 +1,4 @@ +author: "SpaceManiac" +delete-after: True +changes: + - admin: "The party button is back." From 5274b9136a75740dc07671b09a0617d4bad61c3f Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Mon, 23 Jul 2018 12:35:47 -0700 Subject: [PATCH 086/403] [s] Fix delete href exploit (#39303) * Fix delete href exploit * Another one --- code/datums/datumvars.dm | 2 +- code/game/machinery/newscaster.dm | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index a5becd3614..547d82dd1d 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -511,7 +511,7 @@ return var/datum/D = locate(href_list["delete"]) - if(!D) + if(!istype(D)) to_chat(usr, "Unable to locate item!") admin_delete(D) href_list["datumrefresh"] = href_list["delete"] diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index aa847a4624..887eba8047 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -703,9 +703,10 @@ GLOBAL_LIST_EMPTY(allCasters) else if(href_list["del_comment"]) var/datum/newscaster/feed_comment/FC = locate(href_list["del_comment"]) var/datum/newscaster/feed_message/FM = locate(href_list["del_comment_msg"]) - FM.comments -= FC - qdel(FC) - updateUsrDialog() + if(istype(FC) && istype(FM)) + FM.comments -= FC + qdel(FC) + updateUsrDialog() else if(href_list["lock_comment"]) var/datum/newscaster/feed_message/FM = locate(href_list["lock_comment"]) FM.locked ^= 1 From af842acf81d067e90d88387cdedf7608d3efc283 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 23 Jul 2018 19:39:26 +0000 Subject: [PATCH 087/403] Automatic changelog compile, [ci skip] --- html/changelog.html | 1 + html/changelogs/.all_changelog.yml | 1 + html/changelogs/AutoChangeLog-pr-39270.yml | 4 ---- 3 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-39270.yml diff --git a/html/changelog.html b/html/changelog.html index 3d8501c775..be16d48b90 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -93,6 +93,7 @@

SpaceManiac updated:

  • RCDs can now be loaded partially by compressed matter cartridges rather than always consuming the entire cartridge.
  • Fernet Cola's effect has been restored.
  • Krokodil's addition stage two warning message has been restored.
  • +
  • The party button is back.
  • WJohnston updated:

    " diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 217295c872..421cc0989c 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -454,6 +454,24 @@ Code: menu += "
  • #[SO.id] - [SO.pack.name] requested by [SO.orderer]
  • " menu += "Upgrade NOW to Space Parts & Space Vendors PLUS for full remote order control and inventory management." + if (48) // quartermaster ore logs + menu = list("

    [PDAIMG(crate)] Ore Silo Logs

    ") + if (GLOB.ore_silo_default) + var/list/logs = GLOB.silo_access_logs[REF(GLOB.ore_silo_default)] + var/len = LAZYLEN(logs) + var/i = 0 + for(var/M in logs) + if (++i > 30) + menu += "(... older logs not shown ...)" + break + var/datum/ore_silo_log/entry = M + menu += "[len - i]. [entry.formatted]

    " + if(i == 0) + menu += "Nothing!" + else + menu += "No ore silo detected!" + menu = jointext(menu, "") + if (49) //janitorial locator menu = "

    [PDAIMG(bucket)] Persistent Custodial Object Locator

    " diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 7a79b7d2de..23ac589a88 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -19,3 +19,4 @@ new /obj/item/export_scanner(src) new /obj/item/door_remote/quartermaster(src) new /obj/item/circuitboard/machine/techfab/department/cargo(src) + new /obj/item/circuitboard/machine/ore_silo(src) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 765f9d92e0..621a6afe23 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -135,6 +135,7 @@ GLOBAL_LIST(labor_sheet_values) /obj/machinery/mineral/stacking_machine/laborstacker + force_connect = TRUE var/points = 0 //The unclaimed value of ore stacked. /obj/machinery/mineral/stacking_machine/laborstacker/process_sheet(obj/item/stack/sheet/inp) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 3529214609..ce569ec055 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -13,7 +13,6 @@ speed_process = TRUE circuit = /obj/item/circuitboard/machine/ore_redemption layer = BELOW_OBJ_LAYER - var/req_access_reclaim = ACCESS_MINING_STATION var/obj/item/card/id/inserted_id var/points = 0 var/ore_pickup_rate = 15 @@ -24,11 +23,12 @@ var/list/ore_buffer = list() var/datum/techweb/stored_research var/obj/item/disk/design_disk/inserted_disk + var/datum/component/remote_materials/materials -/obj/machinery/mineral/ore_redemption/Initialize() +/obj/machinery/mineral/ore_redemption/Initialize(mapload) . = ..() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),INFINITY, FALSE, list(/obj/item/stack)) stored_research = new /datum/techweb/specialized/autounlocking/smelter + materials = AddComponent(/datum/component/remote_materials, "orm", mapload) /obj/machinery/mineral/ore_redemption/Destroy() QDEL_NULL(stored_research) @@ -49,35 +49,43 @@ sheet_per_ore = sheet_per_ore_temp /obj/machinery/mineral/ore_redemption/proc/smelt_ore(obj/item/stack/ore/O) + var/datum/component/material_container/mat_container = materials.mat_container + if (!mat_container) + return ore_buffer -= O if(O && O.refined_type) points += O.points * point_upgrade * O.amount - GET_COMPONENT(materials, /datum/component/material_container) - var/material_amount = materials.get_item_material_amount(O) + var/material_amount = mat_container.get_item_material_amount(O) if(!material_amount) qdel(O) //no materials, incinerate it - else if(!materials.has_space(material_amount * sheet_per_ore * O.amount)) //if there is no space, eject it + else if(!mat_container.has_space(material_amount * sheet_per_ore * O.amount)) //if there is no space, eject it unload_mineral(O) else - materials.insert_item(O, sheet_per_ore) //insert it + var/mats = O.materials & mat_container.materials + var/amount = O.amount + var/id = inserted_id && inserted_id.registered_name + if (id) + id = " (ID: [id])" + mat_container.insert_item(O, sheet_per_ore) //insert it + materials.silo_log(src, "smelted", amount, "ores[id]", mats) qdel(O) /obj/machinery/mineral/ore_redemption/proc/can_smelt_alloy(datum/design/D) - if(D.make_reagents.len) + var/datum/component/material_container/mat_container = materials.mat_container + if(!mat_container || D.make_reagents.len) return FALSE var/build_amount = 0 - GET_COMPONENT(materials, /datum/component/material_container) for(var/mat_id in D.materials) var/M = D.materials[mat_id] - var/datum/material/redemption_mat = materials.materials[mat_id] + var/datum/material/redemption_mat = mat_container.materials[mat_id] if(!M || !redemption_mat) return FALSE @@ -102,17 +110,18 @@ smelt_ore(ore) /obj/machinery/mineral/ore_redemption/proc/send_console_message() - if(!is_station_level(z)) + var/datum/component/material_container/mat_container = materials.mat_container + if(!mat_container || !is_station_level(z)) return message_sent = TRUE + var/area/A = get_area(src) var/msg = "Now available in [A]:
    " var/has_minerals = FALSE - GET_COMPONENT(materials, /datum/component/material_container) - for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] + for(var/mat_id in mat_container.materials) + var/datum/material/M = mat_container.materials[mat_id] var/mineral_amount = M.amount / MINERAL_MATERIAL_AMOUNT if(mineral_amount) has_minerals = TRUE @@ -126,7 +135,7 @@ D.createmessage("Ore Redemption Machine", "New minerals available!", msg, 1, 0) /obj/machinery/mineral/ore_redemption/process() - if(panel_open || !powered()) + if(!materials.mat_container || panel_open || !powered()) return var/atom/input = get_step(src, input_dir) var/obj/structure/ore_box/OB = locate() in input @@ -147,10 +156,6 @@ send_console_message() /obj/machinery/mineral/ore_redemption/attackby(obj/item/W, mob/user, params) - GET_COMPONENT(materials, /datum/component/material_container) - if(default_pry_open(W)) - materials.retrieve_all() - return if(default_unfasten_wrench(user, W)) return if(default_deconstruction_screwdriver(user, "ore_redemption-open", "ore_redemption", W)) @@ -170,22 +175,18 @@ interact(user) return - if(istype(W, /obj/item/multitool) && panel_open) - input_dir = turn(input_dir, -90) - output_dir = turn(output_dir, -90) - to_chat(user, "You change [src]'s I/O settings, setting the input to [dir2text(input_dir)] and the output to [dir2text(output_dir)].") - return - if(istype(W, /obj/item/disk/design_disk)) if(user.transferItemToLoc(W, src)) inserted_disk = W return TRUE return ..() -/obj/machinery/mineral/ore_redemption/on_deconstruction() - GET_COMPONENT(materials, /datum/component/material_container) - materials.retrieve_all() - ..() +/obj/machinery/mineral/ore_redemption/multitool_act(mob/living/user, obj/item/multitool/I) + if (panel_open) + input_dir = turn(input_dir, -90) + output_dir = turn(output_dir, -90) + to_chat(user, "You change [src]'s I/O settings, setting the input to [dir2text(input_dir)] and the output to [dir2text(output_dir)].") + return TRUE /obj/machinery/mineral/ore_redemption/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -201,16 +202,25 @@ data["claimedPoints"] = inserted_id.mining_points data["materials"] = list() - GET_COMPONENT(materials, /datum/component/material_container) - for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] - var/sheet_amount = M.amount ? M.amount / MINERAL_MATERIAL_AMOUNT : "0" - data["materials"] += list(list("name" = M.name, "id" = M.id, "amount" = sheet_amount, "value" = ore_values[M.id] * point_upgrade)) - - data["alloys"] = list() - for(var/v in stored_research.researched_designs) - var/datum/design/D = stored_research.researched_designs[v] - data["alloys"] += list(list("name" = D.name, "id" = D.id, "amount" = can_smelt_alloy(D))) + var/datum/component/material_container/mat_container = materials.mat_container + if (mat_container) + for(var/mat_id in mat_container.materials) + var/datum/material/M = mat_container.materials[mat_id] + var/sheet_amount = M.amount ? M.amount / MINERAL_MATERIAL_AMOUNT : "0" + data["materials"] += list(list("name" = M.name, "id" = M.id, "amount" = sheet_amount, "value" = ore_values[M.id] * point_upgrade)) + + data["alloys"] = list() + for(var/v in stored_research.researched_designs) + var/datum/design/D = stored_research.researched_designs[v] + data["alloys"] += list(list("name" = D.name, "id" = D.id, "amount" = can_smelt_alloy(D))) + + if (!mat_container) + data["disconnected"] = "local mineral storage is unavailable" + else if (!materials.silo) + data["disconnected"] = "no ore silo connection is available; storing locally" + else if (materials.on_hold()) + data["disconnected"] = "mineral withdrawal is on hold" + data["diskDesigns"] = list() if(inserted_disk) data["hasDisk"] = TRUE @@ -225,7 +235,7 @@ /obj/machinery/mineral/ore_redemption/ui_act(action, params) if(..()) return - GET_COMPONENT(materials, /datum/component/material_container) + var/datum/component/material_container/mat_container = materials.mat_container switch(action) if("Eject") if(!inserted_id) @@ -248,12 +258,17 @@ points = 0 return TRUE if("Release") - - if(check_access(inserted_id) || allowed(usr)) //Check the ID inside, otherwise check the user + if(!mat_container) + return + if(materials.on_hold()) + to_chat(usr, "Mineral access is on hold, please contact the quartermaster.") + else if(!check_access(inserted_id) && !allowed(usr)) //Check the ID inside, otherwise check the user + to_chat(usr, "Required access not found.") + else var/mat_id = params["id"] - if(!materials.materials[mat_id]) + if(!mat_container.materials[mat_id]) return - var/datum/material/mat = materials.materials[mat_id] + var/datum/material/mat = mat_container.materials[mat_id] var/stored_amount = mat.amount / MINERAL_MATERIAL_AMOUNT if(!stored_amount) @@ -266,10 +281,10 @@ desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num var/sheets_to_remove = round(min(desired,50,stored_amount)) - materials.retrieve_sheets(sheets_to_remove, mat_id, get_step(src, output_dir)) - - else - to_chat(usr, "Required access not found.") + var/count = mat_container.retrieve_sheets(sheets_to_remove, mat_id, get_step(src, output_dir)) + var/list/mats = list() + mats[mat_id] = MINERAL_MATERIAL_AMOUNT + materials.silo_log(src, "released", -count, "sheets", mats) return TRUE if("diskInsert") var/obj/item/disk/design_disk/disk = usr.get_active_held_item() @@ -291,6 +306,11 @@ stored_research.add_design(inserted_disk.blueprints[n]) return TRUE if("Smelt") + if(!mat_container) + return + if(materials.on_hold()) + to_chat(usr, "Mineral access is on hold, please contact the quartermaster.") + return var/alloy_id = params["id"] var/datum/design/alloy = stored_research.isDesignResearchedID(alloy_id) if((check_access(inserted_id) || allowed(usr)) && alloy) @@ -301,7 +321,8 @@ else desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num var/amount = round(min(desired,50,smelt_amount)) - materials.use_amount(alloy.materials, amount) + mat_container.use_amount(alloy.materials, amount) + materials.silo_log(src, "released", -amount, "sheets", alloy.materials) var/output if(ispath(alloy.build_path, /obj/item/stack/sheet)) output = new alloy.build_path(src, amount) @@ -311,20 +332,6 @@ else to_chat(usr, "Required access not found.") return TRUE - if("SmeltAll") - var/alloy_id = params["id"] - var/datum/design/alloy = stored_research.isDesignResearchedID(alloy_id) - if((check_access(inserted_id) || allowed(usr)) && alloy) - var/smelt_amount = can_smelt_alloy(alloy) - while(smelt_amount > 0) - materials.use_amount(alloy.materials) - smelt_amount-- - var/output = new alloy.build_path(src) - unload_mineral(output) - CHECK_TICK - else - to_chat(usr, "Required access not found.") - return TRUE /obj/machinery/mineral/ore_redemption/ex_act(severity, target) do_sparks(5, TRUE, src) diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm new file mode 100644 index 0000000000..d12009e5b9 --- /dev/null +++ b/code/modules/mining/machine_silo.dm @@ -0,0 +1,233 @@ +GLOBAL_DATUM(ore_silo_default, /obj/machinery/ore_silo) +GLOBAL_LIST_EMPTY(silo_access_logs) + +/obj/machinery/ore_silo + name = "ore silo" + desc = "An all-in-one bluespace storage and transmission system for the station's mineral distribution needs." + icon = 'icons/obj/mining.dmi' + icon_state = "bin" + density = TRUE + circuit = /obj/item/circuitboard/machine/ore_silo + + var/list/holds = list() + var/list/datum/component/remote_materials/connected = list() + var/log_page = 1 + +/obj/machinery/ore_silo/Initialize(mapload) + . = ..() + AddComponent(/datum/component/material_container, + list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), + INFINITY, + FALSE, + list(/obj/item/stack), + null, + null, + TRUE) + if (!GLOB.ore_silo_default && mapload && is_station_level(z)) + GLOB.ore_silo_default = src + +/obj/machinery/ore_silo/Destroy() + if (GLOB.ore_silo_default == src) + GLOB.ore_silo_default = null + + for(var/C in connected) + var/datum/component/remote_materials/mats = C + mats.disconnect_from(src) + + GET_COMPONENT(materials, /datum/component/material_container) + materials.retrieve_all() + + return ..() + +/obj/machinery/ore_silo/proc/remote_attackby(obj/machinery/M, mob/user, obj/item/stack/I) + GET_COMPONENT(materials, /datum/component/material_container) + // stolen from /datum/component/material_container/proc/OnAttackBy + if(user.a_intent != INTENT_HELP) + return + if(I.item_flags & ABSTRACT) + return + if(!istype(I) || (I.flags_1 & HOLOGRAM_1) || (I.item_flags & NO_MAT_REDEMPTION)) + to_chat(user, "[M] won't accept [I]!") + return + var/item_mats = I.materials & materials.materials + if(!length(item_mats)) + to_chat(user, "[I] does not contain sufficient materials to be accepted by [M].") + return + // assumes unlimited space... + var/amount = I.amount + materials.user_insert(I, user) + silo_log(M, "deposited", amount, "sheets", item_mats) + return TRUE + +/obj/machinery/ore_silo/attackby(obj/item/W, mob/user, params) + if (istype(W, /obj/item/stack)) + return remote_attackby(src, user, W) + return ..() + +/obj/machinery/ore_silo/ui_interact(mob/user) + user.set_machine(src) + var/datum/browser/popup = new(user, "ore_silo", null, 600, 550) + popup.set_content(generate_ui()) + popup.open() + +/obj/machinery/ore_silo/proc/generate_ui() + GET_COMPONENT(materials, /datum/component/material_container) + var/list/ui = list("Ore Silo

    Stored Material:

    ") + var/any = FALSE + for(var/M in materials.materials) + var/datum/material/mat = materials.materials[M] + var/sheets = round(mat.amount) / MINERAL_MATERIAL_AMOUNT + if (sheets) + if (sheets >= 1) + ui += "Eject" + else + ui += "Eject" + if (sheets >= 20) + ui += "20x" + else + ui += "20x" + ui += "[mat.name]: [sheets] sheets
    " + any = TRUE + if(!any) + ui += "Nothing!" + + ui += "

    Connected Machines:

    " + for(var/C in connected) + var/datum/component/remote_materials/mats = C + var/atom/parent = mats.parent + var/hold_key = "[get_area(parent)]/[mats.category]" + ui += "Remove" + ui += "[holds[hold_key] ? "Allow" : "Hold"]" + ui += " [parent.name] in [get_area_name(parent, TRUE)]
    " + if(!connected.len) + ui += "Nothing!" + + ui += "

    Access Logs:

    " + var/list/logs = GLOB.silo_access_logs[REF(src)] + var/len = LAZYLEN(logs) + var/num_pages = 1 + round((len - 1) / 30) + var/page = CLAMP(log_page, 1, num_pages) + if(num_pages > 1) + for(var/i in 1 to num_pages) + if(i == page) + ui += "[i]" + else + ui += "[i]" + + ui += "
      " + any = FALSE + for(var/i in (page - 1) * 30 + 1 to min(page * 30, len)) + var/datum/ore_silo_log/entry = logs[i] + ui += "
    1. [entry.formatted]
    2. " + any = TRUE + if (!any) + ui += "
    3. Nothing!
    4. " + + ui += "
    " + return ui.Join() + +/obj/machinery/ore_silo/Topic(href, href_list) + if(..()) + return + add_fingerprint(usr) + usr.set_machine(src) + + if(href_list["remove"]) + var/datum/component/remote_materials/mats = locate(href_list["remove"]) in connected + if (mats) + mats.disconnect_from(src) + connected -= mats + updateUsrDialog() + return TRUE + else if(href_list["hold1"]) + holds[href_list["hold1"]] = TRUE + updateUsrDialog() + return TRUE + else if(href_list["hold0"]) + holds -= href_list["hold0"] + updateUsrDialog() + return TRUE + else if(href_list["ejectsheet"]) + var/eject_sheet = href_list["ejectsheet"] + GET_COMPONENT(materials, /datum/component/material_container) + var/count = materials.retrieve_sheets(text2num(href_list["eject_amt"]), eject_sheet, drop_location()) + var/list/matlist = list() + matlist[eject_sheet] = MINERAL_MATERIAL_AMOUNT + silo_log(src, "ejected", -count, "sheets", matlist) + return TRUE + else if(href_list["page"]) + log_page = text2num(href_list["page"]) || 1 + updateUsrDialog() + return TRUE + +/obj/machinery/ore_silo/multitool_act(mob/living/user, obj/item/multitool/I) + if (istype(I)) + to_chat(user, "You log [src] in the multitool's buffer.") + I.buffer = src + return TRUE + +/obj/machinery/ore_silo/proc/silo_log(obj/machinery/M, action, amount, noun, list/mats) + if (!length(mats)) + return + var/datum/ore_silo_log/entry = new(M, action, amount, noun, mats) + + var/list/logs = GLOB.silo_access_logs[REF(src)] + if(!LAZYLEN(logs)) + GLOB.silo_access_logs[REF(src)] = logs = list(entry) + else if(!logs[1].merge(entry)) + logs.Insert(1, entry) + + updateUsrDialog() + animate(src, icon_state = "bin_partial", time = 2) + animate(icon_state = "bin_full", time = 1) + animate(icon_state = "bin_partial", time = 2) + animate(icon_state = "bin") + +/datum/ore_silo_log + var/name // for VV + var/formatted // for display + + var/timestamp + var/machine_name + var/area_name + var/action + var/noun + var/amount + var/list/materials + +/datum/ore_silo_log/New(obj/machinery/M, _action, _amount, _noun, list/mats=list()) + timestamp = station_time_timestamp() + machine_name = M.name + area_name = get_area_name(M, TRUE) + action = _action + amount = _amount + noun = _noun + materials = mats.Copy() + for(var/each in materials) + materials[each] *= abs(_amount) + format() + +/datum/ore_silo_log/proc/merge(datum/ore_silo_log/other) + if (other == src || action != other.action || noun != other.noun) + return FALSE + if (machine_name != other.machine_name || area_name != other.area_name) + return FALSE + + timestamp = other.timestamp + amount += other.amount + for(var/each in other.materials) + materials[each] += other.materials[each] + format() + return TRUE + +/datum/ore_silo_log/proc/format() + name = "[machine_name]: [action] [amount]x [noun]" + + var/list/msg = list("([timestamp]) [machine_name] in [area_name]
    [action] [abs(amount)]x [noun]
    ") + var/sep = "" + for(var/key in materials) + var/val = round(materials[key]) / MINERAL_MATERIAL_AMOUNT + msg += sep + sep = ", " + msg += "[amount < 0 ? "-" : "+"][val] [copytext(key, 2)]" + formatted = msg.Join() diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index dcc9034e2d..aa3ab240d8 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -71,42 +71,51 @@ desc = "A machine that automatically stacks acquired materials. Controlled by a nearby console." density = TRUE circuit = /obj/item/circuitboard/machine/stacking_machine + input_dir = EAST + output_dir = WEST var/obj/machinery/mineral/stacking_unit_console/CONSOLE var/stk_types = list() var/stk_amt = list() var/stack_list[0] //Key: Type. Value: Instance of type. - var/stack_amt = 50; //ammount to stack before releassing - input_dir = EAST - output_dir = WEST + var/stack_amt = 50 //amount to stack before releassing + var/datum/component/remote_materials/materials + var/force_connect = FALSE -/obj/machinery/mineral/stacking_machine/Initialize() +/obj/machinery/mineral/stacking_machine/Initialize(mapload) . = ..() proximity_monitor = new(src, 1) + materials = AddComponent(/datum/component/remote_materials, "stacking", mapload, FALSE, mapload && force_connect) /obj/machinery/mineral/stacking_machine/HasProximity(atom/movable/AM) if(istype(AM, /obj/item/stack/sheet) && AM.loc == get_step(src, input_dir)) process_sheet(AM) -/obj/machinery/mineral/stacking_machine/multitool_act(mob/living/user, obj/item/I) - if(istype(I, /obj/item/multitool)) - var/obj/item/multitool/M = I - if(!istype(M.buffer, /obj/machinery/mineral/stacking_unit_console)) - to_chat(user, "The [I] has no linkage data in its buffer.") - return FALSE - else +/obj/machinery/mineral/stacking_machine/multitool_act(mob/living/user, obj/item/multitool/M) + if(istype(M)) + if(istype(M.buffer, /obj/machinery/mineral/stacking_unit_console)) CONSOLE = M.buffer CONSOLE.machine = src - to_chat(user, "You link [src] to the console in [I]'s buffer.") + to_chat(user, "You link [src] to the console in [M]'s buffer.") return TRUE /obj/machinery/mineral/stacking_machine/proc/process_sheet(obj/item/stack/sheet/inp) - if(!(inp.type in stack_list)) //It's the first of this sheet added - var/obj/item/stack/sheet/s = new inp.type(src, 0) - stack_list[inp.type] = s - var/obj/item/stack/sheet/storage = stack_list[inp.type] + var/key = inp.merge_type + var/obj/item/stack/sheet/storage = stack_list[key] + if(!storage) //It's the first of this sheet added + stack_list[key] = storage = new inp.type(src, 0) storage.amount += inp.amount //Stack the sheets - while(storage.amount > stack_amt) //Get rid of excessive stackage + qdel(inp) + + if(materials.silo && !materials.on_hold()) //Dump the sheets to the silo + var/matlist = storage.materials & materials.mat_container.materials + if (length(matlist)) + var/inserted = materials.mat_container.insert_stack(storage) + materials.silo_log(src, "collected", inserted, "sheets", matlist) + if (QDELETED(storage)) + stack_list -= key + return + + while(storage.amount >= stack_amt) //Get rid of excessive stackage var/obj/item/stack/sheet/out = new inp.type(null, stack_amt) unload_mineral(out) storage.amount -= stack_amt - qdel(inp) //Let the old sheet garbage collect diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 0a36394bc9..97bf462e0f 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -229,10 +229,10 @@ /datum/design/rglass name = "Reinforced Glass" id = "rglass" - build_type = AUTOLATHE | SMELTER + build_type = AUTOLATHE | SMELTER | PROTOLATHE materials = list(MAT_METAL = 1000, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/rglass - category = list("initial","Construction") + category = list("initial","Construction","Stock Parts") maxstack = 50 /datum/design/rods diff --git a/code/modules/research/designs/smelting_designs.dm b/code/modules/research/designs/smelting_designs.dm index 79a9748b08..f2f21396d2 100644 --- a/code/modules/research/designs/smelting_designs.dm +++ b/code/modules/research/designs/smelting_designs.dm @@ -3,51 +3,63 @@ /datum/design/plasteel_alloy name = "Plasma + Iron alloy" id = "plasteel" - build_type = SMELTER + build_type = SMELTER | PROTOLATHE materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasteel - category = list("initial") + category = list("initial", "Stock Parts") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + maxstack = 50 /datum/design/plastitanium_alloy name = "Plasma + Titanium alloy" id = "plastitanium" - build_type = SMELTER + build_type = SMELTER | PROTOLATHE materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/plastitanium - category = list("initial") + category = list("initial", "Stock Parts") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + maxstack = 50 /datum/design/plaglass_alloy name = "Plasma + Glass alloy" id = "plasmaglass" - build_type = SMELTER + build_type = SMELTER | PROTOLATHE materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasmaglass - category = list("initial") + category = list("initial", "Stock Parts") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + maxstack = 50 /datum/design/plasmarglass_alloy name = "Plasma + Metal + Glass alloy" id = "plasmareinforcedglass" - build_type = SMELTER + build_type = SMELTER | PROTOLATHE materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_METAL = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasmarglass - category = list("initial") + category = list("initial", "Stock Parts") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + maxstack = 50 /datum/design/titaniumglass_alloy name = "Titanium + Glass alloy" id = "titaniumglass" - build_type = SMELTER + build_type = SMELTER | PROTOLATHE materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/titaniumglass - category = list("initial") + category = list("initial", "Stock Parts") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + maxstack = 50 /datum/design/plastitaniumglass_alloy name = "Plasma + Titanium + Glass alloy" id = "plastitaniumglass" - build_type = SMELTER + build_type = SMELTER | PROTOLATHE materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plastitaniumglass - category = list("initial") + category = list("initial", "Stock Parts") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + maxstack = 50 /datum/design/alienalloy name = "Alien Alloy" diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index e62b0808b6..5cc26381dd 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -59,11 +59,14 @@ Note: Must be placed within 3 tiles of the R&D Console /obj/machinery/rnd/destructive_analyzer/proc/reclaim_materials_from(obj/item/thing) . = 0 - if(linked_console && linked_console.linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. + var/datum/component/material_container/storage = linked_console?.linked_lathe?.materials.mat_container + if(storage) //Also sends salvaged materials to a linked protolathe, if any. for(var/material in thing.materials) - var/can_insert = min((linked_console.linked_lathe.materials.max_amount - linked_console.linked_lathe.materials.total_amount), (max(thing.materials[material]*(decon_mod/10), thing.materials[material]))) - linked_console.linked_lathe.materials.insert_amount(can_insert, material) + var/can_insert = min((storage.max_amount - storage.total_amount), (max(thing.materials[material]*(decon_mod/10), thing.materials[material]))) + storage.insert_amount(can_insert, material) . += can_insert + if (.) + linked_console.linked_lathe.materials.silo_log(src, "reclaimed", 1, "[thing.name]", thing.materials) /obj/machinery/rnd/destructive_analyzer/proc/destroy_item(obj/item/thing, innermode = FALSE) if(QDELETED(thing) || QDELETED(src) || QDELETED(linked_console)) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 75ed53e936..d3cd399635 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -6,7 +6,7 @@ var/consoleless_interface = FALSE //Whether it can be used without a console. var/efficiency_coeff = 1 //Materials needed / coeff = actual. var/list/categories = list() - var/datum/component/material_container/materials //Store for hyper speed! + var/datum/component/remote_materials/materials var/allowed_department_flags = ALL var/production_animation //What's flick()'d on print. var/allowed_buildtypes = NONE @@ -19,19 +19,16 @@ var/screen = RESEARCH_FABRICATOR_SCREEN_MAIN var/selected_category -/obj/machinery/rnd/production/Initialize() +/obj/machinery/rnd/production/Initialize(mapload) . = ..() create_reagents(0) - materials = AddComponent(/datum/component/material_container, - list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), 0, - TRUE, list(/obj/item/stack), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) - materials.precise_insertion = TRUE - RefreshParts() matching_designs = list() cached_designs = list() stored_research = new host_research = SSresearch.science_tech update_research() + materials = AddComponent(/datum/component/remote_materials, "lathe", mapload) + RefreshParts() /obj/machinery/rnd/production/proc/update_research() host_research.copy_research_to(stored_research, TRUE) @@ -47,9 +44,6 @@ /obj/machinery/rnd/production/RefreshParts() calculate_efficiency() -/obj/machinery/rnd/production/attack_hand(mob/user) - interact(user) //remove this snowflake shit when the refactor of storage components or some other pr that unsnowflakes attack_hand on machinery is in - /obj/machinery/rnd/production/ui_interact(mob/user) if(!consoleless_interface) return ..() @@ -70,9 +64,10 @@ reagents.maximum_volume += G.volume G.reagents.trans_to(src, G.reagents.total_volume) if(materials) - materials.max_amount = 0 + var/total_storage = 0 for(var/obj/item/stock_parts/matter_bin/M in component_parts) - materials.max_amount += M.rating * 75000 + total_storage += M.rating * 75000 + materials.set_local_size(total_storage) var/total_rating = 0 for(var/obj/item/stock_parts/manipulator/M in component_parts) total_rating += M.rating @@ -83,7 +78,6 @@ /obj/machinery/rnd/production/on_deconstruction() for(var/obj/item/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) - materials.retrieve_all() return ..() /obj/machinery/rnd/production/proc/do_print(path, amount, list/matlist, notify_admins) @@ -92,18 +86,26 @@ message_admins("[ADMIN_LOOKUPFLW(usr)] has built [amount] of [path] at a [src]([type]).") for(var/i in 1 to amount) var/obj/item/I = new path(get_turf(src)) - if(!istype(I, /obj/item/stack/sheet) && !istype(I, /obj/item/stack/ore/bluespace_crystal)) + if(efficient_with(I.type)) I.materials = matlist.Copy() SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[type]", "[path]")) /obj/machinery/rnd/production/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material + if (!materials.mat_container) // no connected silo + return 0 var/list/all_materials = being_built.reagents_list + being_built.materials - var/A = materials.amount(M) + var/A = materials.mat_container.amount(M) if(!A) A = reagents.get_reagent_amount(M) - return round(A / max(1, (all_materials[M]/efficiency_coeff))) + // these types don't have their .materials set in do_print, so don't allow + // them to be constructed efficiently + var/ef = efficient_with(being_built.build_path) ? efficiency_coeff : 1 + return round(A / max(1, all_materials[M] / ef)) + +/obj/machinery/rnd/production/proc/efficient_with(path) + return !ispath(path, /obj/item/stack/sheet) && !ispath(path, /obj/item/stack/ore/bluespace_crystal) /obj/machinery/rnd/production/proc/user_try_print_id(id, amount) if((!istype(linked_console) && requires_console) || !id) @@ -121,25 +123,33 @@ if(D.build_type && !(D.build_type & allowed_buildtypes)) say("This machine does not have the necessary manipulation systems for this design. Please contact Nanotrasen Support!") return FALSE + if(!materials.mat_container) + say("No connection to material storage, please contact the quartermaster.") + return FALSE + if(materials.on_hold()) + say("Mineral access is on hold, please contact the quartermaster.") + return FALSE var/power = 1000 amount = CLAMP(amount, 1, 50) for(var/M in D.materials) power += round(D.materials[M] * amount / 35) power = min(3000, power) use_power(power) + var/coeff = efficient_with(D.build_path) ? efficiency_coeff : 1 var/list/efficient_mats = list() for(var/MAT in D.materials) - efficient_mats[MAT] = D.materials[MAT]/efficiency_coeff - if(!materials.has_materials(efficient_mats, amount)) + efficient_mats[MAT] = D.materials[MAT]/coeff + if(!materials.mat_container.has_materials(efficient_mats, amount)) say("Not enough materials to complete prototype[amount > 1? "s" : ""].") return FALSE for(var/R in D.reagents_list) - if(!reagents.has_reagent(R, D.reagents_list[R]*amount/efficiency_coeff)) + if(!reagents.has_reagent(R, D.reagents_list[R]*amount/coeff)) say("Not enough reagents to complete prototype[amount > 1? "s" : ""].") return FALSE - materials.use_amount(efficient_mats, amount) + materials.mat_container.use_amount(efficient_mats, amount) + materials.silo_log(src, "built", -amount, "[D.name]", efficient_mats) for(var/R in D.reagents_list) - reagents.remove_reagent(R, D.reagents_list[R]*amount/efficiency_coeff) + reagents.remove_reagent(R, D.reagents_list[R]*amount/coeff) busy = TRUE if(production_animation) flick(production_animation, src) @@ -181,17 +191,23 @@ var/list/l = list() l += "
    [host_research.organization] [department_tag] Department Lathe" l += "Security protocols: [(obj_flags & EMAGGED)? "Disabled" : "Enabled"]" - l += "Material Amount: [materials.total_amount] / [materials.max_amount]" + if (materials.mat_container) + l += "Material Amount: [materials.format_amount()]" + else + l += "No material storage connected, please contact the quartermaster." l += "Chemical volume: [reagents.total_volume] / [reagents.maximum_volume]" l += "Synchronize Research" l += "Main Screen
    [RDSCREEN_NOBREAK]" return l /obj/machinery/rnd/production/proc/ui_screen_materials() + if (!materials.mat_container) + screen = RESEARCH_FABRICATOR_SCREEN_MAIN + return ui_screen_main() var/list/l = list() l += "

    Material Storage:

    " - for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] + for(var/mat_id in materials.mat_container.materials) + var/datum/material/M = materials.mat_container.materials[mat_id] l += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" @@ -230,6 +246,8 @@ return if(!coeff) coeff = efficiency_coeff + if(!efficient_with(D.build_path)) + coeff = 1 var/list/l = list() var/temp_material var/c = 50 @@ -281,9 +299,23 @@ if(ls["disposeall"]) //Causes the protolathe to dispose of all it's reagents. reagents.clear_reagents() if(ls["ejectsheet"]) //Causes the protolathe to eject a sheet of material - materials.retrieve_sheets(text2num(ls["eject_amt"]), ls["ejectsheet"]) + eject_sheets(ls["ejectsheet"], ls["eject_amt"]) updateUsrDialog() +/obj/machinery/rnd/production/proc/eject_sheets(eject_sheet, eject_amt) + var/datum/component/material_container/mat_container = materials.mat_container + if (!mat_container) + say("No access to material storage, please contact the quartermaster.") + return 0 + if (materials.on_hold()) + say("Mineral access is on hold, please contact the quartermaster.") + return 0 + var/count = mat_container.retrieve_sheets(text2num(eject_amt), eject_sheet, drop_location()) + var/list/matlist = list() + matlist[eject_sheet] = MINERAL_MATERIAL_AMOUNT + materials.silo_log(src, "ejected", -count, "sheets", matlist) + return count + /obj/machinery/rnd/production/proc/ui_screen_main() var/list/l = list() l += "
    \ diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 0ba9312314..fb3c5908f5 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -197,6 +197,11 @@ Nothing else in the console has ID requirements. locked = FALSE return ..() +/obj/machinery/computer/rdconsole/multitool_act(mob/user, obj/item/multitool/I) + var/lathe = linked_lathe && linked_lathe.multitool_act(user, I) + var/print = linked_imprinter && linked_imprinter.multitool_act(user, I) + return lathe || print + /obj/machinery/computer/rdconsole/proc/list_categories(list/categories, menu_num as num) if(!categories) return @@ -268,7 +273,10 @@ Nothing else in the console has ID requirements. /obj/machinery/computer/rdconsole/proc/ui_protolathe_header() var/list/l = list() l += "" return l @@ -277,7 +285,6 @@ Nothing else in the console has ID requirements. var/list/l = list() l += ui_protolathe_header() l += "

    Browsing [selected_category]:

    " - var/coeff = linked_lathe.efficiency_coeff for(var/v in stored_research.researched_designs) var/datum/design/D = stored_research.researched_designs[v] if(!(selected_category in D.category)|| !(D.build_type & PROTOLATHE)) @@ -286,11 +293,13 @@ Nothing else in the console has ID requirements. continue var/temp_material var/c = 50 - var/t + var/coeff = linked_lathe.efficiency_coeff + if(!linked_lathe.efficient_with(D.build_path)) + coeff = 1 var/all_materials = D.materials + D.reagents_list for(var/M in all_materials) - t = linked_lathe.check_mat(D, M) + var/t = linked_lathe.check_mat(D, M) temp_material += " | " if (t < 1) temp_material += "[all_materials[M]/coeff] [CallMaterialName(M)]" @@ -332,16 +341,17 @@ Nothing else in the console has ID requirements. RDSCREEN_UI_LATHE_CHECK var/list/l = list() l += ui_protolathe_header() - var/coeff = linked_lathe.efficiency_coeff for(var/datum/design/D in matching_designs) if(!(isnull(linked_lathe.allowed_department_flags) || (D.departmental_flags & linked_lathe.allowed_department_flags))) continue var/temp_material var/c = 50 - var/t var/all_materials = D.materials + D.reagents_list + var/coeff = linked_lathe.efficiency_coeff + if(!linked_lathe.efficient_with(D.build_path)) + coeff = 1 for(var/M in all_materials) - t = linked_lathe.check_mat(D, M) + var/t = linked_lathe.check_mat(D, M) temp_material += " | " if (t < 1) temp_material += "[all_materials[M]/coeff] [CallMaterialName(M)]" @@ -364,11 +374,15 @@ Nothing else in the console has ID requirements. /obj/machinery/computer/rdconsole/proc/ui_protolathe_materials() //Legacy code RDSCREEN_UI_LATHE_CHECK + var/datum/component/material_container/mat_container = linked_lathe.materials.mat_container + if (!mat_container) + screen = RDSCREEN_PROTOLATHE + return ui_protolathe() var/list/l = list() l += ui_protolathe_header() l += "

    Material Storage:

    " - for(var/mat_id in linked_lathe.materials.materials) - var/datum/material/M = linked_lathe.materials.materials[mat_id] + for(var/mat_id in mat_container.materials) + var/datum/material/M = mat_container.materials[mat_id] l += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" @@ -392,7 +406,10 @@ Nothing else in the console has ID requirements. /obj/machinery/computer/rdconsole/proc/ui_circuit_header() //Legacy Code var/list/l = list() l += "" return l @@ -419,7 +436,6 @@ Nothing else in the console has ID requirements. l += ui_circuit_header() l += "

    Browsing [selected_category]:

    " - var/coeff = linked_imprinter.efficiency_coeff for(var/v in stored_research.researched_designs) var/datum/design/D = stored_research.researched_designs[v] if(!(selected_category in D.category) || !(D.build_type & IMPRINTER)) @@ -430,6 +446,9 @@ Nothing else in the console has ID requirements. var/check_materials = TRUE var/all_materials = D.materials + D.reagents_list + var/coeff = linked_imprinter.efficiency_coeff + if(!linked_imprinter.efficient_with(D.build_path)) + coeff = 1 for(var/M in all_materials) temp_materials += " | " @@ -451,13 +470,15 @@ Nothing else in the console has ID requirements. l += ui_circuit_header() l += "

    Search results:

    " - var/coeff = linked_imprinter.efficiency_coeff for(var/datum/design/D in matching_designs) if(!(isnull(linked_imprinter.allowed_department_flags) || (D.departmental_flags & linked_imprinter.allowed_department_flags))) continue var/temp_materials var/check_materials = TRUE var/all_materials = D.materials + D.reagents_list + var/coeff = linked_imprinter.efficiency_coeff + if(!linked_imprinter.efficient_with(D.build_path)) + coeff = 1 for(var/M in all_materials) temp_materials += " | " if (!linked_imprinter.check_mat(D, M)) @@ -485,11 +506,15 @@ Nothing else in the console has ID requirements. /obj/machinery/computer/rdconsole/proc/ui_circuit_materials() //Legacy code! RDSCREEN_UI_IMPRINTER_CHECK + var/datum/component/material_container/mat_container = linked_imprinter.materials.mat_container + if (!mat_container) + screen = RDSCREEN_IMPRINTER + return ui_circuit() var/list/l = list() l += ui_circuit_header() l += "

    Material Storage:

    " - for(var/mat_id in linked_imprinter.materials.materials) - var/datum/material/M = linked_imprinter.materials.materials[mat_id] + for(var/mat_id in mat_container.materials) + var/datum/material/M = mat_container.materials[mat_id] l += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "Eject [RDSCREEN_NOBREAK]" if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "5x [RDSCREEN_NOBREAK]" @@ -906,7 +931,10 @@ Nothing else in the console has ID requirements. if(QDELETED(linked_lathe)) say("No Protolathe Linked!") return - linked_lathe.materials.retrieve_sheets(text2num(ls["eject_amt"]), ls["ejectsheet"]) + if(!linked_lathe.materials.mat_container) + say("No material storage linked to protolathe!") + return + linked_lathe.eject_sheets(ls["ejectsheet"], ls["eject_amt"]) //Circuit Imprinter Materials if(ls["disposeI"]) //Causes the circuit imprinter to dispose of a single reagent (all of it) if(QDELETED(linked_imprinter)) @@ -922,7 +950,10 @@ Nothing else in the console has ID requirements. if(QDELETED(linked_imprinter)) say("No Circuit Imprinter Linked!") return - linked_imprinter.materials.retrieve_sheets(text2num(ls["eject_amt"]), ls["imprinter_ejectsheet"]) + if(!linked_imprinter.materials.mat_container) + say("No material storage linked to circuit imprinter!") + return + linked_imprinter.eject_sheets(ls["imprinter_ejectsheet"], ls["eject_amt"]) if(ls["disk_slot"]) disk_slot_selected = text2num(ls["disk_slot"]) if(ls["research_node"]) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 3a9c6d7021..83bf2e9719 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -7,9 +7,11 @@ starting_node = TRUE display_name = "Basic Research Technology" description = "NT default research technologies." + // Default research tech, prevents bricking design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", - "space_heater", "xlarge_beaker", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38") //Default research tech, prevents bricking + "space_heater", "xlarge_beaker", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", + "rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass") /////////////////////////Biotech///////////////////////// diff --git a/tgstation.dme b/tgstation.dme index 790a65bc94..8ef857eccb 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -338,6 +338,7 @@ #include "code\datums\components\paintable.dm" #include "code\datums\components\rad_insulation.dm" #include "code\datums\components\radioactive.dm" +#include "code\datums\components\remote_materials.dm" #include "code\datums\components\riding.dm" #include "code\datums\components\rotation.dm" #include "code\datums\components\signal_redirect.dm" @@ -1748,6 +1749,7 @@ #include "code\modules\mining\fulton.dm" #include "code\modules\mining\machine_processing.dm" #include "code\modules\mining\machine_redemption.dm" +#include "code\modules\mining\machine_silo.dm" #include "code\modules\mining\machine_stacking.dm" #include "code\modules\mining\machine_unloading.dm" #include "code\modules\mining\machine_vending.dm" diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 2e60b99572..e1afa11a88 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,19 +1,19 @@ -require=function(){function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(i)return i(o,!0);var p=Error("Cannot find module '"+o+"'");throw p.code="MODULE_NOT_FOUND",p}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n||t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=0;--a){var r=this.tryEntries[a],i=r.completion;if("root"===r.tryLoc)return e("end");if(r.tryLoc<=this.prev){var o=b.call(r,"catchLoc"),s=b.call(r,"finallyLoc");if(o&&s){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&b.call(a,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),f(n),O}},"catch":function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var a=n.completion;if("throw"===a.type){var r=a.arg;f(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:h(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=g),O}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(t,e,n){t(129),e.exports=t(24).RegExp.escape},{129:129,24:24}],4:[function(t,e,n){e.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},{}],5:[function(t,e,n){var a=t(19);e.exports=function(t,e){if("number"!=typeof t&&"Number"!=a(t))throw TypeError(e);return+t}},{19:19}],6:[function(t,e,n){var a=t(127)("unscopables"),r=Array.prototype;void 0==r[a]&&t(43)(r,a,{}),e.exports=function(t){r[a][t]=!0}},{127:127,43:43}],7:[function(t,e,n){e.exports=function(t,e,n,a){if(!(t instanceof e)||void 0!==a&&a in t)throw TypeError(n+": incorrect invocation!");return t}},{}],8:[function(t,e,n){var a=t(52);e.exports=function(t){if(!a(t))throw TypeError(t+" is not an object!");return t}},{52:52}],9:[function(t,e,n){"use strict";var a=t(117),r=t(112),i=t(116);e.exports=[].copyWithin||function(t,e){var n=a(this),o=i(n.length),s=r(t,o),u=r(e,o),p=arguments.length>2?arguments[2]:void 0,c=Math.min((void 0===p?o:r(p,o))-u,o-s),l=1;for(s>u&&u+c>s&&(l=-1,u+=c-1,s+=c-1);c-- >0;)u in n?n[s]=n[u]:delete n[s],s+=l,u+=l;return n}},{112:112,116:116,117:117}],10:[function(t,e,n){"use strict";var a=t(117),r=t(112),i=t(116);e.exports=function(t){for(var e=a(this),n=i(e.length),o=arguments.length,s=r(o>1?arguments[1]:void 0,n),u=o>2?arguments[2]:void 0,p=void 0===u?n:r(u,n);p>s;)e[s++]=t;return e}},{112:112,116:116,117:117}],11:[function(t,e,n){var a=t(40);e.exports=function(t,e){var n=[];return a(t,!1,n.push,n,e),n}},{40:40}],12:[function(t,e,n){var a=t(115),r=t(116),i=t(112);e.exports=function(t){return function(e,n,o){var s,u=a(e),p=r(u.length),c=i(o,p);if(t&&n!=n){for(;p>c;)if(s=u[c++],s!=s)return!0}else for(;p>c;c++)if((t||c in u)&&u[c]===n)return t||c||0;return!t&&-1}}},{112:112,115:115,116:116}],13:[function(t,e,n){var a=t(26),r=t(48),i=t(117),o=t(116),s=t(16);e.exports=function(t,e){var n=1==t,u=2==t,p=3==t,c=4==t,l=6==t,f=5==t||l,d=e||s;return function(e,s,h){for(var m,g,v=i(e),b=r(v),y=a(s,h,3),x=o(b.length),_=0,w=n?d(e,x):u?d(e,0):void 0;x>_;_++)if((f||_ in b)&&(m=b[_],g=y(m,_,v),t))if(n)w[_]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(c)return!1;return l?-1:p||c?c:w}}},{116:116,117:117,16:16,26:26,48:48}],14:[function(t,e,n){var a=t(4),r=t(117),i=t(48),o=t(116);e.exports=function(t,e,n,s,u){a(e);var p=r(t),c=i(p),l=o(p.length),f=u?l-1:0,d=u?-1:1;if(2>n)for(;;){if(f in c){s=c[f],f+=d;break}if(f+=d,u?0>f:f>=l)throw TypeError("Reduce of empty array with no initial value")}for(;u?f>=0:l>f;f+=d)f in c&&(s=e(s,c[f],f,p));return s}},{116:116,117:117,4:4,48:48}],15:[function(t,e,n){var a=t(52),r=t(50),i=t(127)("species");e.exports=function(t){var e;return r(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!r(e.prototype)||(e=void 0),a(e)&&(e=e[i],null===e&&(e=void 0))),void 0===e?Array:e}},{127:127,50:50,52:52}],16:[function(t,e,n){var a=t(15);e.exports=function(t,e){return new(a(t))(e)}},{15:15}],17:[function(t,e,n){"use strict";var a=t(4),r=t(52),i=t(47),o=[].slice,s={},u=function(t,e,n){if(!(e in s)){for(var a=[],r=0;e>r;r++)a[r]="a["+r+"]";s[e]=Function("F,a","return new F("+a.join(",")+")")}return s[e](t,n)};e.exports=Function.bind||function(t){var e=a(this),n=o.call(arguments,1),s=function(){var a=n.concat(o.call(arguments));return this instanceof s?u(e,a.length,a):i(e,a,t)};return r(e.prototype)&&(s.prototype=e.prototype),s}},{4:4,47:47,52:52}],18:[function(t,e,n){var a=t(19),r=t(127)("toStringTag"),i="Arguments"==a(function(){return arguments}()),o=function(t,e){try{return t[e]}catch(n){}};e.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=o(e=Object(t),r))?n:i?a(e):"Object"==(s=a(e))&&"function"==typeof e.callee?"Arguments":s}},{127:127,19:19}],19:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],20:[function(t,e,n){"use strict";var a=t(72).f,r=t(71),i=t(91),o=t(26),s=t(7),u=t(40),p=t(56),c=t(58),l=t(98),f=t(30),d=t(66).fastKey,h=t(124),m=f?"_s":"size",g=function(t,e){var n,a=d(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,p){var c=t(function(t,a){s(t,c,e,"_i"),t._t=e,t._i=r(null),t._f=void 0,t._l=void 0,t[m]=0,void 0!=a&&u(a,n,t[p],t)});return i(c.prototype,{clear:function(){for(var t=h(this,e),n=t._i,a=t._f;a;a=a.n)a.r=!0,a.p&&(a.p=a.p.n=void 0),delete n[a.i];t._f=t._l=void 0,t[m]=0},"delete":function(t){var n=h(this,e),a=g(n,t);if(a){var r=a.n,i=a.p;delete n._i[a.i],a.r=!0,i&&(i.n=r),r&&(r.p=i),n._f==a&&(n._f=r),n._l==a&&(n._l=i),n[m]--}return!!a},forEach:function(t){h(this,e);for(var n,a=o(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(a(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(h(this,e),t)}}),f&&a(c.prototype,"size",{get:function(){return h(this,e)[m]}}),c},def:function(t,e,n){var a,r,i=g(t,e);return i?i.v=n:(t._l=i={i:r=d(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[m]++,"F"!==r&&(t._i[r]=i)),t},getEntry:g,setStrong:function(t,e,n){p(t,e,function(t,n){this._t=h(t,e),this._k=n,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?c(0,n.k):"values"==e?c(0,n.v):c(0,[n.k,n.v]):(t._t=void 0,c(1))},n?"entries":"values",!n,!0),l(e)}}},{124:124,26:26,30:30,40:40,56:56,58:58,66:66,7:7,71:71,72:72,91:91,98:98}],21:[function(t,e,n){var a=t(18),r=t(11);e.exports=function(t){return function(){if(a(this)!=t)throw TypeError(t+"#toJSON isn't generic");return r(this)}}},{11:11,18:18}],22:[function(t,e,n){"use strict";var a=t(91),r=t(66).getWeak,i=t(8),o=t(52),s=t(7),u=t(40),p=t(13),c=t(42),l=t(124),f=p(5),d=p(6),h=0,m=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},v=function(t,e){return f(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=v(this,t);return e?e[1]:void 0},has:function(t){return!!v(this,t)},set:function(t,e){var n=v(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=d(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,i){var p=t(function(t,a){s(t,p,e,"_i"),t._t=e,t._i=h++,t._l=void 0,void 0!=a&&u(a,n,t[i],t)});return a(p.prototype,{"delete":function(t){if(!o(t))return!1;var n=r(t);return n===!0?m(l(this,e))["delete"](t):n&&c(n,this._i)&&delete n[this._i]},has:function(t){if(!o(t))return!1;var n=r(t);return n===!0?m(l(this,e)).has(t):n&&c(n,this._i)}}),p},def:function(t,e,n){var a=r(i(e),!0);return a===!0?m(t).set(e,n):a[t._i]=n,t},ufstore:m}},{124:124,13:13,40:40,42:42,52:52,66:66,7:7,8:8,91:91}],23:[function(t,e,n){"use strict";var a=t(41),r=t(34),i=t(92),o=t(91),s=t(66),u=t(40),p=t(7),c=t(52),l=t(36),f=t(57),d=t(99),h=t(46);e.exports=function(t,e,n,m,g,v){var b=a[t],y=b,x=g?"set":"add",_=y&&y.prototype,w={},k=function(t){var e=_[t];i(_,t,"delete"==t?function(t){return v&&!c(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return v&&!c(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return v&&!c(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof y&&(v||_.forEach&&!l(function(){(new y).entries().next()}))){var S=new y,E=S[x](v?{}:-0,1)!=S,P=l(function(){S.has(1)}),C=f(function(t){new y(t)}),A=!v&&l(function(){for(var t=new y,e=5;e--;)t[x](e,e);return!t.has(-0)});C||(y=e(function(e,n){p(e,y,t);var a=h(new b,e,y);return void 0!=n&&u(n,g,a[x],a),a}),y.prototype=_,_.constructor=y),(P||A)&&(k("delete"),k("has"),g&&k("get")),(A||E)&&k(x),v&&_.clear&&delete _.clear}else y=m.getConstructor(e,t,g,x),o(y.prototype,n),s.NEED=!0;return d(y,t),w[t]=y,r(r.G+r.W+r.F*(y!=b),w),v||m.setStrong(y,t,g),y}},{34:34,36:36,40:40,41:41,46:46,52:52,57:57,66:66,7:7,91:91,92:92,99:99}],24:[function(t,e,n){var a=e.exports={version:"2.5.5"};"number"==typeof __e&&(__e=a)},{}],25:[function(t,e,n){"use strict";var a=t(72),r=t(90);e.exports=function(t,e,n){e in t?a.f(t,e,r(0,n)):t[e]=n}},{72:72,90:90}],26:[function(t,e,n){var a=t(4);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{4:4}],27:[function(t,e,n){"use strict";var a=t(36),r=Date.prototype.getTime,i=Date.prototype.toISOString,o=function(t){return t>9?t:"0"+t};e.exports=a(function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-5e13-1))})||!a(function(){i.call(new Date(NaN))})?function(){if(!isFinite(r.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),a=0>e?"-":e>9999?"+":"";return a+("00000"+Math.abs(e)).slice(a?-6:-4)+"-"+o(t.getUTCMonth()+1)+"-"+o(t.getUTCDate())+"T"+o(t.getUTCHours())+":"+o(t.getUTCMinutes())+":"+o(t.getUTCSeconds())+"."+(n>99?n:"0"+o(n))+"Z"}:i},{36:36}],28:[function(t,e,n){"use strict";var a=t(8),r=t(118),i="number";e.exports=function(t){if("string"!==t&&t!==i&&"default"!==t)throw TypeError("Incorrect hint");return r(a(this),t!=i)}},{118:118,8:8}],29:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],30:[function(t,e,n){e.exports=!t(36)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{36:36}],31:[function(t,e,n){var a=t(52),r=t(41).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{41:41,52:52}],32:[function(t,e,n){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],33:[function(t,e,n){var a=t(81),r=t(78),i=t(82);e.exports=function(t){var e=a(t),n=r.f;if(n)for(var o,s=n(t),u=i.f,p=0;s.length>p;)u.call(t,o=s[p++])&&e.push(o);return e}},{78:78,81:81,82:82}],34:[function(t,e,n){var a=t(41),r=t(24),i=t(43),o=t(92),s=t(26),u="prototype",p=function(t,e,n){var c,l,f,d,h=t&p.F,m=t&p.G,g=t&p.S,v=t&p.P,b=t&p.B,y=m?a:g?a[e]||(a[e]={}):(a[e]||{})[u],x=m?r:r[e]||(r[e]={}),_=x[u]||(x[u]={});m&&(n=e);for(c in n)l=!h&&y&&void 0!==y[c],f=(l?y:n)[c],d=b&&l?s(f,a):v&&"function"==typeof f?s(Function.call,f):f,y&&o(y,c,f,t&p.U),x[c]!=f&&i(x,c,d),v&&_[c]!=f&&(_[c]=f)};a.core=r,p.F=1,p.G=2,p.S=4,p.P=8,p.B=16,p.W=32,p.U=64,p.R=128,e.exports=p},{24:24,26:26,41:41,43:43,92:92}],35:[function(t,e,n){var a=t(127)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{127:127}],36:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],37:[function(t,e,n){"use strict";var a=t(43),r=t(92),i=t(36),o=t(29),s=t(127);e.exports=function(t,e,n){var u=s(t),p=n(o,u,""[t]),c=p[0],l=p[1];i(function(){var e={};return e[u]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,c),a(RegExp.prototype,u,2==e?function(t,e){return l.call(t,this,e)}:function(t){return l.call(t,this)}))}},{127:127,29:29,36:36,43:43,92:92}],38:[function(t,e,n){"use strict";var a=t(8);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{8:8}],39:[function(t,e,n){"use strict";function a(t,e,n,p,c,l,f,d){for(var h,m,g=c,v=0,b=f?s(f,d,3):!1;p>v;){if(v in n){if(h=b?b(n[v],v,e):n[v],m=!1,i(h)&&(m=h[u],m=void 0!==m?!!m:r(h)),m&&l>0)g=a(t,e,h,o(h.length),g,l-1)-1;else{if(g>=9007199254740991)throw TypeError();t[g]=h}g++}v++}return g}var r=t(50),i=t(52),o=t(116),s=t(26),u=t(127)("isConcatSpreadable");e.exports=a},{116:116,127:127,26:26,50:50,52:52}],40:[function(t,e,n){var a=t(26),r=t(54),i=t(49),o=t(8),s=t(116),u=t(128),p={},c={},n=e.exports=function(t,e,n,l,f){var d,h,m,g,v=f?function(){return t}:u(t),b=a(n,l,e?2:1),y=0;if("function"!=typeof v)throw TypeError(t+" is not iterable!");if(i(v)){for(d=s(t.length);d>y;y++)if(g=e?b(o(h=t[y])[0],h[1]):b(t[y]),g===p||g===c)return g}else for(m=v.call(t);!(h=m.next()).done;)if(g=r(m,b,h.value,e),g===p||g===c)return g};n.BREAK=p,n.RETURN=c},{116:116,128:128,26:26,49:49,54:54,8:8}],41:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],42:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],43:[function(t,e,n){var a=t(72),r=t(90);e.exports=t(30)?function(t,e,n){return a.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{30:30,72:72,90:90}],44:[function(t,e,n){var a=t(41).document;e.exports=a&&a.documentElement},{41:41}],45:[function(t,e,n){e.exports=!t(30)&&!t(36)(function(){return 7!=Object.defineProperty(t(31)("div"),"a",{get:function(){return 7}}).a})},{30:30,31:31,36:36}],46:[function(t,e,n){var a=t(52),r=t(97).set;e.exports=function(t,e,n){var i,o=e.constructor;return o!==n&&"function"==typeof o&&(i=o.prototype)!==n.prototype&&a(i)&&r&&r(t,i),t}},{52:52,97:97}],47:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],48:[function(t,e,n){var a=t(19);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{19:19}],49:[function(t,e,n){var a=t(59),r=t(127)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{127:127,59:59}],50:[function(t,e,n){var a=t(19);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{19:19}],51:[function(t,e,n){var a=t(52),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{52:52}],52:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],53:[function(t,e,n){var a=t(52),r=t(19),i=t(127)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{127:127,19:19,52:52}],54:[function(t,e,n){var a=t(8);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{8:8}],55:[function(t,e,n){"use strict";var a=t(71),r=t(90),i=t(99),o={};t(43)(o,t(127)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a(o,{next:r(1,n)}),i(t,e+" Iterator")}},{127:127,43:43,71:71,90:90,99:99}],56:[function(t,e,n){"use strict";var a=t(60),r=t(34),i=t(92),o=t(43),s=t(59),u=t(55),p=t(99),c=t(79),l=t(127)("iterator"),f=!([].keys&&"next"in[].keys()),d="@@iterator",h="keys",m="values",g=function(){return this};e.exports=function(t,e,n,v,b,y,x){u(n,e,v);var _,w,k,S=function(t){if(!f&&t in A)return A[t];switch(t){case h:return function(){return new n(this,t)};case m:return function(){return new n(this,t)}}return function(){return new n(this,t)}},E=e+" Iterator",P=b==m,C=!1,A=t.prototype,O=A[l]||A[d]||b&&A[b],T=O||S(b),R=b?P?S("entries"):T:void 0,M="Array"==e?A.entries||O:O;if(M&&(k=c(M.call(new t)),k!==Object.prototype&&k.next&&(p(k,E,!0),a||"function"==typeof k[l]||o(k,l,g))),P&&O&&O.name!==m&&(C=!0,T=function(){return O.call(this)}),a&&!x||!f&&!C&&A[l]||o(A,l,T),s[e]=T,s[E]=g,b)if(_={values:P?T:S(m),keys:y?T:S(h),entries:R},x)for(w in _)w in A||i(A,w,_[w]);else r(r.P+r.F*(f||C),e,_);return _}},{127:127,34:34,43:43,55:55,59:59,60:60,79:79,92:92,99:99}],57:[function(t,e,n){var a=t(127)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{127:127}],58:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],59:[function(t,e,n){e.exports={}},{}],60:[function(t,e,n){e.exports=!1},{}],61:[function(t,e,n){var a=Math.expm1;e.exports=!a||a(10)>22025.465794806718||a(10)<22025.465794806718||-2e-17!=a(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}:a},{}],62:[function(t,e,n){var a=t(65),r=Math.pow,i=r(2,-52),o=r(2,-23),s=r(2,127)*(2-o),u=r(2,-126),p=function(t){return t+1/i-1/i};e.exports=Math.fround||function(t){var e,n,r=Math.abs(t),c=a(t);return u>r?c*p(r/u/o)*u*o:(e=(1+o/i)*r,n=e-(e-r),n>s||n!=n?c*(1/0):c*n)}},{65:65}],63:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],64:[function(t,e,n){e.exports=Math.scale||function(t,e,n,a,r){return 0===arguments.length||t!=t||e!=e||n!=n||a!=a||r!=r?NaN:t===1/0||t===-(1/0)?t:(t-e)*(r-a)/(n-e)+a}},{}],65:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],66:[function(t,e,n){var a=t(122)("meta"),r=t(52),i=t(42),o=t(72).f,s=0,u=Object.isExtensible||function(){return!0},p=!t(36)(function(){return u(Object.preventExtensions({}))}),c=function(t){o(t,a,{value:{i:"O"+ ++s,w:{}}})},l=function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,a)){if(!u(t))return"F";if(!e)return"E";c(t)}return t[a].i},f=function(t,e){if(!i(t,a)){if(!u(t))return!0;if(!e)return!1;c(t)}return t[a].w},d=function(t){return p&&h.NEED&&u(t)&&!i(t,a)&&c(t),t},h=e.exports={KEY:a,NEED:!1,fastKey:l,getWeak:f,onFreeze:d}},{122:122,36:36,42:42,52:52,72:72}],67:[function(t,e,n){var a=t(159),r=t(34),i=t(101)("metadata"),o=i.store||(i.store=new(t(265))),s=function(t,e,n){var r=o.get(t);if(!r){if(!n)return;o.set(t,r=new a)}var i=r.get(e);if(!i){if(!n)return;r.set(e,i=new a)}return i},u=function(t,e,n){var a=s(e,n,!1);return void 0===a?!1:a.has(t)},p=function(t,e,n){var a=s(e,n,!1);return void 0===a?void 0:a.get(t)},c=function(t,e,n,a){s(n,a,!0).set(t,e)},l=function(t,e){var n=s(t,e,!1),a=[];return n&&n.forEach(function(t,e){a.push(e)}),a},f=function(t){return void 0===t||"symbol"==typeof t?t:t+""},d=function(t){r(r.S,"Reflect",t)};e.exports={store:o,map:s,has:u,get:p,set:c,keys:l,key:f,exp:d}},{101:101,159:159,265:265,34:34}],68:[function(t,e,n){var a=t(41),r=t(111).set,i=a.MutationObserver||a.WebKitMutationObserver,o=a.process,s=a.Promise,u="process"==t(19)(o);e.exports=function(){var t,e,n,p=function(){var a,r;for(u&&(a=o.domain)&&a.exit();t;){r=t.fn,t=t.next;try{r()}catch(i){throw t?n():e=void 0,i}}e=void 0,a&&a.enter()};if(u)n=function(){o.nextTick(p)};else if(!i||a.navigator&&a.navigator.standalone)if(s&&s.resolve){var c=s.resolve();n=function(){c.then(p)}}else n=function(){r.call(a,p)};else{var l=!0,f=document.createTextNode("");new i(p).observe(f,{characterData:!0}),n=function(){f.data=l=!l}}return function(a){var r={fn:a,next:void 0};e&&(e.next=r),t||(t=r,n()),e=r}}},{111:111,19:19,41:41}],69:[function(t,e,n){"use strict";function a(t){var e,n;this.promise=new t(function(t,a){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=a}),this.resolve=r(e),this.reject=r(n)}var r=t(4);e.exports.f=function(t){return new a(t)}},{4:4}],70:[function(t,e,n){"use strict";var a=t(81),r=t(78),i=t(82),o=t(117),s=t(48),u=Object.assign;e.exports=!u||t(36)(function(){var t={},e={},n=Symbol(),a="abcdefghijklmnopqrst";return t[n]=7,a.split("").forEach(function(t){e[t]=t}),7!=u({},t)[n]||Object.keys(u({},e)).join("")!=a})?function(t,e){for(var n=o(t),u=arguments.length,p=1,c=r.f,l=i.f;u>p;)for(var f,d=s(arguments[p++]),h=c?a(d).concat(c(d)):a(d),m=h.length,g=0;m>g;)l.call(d,f=h[g++])&&(n[f]=d[f]);return n}:u},{117:117,36:36,48:48,78:78,81:81,82:82}],71:[function(t,e,n){var a=t(8),r=t(73),i=t(32),o=t(100)("IE_PROTO"),s=function(){},u="prototype",p=function(){var e,n=t(31)("iframe"),a=i.length,r="<",o=">";for(n.style.display="none",t(44).appendChild(n),n.src="javascript:",e=n.contentWindow.document,e.open(),e.write(r+"script"+o+"document.F=Object"+r+"/script"+o),e.close(),p=e.F;a--;)delete p[u][i[a]];return p()};e.exports=Object.create||function(t,e){var n;return null!==t?(s[u]=a(t),n=new s,s[u]=null,n[o]=t):n=p(),void 0===e?n:r(n,e)}},{100:100,31:31,32:32,44:44,73:73,8:8}],72:[function(t,e,n){var a=t(8),r=t(45),i=t(118),o=Object.defineProperty;n.f=t(30)?Object.defineProperty:function(t,e,n){if(a(t),e=i(e,!0),a(n),r)try{return o(t,e,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},{118:118,30:30,45:45,8:8}],73:[function(t,e,n){var a=t(72),r=t(8),i=t(81);e.exports=t(30)?Object.defineProperties:function(t,e){r(t);for(var n,o=i(e),s=o.length,u=0;s>u;)a.f(t,n=o[u++],e[n]);return t}},{30:30,72:72,8:8,81:81}],74:[function(t,e,n){"use strict";e.exports=t(60)||!t(36)(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete t(41)[e]})},{36:36,41:41,60:60}],75:[function(t,e,n){var a=t(82),r=t(90),i=t(115),o=t(118),s=t(42),u=t(45),p=Object.getOwnPropertyDescriptor;n.f=t(30)?p:function(t,e){if(t=i(t),e=o(e,!0),u)try{return p(t,e)}catch(n){}return s(t,e)?r(!a.f.call(t,e),t[e]):void 0}},{115:115,118:118,30:30,42:42,45:45,82:82,90:90}],76:[function(t,e,n){var a=t(115),r=t(77).f,i={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.f=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{115:115,77:77}],77:[function(t,e,n){var a=t(80),r=t(32).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return a(t,r)}},{32:32,80:80}],78:[function(t,e,n){n.f=Object.getOwnPropertySymbols},{}],79:[function(t,e,n){var a=t(42),r=t(117),i=t(100)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(t){return t=r(t),a(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},{100:100,117:117,42:42}],80:[function(t,e,n){var a=t(42),r=t(115),i=t(12)(!1),o=t(100)("IE_PROTO");e.exports=function(t,e){var n,s=r(t),u=0,p=[];for(n in s)n!=o&&a(s,n)&&p.push(n);for(;e.length>u;)a(s,n=e[u++])&&(~i(p,n)||p.push(n));return p}},{100:100,115:115,12:12,42:42}],81:[function(t,e,n){var a=t(80),r=t(32);e.exports=Object.keys||function(t){return a(t,r)}},{32:32,80:80}],82:[function(t,e,n){n.f={}.propertyIsEnumerable},{}],83:[function(t,e,n){var a=t(34),r=t(24),i=t(36);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{24:24,34:34,36:36}],84:[function(t,e,n){var a=t(81),r=t(115),i=t(82).f;e.exports=function(t){return function(e){for(var n,o=r(e),s=a(o),u=s.length,p=0,c=[];u>p;)i.call(o,n=s[p++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{115:115,81:81,82:82}],85:[function(t,e,n){var a=t(77),r=t(78),i=t(8),o=t(41).Reflect;e.exports=o&&o.ownKeys||function(t){var e=a.f(i(t)),n=r.f;return n?e.concat(n(t)):e}},{41:41,77:77,78:78,8:8}],86:[function(t,e,n){var a=t(41).parseFloat,r=t(109).trim;e.exports=1/a(t(110)+"-0")!==-(1/0)?function(t){var e=r(t+"",3),n=a(e);return 0===n&&"-"==e.charAt(0)?-0:n}:a},{109:109,110:110,41:41}],87:[function(t,e,n){var a=t(41).parseInt,r=t(109).trim,i=t(110),o=/^[-+]?0[xX]/;e.exports=8!==a(i+"08")||22!==a(i+"0x16")?function(t,e){var n=r(t+"",3);return a(n,e>>>0||(o.test(n)?16:10))}:a},{109:109,110:110,41:41}],88:[function(t,e,n){e.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},{}],89:[function(t,e,n){var a=t(8),r=t(52),i=t(69);e.exports=function(t,e){if(a(t),r(e)&&e.constructor===t)return e;var n=i.f(t),o=n.resolve;return o(e),n.promise}},{52:52,69:69,8:8}],90:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],91:[function(t,e,n){var a=t(92);e.exports=function(t,e,n){for(var r in e)a(t,r,e[r],n);return t}},{92:92}],92:[function(t,e,n){var a=t(41),r=t(43),i=t(42),o=t(122)("src"),s="toString",u=Function[s],p=(""+u).split(s);t(24).inspectSource=function(t){return u.call(t)},(e.exports=function(t,e,n,s){var u="function"==typeof n;u&&(i(n,"name")||r(n,"name",e)),t[e]!==n&&(u&&(i(n,o)||r(n,o,t[e]?""+t[e]:p.join(e+""))),t===a?t[e]=n:s?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,s,function(){ -return"function"==typeof this&&this[o]||u.call(this)})},{122:122,24:24,41:41,42:42,43:43}],93:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],94:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],95:[function(t,e,n){"use strict";var a=t(34),r=t(4),i=t(26),o=t(40);e.exports=function(t){a(a.S,t,{from:function(t){var e,n,a,s,u=arguments[1];return r(this),e=void 0!==u,e&&r(u),void 0==t?new this:(n=[],e?(a=0,s=i(u,arguments[2],2),o(t,!1,function(t){n.push(s(t,a++))})):o(t,!1,n.push,n),new this(n))}})}},{26:26,34:34,4:4,40:40}],96:[function(t,e,n){"use strict";var a=t(34);e.exports=function(t){a(a.S,t,{of:function(){for(var t=arguments.length,e=Array(t);t--;)e[t]=arguments[t];return new this(e)}})}},{34:34}],97:[function(t,e,n){var a=t(52),r=t(8),i=function(t,e){if(r(t),!a(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,a){try{a=t(26)(Function.call,t(75).f(Object.prototype,"__proto__").set,2),a(e,[]),n=!(e instanceof Array)}catch(r){n=!0}return function(t,e){return i(t,e),n?t.__proto__=e:a(t,e),t}}({},!1):void 0),check:i}},{26:26,52:52,75:75,8:8}],98:[function(t,e,n){"use strict";var a=t(41),r=t(72),i=t(30),o=t(127)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.f(e,o,{configurable:!0,get:function(){return this}})}},{127:127,30:30,41:41,72:72}],99:[function(t,e,n){var a=t(72).f,r=t(42),i=t(127)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{127:127,42:42,72:72}],100:[function(t,e,n){var a=t(101)("keys"),r=t(122);e.exports=function(t){return a[t]||(a[t]=r(t))}},{101:101,122:122}],101:[function(t,e,n){var a=t(41),r="__core-js_shared__",i=a[r]||(a[r]={});e.exports=function(t){return i[t]||(i[t]={})}},{41:41}],102:[function(t,e,n){var a=t(8),r=t(4),i=t(127)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{127:127,4:4,8:8}],103:[function(t,e,n){"use strict";var a=t(36);e.exports=function(t,e){return!!t&&a(function(){e?t.call(null,function(){},1):t.call(null)})}},{36:36}],104:[function(t,e,n){var a=t(114),r=t(29);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",u=a(n),p=s.length;return 0>u||u>=p?t?"":void 0:(i=s.charCodeAt(u),55296>i||i>56319||u+1===p||(o=s.charCodeAt(u+1))<56320||o>57343?t?s.charAt(u):i:t?s.slice(u,u+2):(i-55296<<10)+(o-56320)+65536)}}},{114:114,29:29}],105:[function(t,e,n){var a=t(53),r=t(29);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{29:29,53:53}],106:[function(t,e,n){var a=t(34),r=t(36),i=t(29),o=/"/g,s=function(t,e,n,a){var r=i(t)+"",s="<"+e;return""!==n&&(s+=" "+n+'="'+(a+"").replace(o,""")+'"'),s+">"+r+""};e.exports=function(t,e){var n={};n[t]=e(s),a(a.P+a.F*r(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},{29:29,34:34,36:36}],107:[function(t,e,n){var a=t(116),r=t(108),i=t(29);e.exports=function(t,e,n,o){var s=i(t)+"",u=s.length,p=void 0===n?" ":n+"",c=a(e);if(u>=c||""==p)return s;var l=c-u,f=r.call(p,Math.ceil(l/p.length));return f.length>l&&(f=f.slice(0,l)),o?f+s:s+f}},{108:108,116:116,29:29}],108:[function(t,e,n){"use strict";var a=t(114),r=t(29);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{114:114,29:29}],109:[function(t,e,n){var a=t(34),r=t(29),i=t(36),o=t(110),s="["+o+"]",u="​…",p=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e,n){var r={},s=i(function(){return!!o[t]()||u[t]()!=u}),p=r[t]=s?e(f):o[t];n&&(r[n]=p),a(a.P+a.F*s,"String",r)},f=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(p,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{110:110,29:29,34:34,36:36}],110:[function(t,e,n){e.exports=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff"},{}],111:[function(t,e,n){var a,r,i,o=t(26),s=t(47),u=t(44),p=t(31),c=t(41),l=c.process,f=c.setImmediate,d=c.clearImmediate,h=c.MessageChannel,m=c.Dispatch,g=0,v={},b="onreadystatechange",y=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},x=function(t){y.call(t.data)};f&&d||(f=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++g]=function(){s("function"==typeof t?t:Function(t),e)},a(g),g},d=function(t){delete v[t]},"process"==t(19)(l)?a=function(t){l.nextTick(o(y,t,1))}:m&&m.now?a=function(t){m.now(o(y,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=x,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",x,!1)):a=b in p("script")?function(t){u.appendChild(p("script"))[b]=function(){u.removeChild(this),y.call(t)}}:function(t){setTimeout(o(y,t,1),0)}),e.exports={set:f,clear:d}},{19:19,26:26,31:31,41:41,44:44,47:47}],112:[function(t,e,n){var a=t(114),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{114:114}],113:[function(t,e,n){var a=t(114),r=t(116);e.exports=function(t){if(void 0===t)return 0;var e=a(t),n=r(e);if(e!==n)throw RangeError("Wrong length!");return n}},{114:114,116:116}],114:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],115:[function(t,e,n){var a=t(48),r=t(29);e.exports=function(t){return a(r(t))}},{29:29,48:48}],116:[function(t,e,n){var a=t(114),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{114:114}],117:[function(t,e,n){var a=t(29);e.exports=function(t){return Object(a(t))}},{29:29}],118:[function(t,e,n){var a=t(52);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{52:52}],119:[function(t,e,n){"use strict";if(t(30)){var a=t(60),r=t(41),i=t(36),o=t(34),s=t(121),u=t(120),p=t(26),c=t(7),l=t(90),f=t(43),d=t(91),h=t(114),m=t(116),g=t(113),v=t(112),b=t(118),y=t(42),x=t(18),_=t(52),w=t(117),k=t(49),S=t(71),E=t(79),P=t(77).f,C=t(128),A=t(122),O=t(127),T=t(13),R=t(12),M=t(102),L=t(140),j=t(59),D=t(57),N=t(98),F=t(10),I=t(9),B=t(72),q=t(75),U=B.f,V=q.f,G=r.RangeError,z=r.TypeError,W=r.Uint8Array,H="ArrayBuffer",Q="Shared"+H,K="BYTES_PER_ELEMENT",Y="prototype",$=Array[Y],J=u.ArrayBuffer,X=u.DataView,Z=T(0),tt=T(2),et=T(3),nt=T(4),at=T(5),rt=T(6),it=R(!0),ot=R(!1),st=L.values,ut=L.keys,pt=L.entries,ct=$.lastIndexOf,lt=$.reduce,ft=$.reduceRight,dt=$.join,ht=$.sort,mt=$.slice,gt=$.toString,vt=$.toLocaleString,bt=O("iterator"),yt=O("toStringTag"),xt=A("typed_constructor"),_t=A("def_constructor"),wt=s.CONSTR,kt=s.TYPED,St=s.VIEW,Et="Wrong length!",Pt=T(1,function(t,e){return Rt(M(t,t[_t]),e)}),Ct=i(function(){return 1===new W(new Uint16Array([1]).buffer)[0]}),At=!!W&&!!W[Y].set&&i(function(){new W(1).set({})}),Ot=function(t,e){var n=h(t);if(0>n||n%e)throw G("Wrong offset!");return n},Tt=function(t){if(_(t)&&kt in t)return t;throw z(t+" is not a typed array!")},Rt=function(t,e){if(!(_(t)&&xt in t))throw z("It is not a typed array constructor!");return new t(e)},Mt=function(t,e){return Lt(M(t,t[_t]),e)},Lt=function(t,e){for(var n=0,a=e.length,r=Rt(t,a);a>n;)r[n]=e[n++];return r},jt=function(t,e,n){U(t,e,{get:function(){return this._d[n]}})},Dt=function(t){var e,n,a,r,i,o,s=w(t),u=arguments.length,c=u>1?arguments[1]:void 0,l=void 0!==c,f=C(s);if(void 0!=f&&!k(f)){for(o=f.call(s),a=[],e=0;!(i=o.next()).done;e++)a.push(i.value);s=a}for(l&&u>2&&(c=p(c,arguments[2],2)),e=0,n=m(s.length),r=Rt(this,n);n>e;e++)r[e]=l?c(s[e],e):s[e];return r},Nt=function(){for(var t=0,e=arguments.length,n=Rt(this,e);e>t;)n[t]=arguments[t++];return n},Ft=!!W&&i(function(){vt.call(new W(1))}),It=function(){return vt.apply(Ft?mt.call(Tt(this)):Tt(this),arguments)},Bt={copyWithin:function(t,e){return I.call(Tt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return nt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return F.apply(Tt(this),arguments)},filter:function(t){return Mt(this,tt(Tt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return at(Tt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return rt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Z(Tt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return ot(Tt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return it(Tt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return dt.apply(Tt(this),arguments)},lastIndexOf:function(t){return ct.apply(Tt(this),arguments)},map:function(t){return Pt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return lt.apply(Tt(this),arguments)},reduceRight:function(t){return ft.apply(Tt(this),arguments)},reverse:function(){for(var t,e=this,n=Tt(e).length,a=Math.floor(n/2),r=0;a>r;)t=e[r],e[r++]=e[--n],e[n]=t;return e},some:function(t){return et(Tt(this),t,arguments.length>1?arguments[1]:void 0)},sort:function(t){return ht.call(Tt(this),t)},subarray:function(t,e){var n=Tt(this),a=n.length,r=v(t,a);return new(M(n,n[_t]))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,m((void 0===e?a:v(e,a))-r))}},qt=function(t,e){return Mt(this,mt.call(Tt(this),t,e))},Ut=function(t){Tt(this);var e=Ot(arguments[1],1),n=this.length,a=w(t),r=m(a.length),i=0;if(r+e>n)throw G(Et);for(;r>i;)this[e+i]=a[i++]},Vt={entries:function(){return pt.call(Tt(this))},keys:function(){return ut.call(Tt(this))},values:function(){return st.call(Tt(this))}},Gt=function(t,e){return _(t)&&t[kt]&&"symbol"!=typeof e&&e in t&&+e+""==e+""},zt=function(t,e){return Gt(t,e=b(e,!0))?l(2,t[e]):V(t,e)},Wt=function(t,e,n){return!(Gt(t,e=b(e,!0))&&_(n)&&y(n,"value"))||y(n,"get")||y(n,"set")||n.configurable||y(n,"writable")&&!n.writable||y(n,"enumerable")&&!n.enumerable?U(t,e,n):(t[e]=n.value,t)};wt||(q.f=zt,B.f=Wt),o(o.S+o.F*!wt,"Object",{getOwnPropertyDescriptor:zt,defineProperty:Wt}),i(function(){gt.call({})})&&(gt=vt=function(){return dt.call(this)});var Ht=d({},Bt);d(Ht,Vt),f(Ht,bt,Vt.values),d(Ht,{slice:qt,set:Ut,constructor:function(){},toString:gt,toLocaleString:It}),jt(Ht,"buffer","b"),jt(Ht,"byteOffset","o"),jt(Ht,"byteLength","l"),jt(Ht,"length","e"),U(Ht,yt,{get:function(){return this[kt]}}),e.exports=function(t,e,n,u){u=!!u;var p=t+(u?"Clamped":"")+"Array",l="get"+t,d="set"+t,h=r[p],v=h||{},b=h&&E(h),y=!h||!s.ABV,w={},k=h&&h[Y],C=function(t,n){var a=t._d;return a.v[l](n*e+a.o,Ct)},A=function(t,n,a){var r=t._d;u&&(a=(a=Math.round(a))<0?0:a>255?255:255&a),r.v[d](n*e+r.o,a,Ct)},O=function(t,e){U(t,e,{get:function(){return C(this,e)},set:function(t){return A(this,e,t)},enumerable:!0})};y?(h=n(function(t,n,a,r){c(t,h,p,"_d");var i,o,s,u,l=0,d=0;if(_(n)){if(!(n instanceof J||(u=x(n))==H||u==Q))return kt in n?Lt(h,n):Dt.call(h,n);i=n,d=Ot(a,e);var v=n.byteLength;if(void 0===r){if(v%e)throw G(Et);if(o=v-d,0>o)throw G(Et)}else if(o=m(r)*e,o+d>v)throw G(Et);s=o/e}else s=g(n),o=s*e,i=new J(o);for(f(t,"_d",{b:i,o:d,l:o,e:s,v:new X(i)});s>l;)O(t,l++)}),k=h[Y]=S(Ht),f(k,"constructor",h)):i(function(){h(1)})&&i(function(){new h(-1)})&&D(function(t){new h,new h(null),new h(1.5),new h(t)},!0)||(h=n(function(t,n,a,r){c(t,h,p);var i;return _(n)?n instanceof J||(i=x(n))==H||i==Q?void 0!==r?new v(n,Ot(a,e),r):void 0!==a?new v(n,Ot(a,e)):new v(n):kt in n?Lt(h,n):Dt.call(h,n):new v(g(n))}),Z(b!==Function.prototype?P(v).concat(P(b)):P(v),function(t){t in h||f(h,t,v[t])}),h[Y]=k,a||(k.constructor=h));var T=k[bt],R=!!T&&("values"==T.name||void 0==T.name),M=Vt.values;f(h,xt,!0),f(k,kt,p),f(k,St,!0),f(k,_t,h),(u?new h(1)[yt]==p:yt in k)||U(k,yt,{get:function(){return p}}),w[p]=h,o(o.G+o.W+o.F*(h!=v),w),o(o.S,p,{BYTES_PER_ELEMENT:e}),o(o.S+o.F*i(function(){v.of.call(h,1)}),p,{from:Dt,of:Nt}),K in k||f(k,K,e),o(o.P,p,Bt),N(p),o(o.P+o.F*At,p,{set:Ut}),o(o.P+o.F*!R,p,Vt),a||k.toString==gt||(k.toString=gt),o(o.P+o.F*i(function(){new h(1).slice()}),p,{slice:qt}),o(o.P+o.F*(i(function(){return[1,2].toLocaleString()!=new h([1,2]).toLocaleString()})||!i(function(){k.toLocaleString.call([1,2])})),p,{toLocaleString:It}),j[p]=R?T:M,a||R||f(k,bt,M)}}else e.exports=function(){}},{10:10,102:102,112:112,113:113,114:114,116:116,117:117,118:118,12:12,120:120,121:121,122:122,127:127,128:128,13:13,140:140,18:18,26:26,30:30,34:34,36:36,41:41,42:42,43:43,49:49,52:52,57:57,59:59,60:60,7:7,71:71,72:72,75:75,77:77,79:79,9:9,90:90,91:91,98:98}],120:[function(t,e,n){"use strict";function a(t,e,n){var a,r,i,o=Array(n),s=8*n-e-1,u=(1<>1,c=23===e?U(2,-24)-U(2,-77):0,l=0,f=0>t||0===t&&0>1/t?1:0;for(t=q(t),t!=t||t===I?(r=t!=t?1:0,a=u):(a=V(G(t)/z),t*(i=U(2,-a))<1&&(a--,i*=2),t+=a+p>=1?c/i:c*U(2,1-p),t*i>=2&&(a++,i/=2),a+p>=u?(r=0,a=u):a+p>=1?(r=(t*i-1)*U(2,e),a+=p):(r=t*U(2,p-1)*U(2,e),a=0));e>=8;o[l++]=255&r,r/=256,e-=8);for(a=a<0;o[l++]=255&a,a/=256,s-=8);return o[--l]|=128*f,o}function r(t,e,n){var a,r=8*n-e-1,i=(1<>1,s=r-7,u=n-1,p=t[u--],c=127&p;for(p>>=7;s>0;c=256*c+t[u],u--,s-=8);for(a=c&(1<<-s)-1,c>>=-s,s+=e;s>0;a=256*a+t[u],u--,s-=8);if(0===c)c=1-o;else{if(c===i)return a?NaN:p?-I:I;a+=U(2,e),c-=o}return(p?-1:1)*a*U(2,c-e)}function i(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function o(t){return[255&t]}function s(t){return[255&t,t>>8&255]}function u(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function p(t){return a(t,52,8)}function c(t){return a(t,23,4)}function l(t,e,n){P(t[R],e,{get:function(){return this[n]}})}function f(t,e,n,a){var r=+n,i=S(r);if(i+e>t[Y])throw F(L);var o=t[K]._b,s=i+t[$],u=o.slice(s,s+e);return a?u:u.reverse()}function d(t,e,n,a,r,i){var o=+n,s=S(o);if(s+e>t[Y])throw F(L);for(var u=t[K]._b,p=s+t[$],c=a(+r),l=0;e>l;l++)u[p+l]=c[i?l:e-l-1]}var h=t(41),m=t(30),g=t(60),v=t(121),b=t(43),y=t(91),x=t(36),_=t(7),w=t(114),k=t(116),S=t(113),E=t(77).f,P=t(72).f,C=t(10),A=t(99),O="ArrayBuffer",T="DataView",R="prototype",M="Wrong length!",L="Wrong index!",j=h[O],D=h[T],N=h.Math,F=h.RangeError,I=h.Infinity,B=j,q=N.abs,U=N.pow,V=N.floor,G=N.log,z=N.LN2,W="buffer",H="byteLength",Q="byteOffset",K=m?"_b":W,Y=m?"_l":H,$=m?"_o":Q;if(v.ABV){if(!x(function(){j(1)})||!x(function(){new j(-1)})||x(function(){return new j,new j(1.5),new j(NaN),j.name!=O})){j=function(t){return _(this,j),new B(S(t))};for(var J,X=j[R]=B[R],Z=E(B),tt=0;Z.length>tt;)(J=Z[tt++])in j||b(j,J,B[J]);g||(X.constructor=j)}var et=new D(new j(2)),nt=D[R].setInt8;et.setInt8(0,2147483648),et.setInt8(1,2147483649),(et.getInt8(0)||!et.getInt8(1))&&y(D[R],{setInt8:function(t,e){nt.call(this,t,e<<24>>24)},setUint8:function(t,e){nt.call(this,t,e<<24>>24)}},!0)}else j=function(t){_(this,j,O);var e=S(t);this._b=C.call(Array(e),0),this[Y]=e},D=function(t,e,n){_(this,D,T),_(t,j,T);var a=t[Y],r=w(e);if(0>r||r>a)throw F("Wrong offset!");if(n=void 0===n?a-r:k(n),r+n>a)throw F(M);this[K]=t,this[$]=r,this[Y]=n},m&&(l(j,H,"_l"),l(D,W,"_b"),l(D,H,"_l"),l(D,Q,"_o")),y(D[R],{getInt8:function(t){return f(this,1,t)[0]<<24>>24},getUint8:function(t){return f(this,1,t)[0]},getInt16:function(t){var e=f(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=f(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return i(f(this,4,t,arguments[1]))},getUint32:function(t){return i(f(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return r(f(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return r(f(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){d(this,1,t,o,e)},setUint8:function(t,e){d(this,1,t,o,e)},setInt16:function(t,e){d(this,2,t,s,e,arguments[2])},setUint16:function(t,e){d(this,2,t,s,e,arguments[2])},setInt32:function(t,e){d(this,4,t,u,e,arguments[2])},setUint32:function(t,e){d(this,4,t,u,e,arguments[2])},setFloat32:function(t,e){d(this,4,t,c,e,arguments[2])},setFloat64:function(t,e){d(this,8,t,p,e,arguments[2])}});A(j,O),A(D,T),b(D[R],v.VIEW,!0),n[O]=j,n[T]=D},{10:10,113:113,114:114,116:116,121:121,30:30,36:36,41:41,43:43,60:60,7:7,72:72,77:77,91:91,99:99}],121:[function(t,e,n){for(var a,r=t(41),i=t(43),o=t(122),s=o("typed_array"),u=o("view"),p=!(!r.ArrayBuffer||!r.DataView),c=p,l=0,f=9,d="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");f>l;)(a=r[d[l++]])?(i(a.prototype,s,!0),i(a.prototype,u,!0)):c=!1;e.exports={ABV:p,CONSTR:c,TYPED:s,VIEW:u}},{122:122,41:41,43:43}],122:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],123:[function(t,e,n){var a=t(41),r=a.navigator;e.exports=r&&r.userAgent||""},{41:41}],124:[function(t,e,n){var a=t(52);e.exports=function(t,e){if(!a(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},{52:52}],125:[function(t,e,n){var a=t(41),r=t(24),i=t(60),o=t(126),s=t(72).f;e.exports=function(t){var e=r.Symbol||(r.Symbol=i?{}:a.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:o.f(t)})}},{126:126,24:24,41:41,60:60,72:72}],126:[function(t,e,n){n.f=t(127)},{127:127}],127:[function(t,e,n){var a=t(101)("wks"),r=t(122),i=t(41).Symbol,o="function"==typeof i,s=e.exports=function(t){return a[t]||(a[t]=o&&i[t]||(o?i:r)("Symbol."+t))};s.store=a},{101:101,122:122,41:41}],128:[function(t,e,n){var a=t(18),r=t(127)("iterator"),i=t(59);e.exports=t(24).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{127:127,18:18,24:24,59:59}],129:[function(t,e,n){var a=t(34),r=t(93)(/[\\^$*+?.()|[\]{}]/g,"\\$&");a(a.S,"RegExp",{escape:function(t){return r(t)}})},{34:34,93:93}],130:[function(t,e,n){var a=t(34);a(a.P,"Array",{copyWithin:t(9)}),t(6)("copyWithin")},{34:34,6:6,9:9}],131:[function(t,e,n){"use strict";var a=t(34),r=t(13)(4);a(a.P+a.F*!t(103)([].every,!0),"Array",{every:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],132:[function(t,e,n){var a=t(34);a(a.P,"Array",{fill:t(10)}),t(6)("fill")},{10:10,34:34,6:6}],133:[function(t,e,n){"use strict";var a=t(34),r=t(13)(2);a(a.P+a.F*!t(103)([].filter,!0),"Array",{filter:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],134:[function(t,e,n){"use strict";var a=t(34),r=t(13)(6),i="findIndex",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{findIndex:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)(i)},{13:13,34:34,6:6}],135:[function(t,e,n){"use strict";var a=t(34),r=t(13)(5),i="find",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)(i)},{13:13,34:34,6:6}],136:[function(t,e,n){"use strict";var a=t(34),r=t(13)(0),i=t(103)([].forEach,!0);a(a.P+a.F*!i,"Array",{forEach:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],137:[function(t,e,n){"use strict";var a=t(26),r=t(34),i=t(117),o=t(54),s=t(49),u=t(116),p=t(25),c=t(128);r(r.S+r.F*!t(57)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,r,l,f=i(t),d="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,g=void 0!==m,v=0,b=c(f);if(g&&(m=a(m,h>2?arguments[2]:void 0,2)),void 0==b||d==Array&&s(b))for(e=u(f.length),n=new d(e);e>v;v++)p(n,v,g?m(f[v],v):f[v]);else for(l=b.call(f),n=new d;!(r=l.next()).done;v++)p(n,v,g?o(l,m,[r.value,v],!0):r.value);return n.length=v,n}})},{116:116,117:117,128:128,25:25,26:26,34:34,49:49,54:54,57:57}],138:[function(t,e,n){"use strict";var a=t(34),r=t(12)(!1),i=[].indexOf,o=!!i&&1/[1].indexOf(1,-0)<0;a(a.P+a.F*(o||!t(103)(i)),"Array",{indexOf:function(t){return o?i.apply(this,arguments)||0:r(this,t,arguments[1])}})},{103:103,12:12,34:34}],139:[function(t,e,n){var a=t(34);a(a.S,"Array",{isArray:t(50)})},{34:34,50:50}],140:[function(t,e,n){"use strict";var a=t(6),r=t(58),i=t(59),o=t(115);e.exports=t(56)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):"keys"==e?r(0,n):"values"==e?r(0,t[n]):r(0,[n,t[n]])},"values"),i.Arguments=i.Array,a("keys"),a("values"),a("entries")},{115:115,56:56,58:58,59:59,6:6}],141:[function(t,e,n){"use strict";var a=t(34),r=t(115),i=[].join;a(a.P+a.F*(t(48)!=Object||!t(103)(i)),"Array",{join:function(t){return i.call(r(this),void 0===t?",":t)}})},{103:103,115:115,34:34,48:48}],142:[function(t,e,n){"use strict";var a=t(34),r=t(115),i=t(114),o=t(116),s=[].lastIndexOf,u=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(u||!t(103)(s)),"Array",{lastIndexOf:function(t){if(u)return s.apply(this,arguments)||0;var e=r(this),n=o(e.length),a=n-1;for(arguments.length>1&&(a=Math.min(a,i(arguments[1]))),0>a&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}})},{103:103,114:114,115:115,116:116,34:34}],143:[function(t,e,n){"use strict";var a=t(34),r=t(13)(1);a(a.P+a.F*!t(103)([].map,!0),"Array",{map:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],144:[function(t,e,n){"use strict";var a=t(34),r=t(25);a(a.S+a.F*t(36)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)r(n,t,arguments[t++]);return n.length=e,n}})},{25:25,34:34,36:36}],145:[function(t,e,n){"use strict";var a=t(34),r=t(14);a(a.P+a.F*!t(103)([].reduceRight,!0),"Array",{reduceRight:function(t){return r(this,t,arguments.length,arguments[1],!0)}})},{103:103,14:14,34:34}],146:[function(t,e,n){"use strict";var a=t(34),r=t(14);a(a.P+a.F*!t(103)([].reduce,!0),"Array",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},{103:103,14:14,34:34}],147:[function(t,e,n){"use strict";var a=t(34),r=t(44),i=t(19),o=t(112),s=t(116),u=[].slice;a(a.P+a.F*t(36)(function(){r&&u.call(r)}),"Array",{slice:function(t,e){var n=s(this.length),a=i(this);if(e=void 0===e?n:e,"Array"==a)return u.call(this,t,e);for(var r=o(t,n),p=o(e,n),c=s(p-r),l=Array(c),f=0;c>f;f++)l[f]="String"==a?this.charAt(r+f):this[r+f];return l}})},{112:112,116:116,19:19,34:34,36:36,44:44}],148:[function(t,e,n){"use strict";var a=t(34),r=t(13)(3);a(a.P+a.F*!t(103)([].some,!0),"Array",{some:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],149:[function(t,e,n){"use strict";var a=t(34),r=t(4),i=t(117),o=t(36),s=[].sort,u=[1,2,3];a(a.P+a.F*(o(function(){u.sort(void 0)})||!o(function(){u.sort(null)})||!t(103)(s)),"Array",{sort:function(t){return void 0===t?s.call(i(this)):s.call(i(this),r(t))}})},{103:103,117:117,34:34,36:36,4:4}],150:[function(t,e,n){t(98)("Array")},{98:98}],151:[function(t,e,n){var a=t(34);a(a.S,"Date",{now:function(){return(new Date).getTime()}})},{34:34}],152:[function(t,e,n){var a=t(34),r=t(27);a(a.P+a.F*(Date.prototype.toISOString!==r),"Date",{toISOString:r})},{27:27,34:34}],153:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118);a(a.P+a.F*t(36)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=r(this),n=i(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},{117:117,118:118,34:34,36:36}],154:[function(t,e,n){var a=t(127)("toPrimitive"),r=Date.prototype;a in r||t(43)(r,a,t(28))},{127:127,28:28,43:43}],155:[function(t,e,n){var a=Date.prototype,r="Invalid Date",i="toString",o=a[i],s=a.getTime;new Date(NaN)+""!=r&&t(92)(a,i,function(){var t=s.call(this);return t===t?o.call(this):r})},{92:92}],156:[function(t,e,n){var a=t(34);a(a.P,"Function",{bind:t(17)})},{17:17,34:34}],157:[function(t,e,n){"use strict";var a=t(52),r=t(79),i=t(127)("hasInstance"),o=Function.prototype;i in o||t(72).f(o,i,{value:function(t){if("function"!=typeof this||!a(t))return!1;if(!a(this.prototype))return t instanceof this;for(;t=r(t);)if(this.prototype===t)return!0;return!1}})},{127:127,52:52,72:72,79:79}],158:[function(t,e,n){var a=t(72).f,r=Function.prototype,i=/^\s*function ([^ (]*)/,o="name";o in r||t(30)&&a(r,o,{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},{30:30,72:72}],159:[function(t,e,n){"use strict";var a=t(20),r=t(124),i="Map";e.exports=t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=a.getEntry(r(this,i),t);return e&&e.v},set:function(t,e){return a.def(r(this,i),0===t?0:t,e)}},a,!0)},{124:124,20:20,23:23}],160:[function(t,e,n){var a=t(34),r=t(63),i=Math.sqrt,o=Math.acosh;a(a.S+a.F*!(o&&710==Math.floor(o(Number.MAX_VALUE))&&o(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:r(t-1+i(t-1)*i(t+1))}})},{34:34,63:63}],161:[function(t,e,n){function a(t){return isFinite(t=+t)&&0!=t?0>t?-a(-t):Math.log(t+Math.sqrt(t*t+1)):t}var r=t(34),i=Math.asinh;r(r.S+r.F*!(i&&1/i(0)>0),"Math",{asinh:a})},{34:34}],162:[function(t,e,n){var a=t(34),r=Math.atanh;a(a.S+a.F*!(r&&1/r(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{34:34}],163:[function(t,e,n){var a=t(34),r=t(65);a(a.S,"Math",{cbrt:function(t){return r(t=+t)*Math.pow(Math.abs(t),1/3)}})},{34:34,65:65}],164:[function(t,e,n){var a=t(34);a(a.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{34:34}],165:[function(t,e,n){var a=t(34),r=Math.exp;a(a.S,"Math",{cosh:function(t){return(r(t=+t)+r(-t))/2}})},{34:34}],166:[function(t,e,n){var a=t(34),r=t(61);a(a.S+a.F*(r!=Math.expm1),"Math",{expm1:r})},{34:34,61:61}],167:[function(t,e,n){var a=t(34);a(a.S,"Math",{fround:t(62)})},{34:34,62:62}],168:[function(t,e,n){var a=t(34),r=Math.abs;a(a.S,"Math",{hypot:function(t,e){for(var n,a,i=0,o=0,s=arguments.length,u=0;s>o;)n=r(arguments[o++]),n>u?(a=u/n,i=i*a*a+1,u=n):n>0?(a=n/u,i+=a*a):i+=n;return u===1/0?1/0:u*Math.sqrt(i)}})},{34:34}],169:[function(t,e,n){var a=t(34),r=Math.imul;a(a.S+a.F*t(36)(function(){return-5!=r(4294967295,5)||2!=r.length}),"Math",{imul:function(t,e){var n=65535,a=+t,r=+e,i=n&a,o=n&r;return 0|i*o+((n&a>>>16)*o+i*(n&r>>>16)<<16>>>0)}})},{34:34,36:36}],170:[function(t,e,n){var a=t(34);a(a.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},{34:34}],171:[function(t,e,n){var a=t(34);a(a.S,"Math",{log1p:t(63)})},{34:34,63:63}],172:[function(t,e,n){var a=t(34);a(a.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},{34:34}],173:[function(t,e,n){var a=t(34);a(a.S,"Math",{sign:t(65)})},{34:34,65:65}],174:[function(t,e,n){var a=t(34),r=t(61),i=Math.exp;a(a.S+a.F*t(36)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(r(t)-r(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{34:34,36:36,61:61}],175:[function(t,e,n){var a=t(34),r=t(61),i=Math.exp;a(a.S,"Math",{tanh:function(t){var e=r(t=+t),n=r(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},{34:34,61:61}],176:[function(t,e,n){var a=t(34);a(a.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},{34:34}],177:[function(t,e,n){"use strict";var a=t(41),r=t(42),i=t(19),o=t(46),s=t(118),u=t(36),p=t(77).f,c=t(75).f,l=t(72).f,f=t(109).trim,d="Number",h=a[d],m=h,g=h.prototype,v=i(t(71)(g))==d,b="trim"in String.prototype,y=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){e=b?e.trim():f(e,3);var n,a,r,i=e.charCodeAt(0);if(43===i||45===i){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:a=2,r=49;break;case 79:case 111:a=8,r=55;break;default:return+e}for(var o,u=e.slice(2),p=0,c=u.length;c>p;p++)if(o=u.charCodeAt(p),48>o||o>r)return NaN;return parseInt(u,a)}}return+e};if(!h(" 0o1")||!h("0b1")||h("+0x1")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(v?u(function(){g.valueOf.call(n)}):i(n)!=d)?o(new m(y(e)),n,h):y(e)};for(var x,_=t(30)?p(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;_.length>w;w++)r(m,x=_[w])&&!r(h,x)&&l(h,x,c(m,x));h.prototype=g,g.constructor=h,t(92)(a,d,h)}},{109:109,118:118,19:19,30:30,36:36,41:41,42:42,46:46,71:71,72:72,75:75,77:77,92:92}],178:[function(t,e,n){var a=t(34);a(a.S,"Number",{EPSILON:Math.pow(2,-52)})},{34:34}],179:[function(t,e,n){var a=t(34),r=t(41).isFinite;a(a.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},{34:34,41:41}],180:[function(t,e,n){var a=t(34);a(a.S,"Number",{isInteger:t(51)})},{34:34,51:51}],181:[function(t,e,n){var a=t(34);a(a.S,"Number",{isNaN:function(t){return t!=t}})},{34:34}],182:[function(t,e,n){var a=t(34),r=t(51),i=Math.abs;a(a.S,"Number",{isSafeInteger:function(t){return r(t)&&i(t)<=9007199254740991}})},{34:34,51:51}],183:[function(t,e,n){var a=t(34);a(a.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{34:34}],184:[function(t,e,n){var a=t(34);a(a.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{34:34}],185:[function(t,e,n){var a=t(34),r=t(86);a(a.S+a.F*(Number.parseFloat!=r),"Number",{parseFloat:r})},{34:34,86:86}],186:[function(t,e,n){var a=t(34),r=t(87);a(a.S+a.F*(Number.parseInt!=r),"Number",{parseInt:r})},{34:34,87:87}],187:[function(t,e,n){"use strict";var a=t(34),r=t(114),i=t(5),o=t(108),s=1..toFixed,u=Math.floor,p=[0,0,0,0,0,0],c="Number.toFixed: incorrect invocation!",l="0",f=function(t,e){for(var n=-1,a=e;++n<6;)a+=t*p[n],p[n]=a%1e7,a=u(a/1e7)},d=function(t){for(var e=6,n=0;--e>=0;)n+=p[e],p[e]=u(n/t),n=n%t*1e7},h=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==p[t]){var n=p[t]+"";e=""===e?n:e+o.call(l,7-n.length)+n}return e},m=function(t,e,n){return 0===e?n:e%2===1?m(t,e-1,n*t):m(t*t,e/2,n)},g=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e};a(a.P+a.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!t(36)(function(){s.call({})})),"Number",{toFixed:function(t){var e,n,a,s,u=i(this,c),p=r(t),v="",b=l;if(0>p||p>20)throw RangeError(c);if(u!=u)return"NaN";if(-1e21>=u||u>=1e21)return u+"";if(0>u&&(v="-",u=-u),u>1e-21)if(e=g(u*m(2,69,1))-69,n=0>e?u*m(2,-e,1):u/m(2,e,1),n*=4503599627370496,e=52-e,e>0){for(f(0,n),a=p;a>=7;)f(1e7,0),a-=7;for(f(m(10,a,1),0),a=e-1;a>=23;)d(1<<23),a-=23;d(1<0?(s=b.length,b=v+(p>=s?"0."+o.call(l,p-s)+b:b.slice(0,s-p)+"."+b.slice(s-p))):b=v+b,b}})},{108:108,114:114,34:34,36:36,5:5}],188:[function(t,e,n){"use strict";var a=t(34),r=t(36),i=t(5),o=1..toPrecision;a(a.P+a.F*(r(function(){return"1"!==o.call(1,void 0)})||!r(function(){o.call({})})),"Number",{toPrecision:function(t){var e=i(this,"Number#toPrecision: incorrect invocation!");return void 0===t?o.call(e):o.call(e,t)}})},{34:34,36:36,5:5}],189:[function(t,e,n){var a=t(34);a(a.S+a.F,"Object",{assign:t(70)})},{34:34,70:70}],190:[function(t,e,n){var a=t(34);a(a.S,"Object",{create:t(71)})},{34:34,71:71}],191:[function(t,e,n){var a=t(34);a(a.S+a.F*!t(30),"Object",{defineProperties:t(73)})},{30:30,34:34,73:73}],192:[function(t,e,n){var a=t(34);a(a.S+a.F*!t(30),"Object",{defineProperty:t(72).f})},{30:30,34:34,72:72}],193:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("freeze",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],194:[function(t,e,n){var a=t(115),r=t(75).f;t(83)("getOwnPropertyDescriptor",function(){return function(t,e){return r(a(t),e)}})},{115:115,75:75,83:83}],195:[function(t,e,n){t(83)("getOwnPropertyNames",function(){return t(76).f})},{76:76,83:83}],196:[function(t,e,n){var a=t(117),r=t(79);t(83)("getPrototypeOf",function(){return function(t){return r(a(t))}})},{117:117,79:79,83:83}],197:[function(t,e,n){var a=t(52);t(83)("isExtensible",function(t){return function(e){return a(e)?t?t(e):!0:!1}})},{52:52,83:83}],198:[function(t,e,n){var a=t(52);t(83)("isFrozen",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{52:52,83:83}],199:[function(t,e,n){ -var a=t(52);t(83)("isSealed",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{52:52,83:83}],200:[function(t,e,n){var a=t(34);a(a.S,"Object",{is:t(94)})},{34:34,94:94}],201:[function(t,e,n){var a=t(117),r=t(81);t(83)("keys",function(){return function(t){return r(a(t))}})},{117:117,81:81,83:83}],202:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("preventExtensions",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],203:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("seal",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],204:[function(t,e,n){var a=t(34);a(a.S,"Object",{setPrototypeOf:t(97).set})},{34:34,97:97}],205:[function(t,e,n){"use strict";var a=t(18),r={};r[t(127)("toStringTag")]="z",r+""!="[object z]"&&t(92)(Object.prototype,"toString",function(){return"[object "+a(this)+"]"},!0)},{127:127,18:18,92:92}],206:[function(t,e,n){var a=t(34),r=t(86);a(a.G+a.F*(parseFloat!=r),{parseFloat:r})},{34:34,86:86}],207:[function(t,e,n){var a=t(34),r=t(87);a(a.G+a.F*(parseInt!=r),{parseInt:r})},{34:34,87:87}],208:[function(t,e,n){"use strict";var a,r,i,o,s=t(60),u=t(41),p=t(26),c=t(18),l=t(34),f=t(52),d=t(4),h=t(7),m=t(40),g=t(102),v=t(111).set,b=t(68)(),y=t(69),x=t(88),_=t(89),w="Promise",k=u.TypeError,S=u.process,E=u[w],P="process"==c(S),C=function(){},A=r=y.f,O=!!function(){try{var e=E.resolve(1),n=(e.constructor={})[t(127)("species")]=function(t){t(C,C)};return(P||"function"==typeof PromiseRejectionEvent)&&e.then(C)instanceof n}catch(a){}}(),T=function(t){var e;return f(t)&&"function"==typeof(e=t.then)?e:!1},R=function(t,e){if(!t._n){t._n=!0;var n=t._c;b(function(){for(var a=t._v,r=1==t._s,i=0,o=function(e){var n,i,o,s=r?e.ok:e.fail,u=e.resolve,p=e.reject,c=e.domain;try{s?(r||(2==t._h&&j(t),t._h=1),s===!0?n=a:(c&&c.enter(),n=s(a),c&&(c.exit(),o=!0)),n===e.promise?p(k("Promise-chain cycle")):(i=T(n))?i.call(n,u,p):u(n)):p(a)}catch(l){c&&!o&&c.exit(),p(l)}};n.length>i;)o(n[i++]);t._c=[],t._n=!1,e&&!t._h&&M(t)})}},M=function(t){v.call(u,function(){var e,n,a,r=t._v,i=L(t);if(i&&(e=x(function(){P?S.emit("unhandledRejection",r,t):(n=u.onunhandledrejection)?n({promise:t,reason:r}):(a=u.console)&&a.error&&a.error("Unhandled promise rejection",r)}),t._h=P||L(t)?2:1),t._a=void 0,i&&e.e)throw e.v})},L=function(t){return 1!==t._h&&0===(t._a||t._c).length},j=function(t){v.call(u,function(){var e;P?S.emit("rejectionHandled",t):(e=u.onrejectionhandled)&&e({promise:t,reason:t._v})})},D=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),R(e,!0))},N=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw k("Promise can't be resolved itself");(e=T(t))?b(function(){var a={_w:n,_d:!1};try{e.call(t,p(N,a,1),p(D,a,1))}catch(r){D.call(a,r)}}):(n._v=t,n._s=1,R(n,!1))}catch(a){D.call({_w:n,_d:!1},a)}}};O||(E=function(t){h(this,E,w,"_h"),d(t),a.call(this);try{t(p(N,this,1),p(D,this,1))}catch(e){D.call(this,e)}},a=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},a.prototype=t(91)(E.prototype,{then:function(t,e){var n=A(g(this,E));return n.ok="function"==typeof t?t:!0,n.fail="function"==typeof e&&e,n.domain=P?S.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&R(this,!1),n.promise},"catch":function(t){return this.then(void 0,t)}}),i=function(){var t=new a;this.promise=t,this.resolve=p(N,t,1),this.reject=p(D,t,1)},y.f=A=function(t){return t===E||t===o?new i(t):r(t)}),l(l.G+l.W+l.F*!O,{Promise:E}),t(99)(E,w),t(98)(w),o=t(24)[w],l(l.S+l.F*!O,w,{reject:function(t){var e=A(this),n=e.reject;return n(t),e.promise}}),l(l.S+l.F*(s||!O),w,{resolve:function(t){return _(s&&this===o?E:this,t)}}),l(l.S+l.F*!(O&&t(57)(function(t){E.all(t)["catch"](C)})),w,{all:function(t){var e=this,n=A(e),a=n.resolve,r=n.reject,i=x(function(){var n=[],i=0,o=1;m(t,!1,function(t){var s=i++,u=!1;n.push(void 0),o++,e.resolve(t).then(function(t){u||(u=!0,n[s]=t,--o||a(n))},r)}),--o||a(n)});return i.e&&r(i.v),n.promise},race:function(t){var e=this,n=A(e),a=n.reject,r=x(function(){m(t,!1,function(t){e.resolve(t).then(n.resolve,a)})});return r.e&&a(r.v),n.promise}})},{102:102,111:111,127:127,18:18,24:24,26:26,34:34,4:4,40:40,41:41,52:52,57:57,60:60,68:68,69:69,7:7,88:88,89:89,91:91,98:98,99:99}],209:[function(t,e,n){var a=t(34),r=t(4),i=t(8),o=(t(41).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!t(36)(function(){o(function(){})}),"Reflect",{apply:function(t,e,n){var a=r(t),u=i(n);return o?o(a,e,u):s.call(a,e,u)}})},{34:34,36:36,4:4,41:41,8:8}],210:[function(t,e,n){var a=t(34),r=t(71),i=t(4),o=t(8),s=t(52),u=t(36),p=t(17),c=(t(41).Reflect||{}).construct,l=u(function(){function t(){}return!(c(function(){},[],t)instanceof t)}),f=!u(function(){c(function(){})});a(a.S+a.F*(l||f),"Reflect",{construct:function(t,e){i(t),o(e);var n=arguments.length<3?t:i(arguments[2]);if(f&&!l)return c(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var a=[null];return a.push.apply(a,e),new(p.apply(t,a))}var u=n.prototype,d=r(s(u)?u:Object.prototype),h=Function.apply.call(t,d,e);return s(h)?h:d}})},{17:17,34:34,36:36,4:4,41:41,52:52,71:71,8:8}],211:[function(t,e,n){var a=t(72),r=t(34),i=t(8),o=t(118);r(r.S+r.F*t(36)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,n){i(t),e=o(e,!0),i(n);try{return a.f(t,e,n),!0}catch(r){return!1}}})},{118:118,34:34,36:36,72:72,8:8}],212:[function(t,e,n){var a=t(34),r=t(75).f,i=t(8);a(a.S,"Reflect",{deleteProperty:function(t,e){var n=r(i(t),e);return n&&!n.configurable?!1:delete t[e]}})},{34:34,75:75,8:8}],213:[function(t,e,n){"use strict";var a=t(34),r=t(8),i=function(t){this._t=r(t),this._i=0;var e,n=this._k=[];for(e in t)n.push(e)};t(55)(i,"Object",function(){var t,e=this,n=e._k;do if(e._i>=n.length)return{value:void 0,done:!0};while(!((t=n[e._i++])in e._t));return{value:t,done:!1}}),a(a.S,"Reflect",{enumerate:function(t){return new i(t)}})},{34:34,55:55,8:8}],214:[function(t,e,n){var a=t(75),r=t(34),i=t(8);r(r.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return a.f(i(t),e)}})},{34:34,75:75,8:8}],215:[function(t,e,n){var a=t(34),r=t(79),i=t(8);a(a.S,"Reflect",{getPrototypeOf:function(t){return r(i(t))}})},{34:34,79:79,8:8}],216:[function(t,e,n){function a(t,e){var n,s,c=arguments.length<3?t:arguments[2];return p(t)===c?t[e]:(n=r.f(t,e))?o(n,"value")?n.value:void 0!==n.get?n.get.call(c):void 0:u(s=i(t))?a(s,e,c):void 0}var r=t(75),i=t(79),o=t(42),s=t(34),u=t(52),p=t(8);s(s.S,"Reflect",{get:a})},{34:34,42:42,52:52,75:75,79:79,8:8}],217:[function(t,e,n){var a=t(34);a(a.S,"Reflect",{has:function(t,e){return e in t}})},{34:34}],218:[function(t,e,n){var a=t(34),r=t(8),i=Object.isExtensible;a(a.S,"Reflect",{isExtensible:function(t){return r(t),i?i(t):!0}})},{34:34,8:8}],219:[function(t,e,n){var a=t(34);a(a.S,"Reflect",{ownKeys:t(85)})},{34:34,85:85}],220:[function(t,e,n){var a=t(34),r=t(8),i=Object.preventExtensions;a(a.S,"Reflect",{preventExtensions:function(t){r(t);try{return i&&i(t),!0}catch(e){return!1}}})},{34:34,8:8}],221:[function(t,e,n){var a=t(34),r=t(97);r&&a(a.S,"Reflect",{setPrototypeOf:function(t,e){r.check(t,e);try{return r.set(t,e),!0}catch(n){return!1}}})},{34:34,97:97}],222:[function(t,e,n){function a(t,e,n){var u,f,d=arguments.length<4?t:arguments[3],h=i.f(c(t),e);if(!h){if(l(f=o(t)))return a(f,e,n,d);h=p(0)}if(s(h,"value")){if(h.writable===!1||!l(d))return!1;if(u=i.f(d,e)){if(u.get||u.set||u.writable===!1)return!1;u.value=n,r.f(d,e,u)}else r.f(d,e,p(0,n));return!0}return void 0===h.set?!1:(h.set.call(d,n),!0)}var r=t(72),i=t(75),o=t(79),s=t(42),u=t(34),p=t(90),c=t(8),l=t(52);u(u.S,"Reflect",{set:a})},{34:34,42:42,52:52,72:72,75:75,79:79,8:8,90:90}],223:[function(t,e,n){var a=t(41),r=t(46),i=t(72).f,o=t(77).f,s=t(53),u=t(38),p=a.RegExp,c=p,l=p.prototype,f=/a/g,d=/a/g,h=new p(f)!==f;if(t(30)&&(!h||t(36)(function(){return d[t(127)("match")]=!1,p(f)!=f||p(d)==d||"/a/i"!=p(f,"i")}))){p=function(t,e){var n=this instanceof p,a=s(t),i=void 0===e;return!n&&a&&t.constructor===p&&i?t:r(h?new c(a&&!i?t.source:t,e):c((a=t instanceof p)?t.source:t,a&&i?u.call(t):e),n?this:l,p)};for(var m=(function(t){t in p||i(p,t,{configurable:!0,get:function(){return c[t]},set:function(e){c[t]=e}})}),g=o(c),v=0;g.length>v;)m(g[v++]);l.constructor=p,p.prototype=l,t(92)(a,"RegExp",p)}t(98)("RegExp")},{127:127,30:30,36:36,38:38,41:41,46:46,53:53,72:72,77:77,92:92,98:98}],224:[function(t,e,n){t(30)&&"g"!=/./g.flags&&t(72).f(RegExp.prototype,"flags",{configurable:!0,get:t(38)})},{30:30,38:38,72:72}],225:[function(t,e,n){t(37)("match",1,function(t,e,n){return[function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")},n]})},{37:37}],226:[function(t,e,n){t(37)("replace",2,function(t,e,n){return[function(a,r){"use strict";var i=t(this),o=void 0==a?void 0:a[e];return void 0!==o?o.call(a,i,r):n.call(i+"",a,r)},n]})},{37:37}],227:[function(t,e,n){t(37)("search",1,function(t,e,n){return[function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")},n]})},{37:37}],228:[function(t,e,n){t(37)("split",2,function(e,n,a){"use strict";var r=t(53),i=a,o=[].push,s="split",u="length",p="lastIndex";if("c"=="abbc"[s](/(b)*/)[1]||4!="test"[s](/(?:)/,-1)[u]||2!="ab"[s](/(?:ab)*/)[u]||4!="."[s](/(.?)(.?)/)[u]||"."[s](/()()/)[u]>1||""[s](/.?/)[u]){var c=void 0===/()??/.exec("")[1];a=function(t,e){var n=this+"";if(void 0===t&&0===e)return[];if(!r(t))return i.call(n,t,e);var a,s,l,f,d,h=[],m=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),g=0,v=void 0===e?4294967295:e>>>0,b=RegExp(t.source,m+"g");for(c||(a=RegExp("^"+b.source+"$(?!\\s)",m));(s=b.exec(n))&&(l=s.index+s[0][u],!(l>g&&(h.push(n.slice(g,s.index)),!c&&s[u]>1&&s[0].replace(a,function(){for(d=1;d1&&s.index=v)));)b[p]===s.index&&b[p]++;return g===n[u]?(f||!b.test(""))&&h.push(""):h.push(n.slice(g)),h[u]>v?h.slice(0,v):h}}else"0"[s](void 0,0)[u]&&(a=function(t,e){return void 0===t&&0===e?[]:i.call(this,t,e)});return[function(t,r){var i=e(this),o=void 0==t?void 0:t[n];return void 0!==o?o.call(t,i,r):a.call(i+"",t,r)},a]})},{37:37,53:53}],229:[function(t,e,n){"use strict";t(224);var a=t(8),r=t(38),i=t(30),o="toString",s=/./[o],u=function(e){t(92)(RegExp.prototype,o,e,!0)};t(36)(function(){return"/a/b"!=s.call({source:"a",flags:"b"})})?u(function(){var t=a(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?r.call(t):void 0)}):s.name!=o&&u(function(){return s.call(this)})},{224:224,30:30,36:36,38:38,8:8,92:92}],230:[function(t,e,n){"use strict";var a=t(20),r=t(124),i="Set";e.exports=t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(r(this,i),t=0===t?0:t,t)}},a)},{124:124,20:20,23:23}],231:[function(t,e,n){"use strict";t(106)("anchor",function(t){return function(e){return t(this,"a","name",e)}})},{106:106}],232:[function(t,e,n){"use strict";t(106)("big",function(t){return function(){return t(this,"big","","")}})},{106:106}],233:[function(t,e,n){"use strict";t(106)("blink",function(t){return function(){return t(this,"blink","","")}})},{106:106}],234:[function(t,e,n){"use strict";t(106)("bold",function(t){return function(){return t(this,"b","","")}})},{106:106}],235:[function(t,e,n){"use strict";var a=t(34),r=t(104)(!1);a(a.P,"String",{codePointAt:function(t){return r(this,t)}})},{104:104,34:34}],236:[function(t,e,n){"use strict";var a=t(34),r=t(116),i=t(105),o="endsWith",s=""[o];a(a.P+a.F*t(35)(o),"String",{endsWith:function(t){var e=i(this,t,o),n=arguments.length>1?arguments[1]:void 0,a=r(e.length),u=void 0===n?a:Math.min(r(n),a),p=t+"";return s?s.call(e,p,u):e.slice(u-p.length,u)===p}})},{105:105,116:116,34:34,35:35}],237:[function(t,e,n){"use strict";t(106)("fixed",function(t){return function(){return t(this,"tt","","")}})},{106:106}],238:[function(t,e,n){"use strict";t(106)("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},{106:106}],239:[function(t,e,n){"use strict";t(106)("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},{106:106}],240:[function(t,e,n){var a=t(34),r=t(112),i=String.fromCharCode,o=String.fromCodePoint;a(a.S+a.F*(!!o&&1!=o.length),"String",{fromCodePoint:function(t){for(var e,n=[],a=arguments.length,o=0;a>o;){if(e=+arguments[o++],r(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(65536>e?i(e):i(((e-=65536)>>10)+55296,e%1024+56320))}return n.join("")}})},{112:112,34:34}],241:[function(t,e,n){"use strict";var a=t(34),r=t(105),i="includes";a(a.P+a.F*t(35)(i),"String",{includes:function(t){return!!~r(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{105:105,34:34,35:35}],242:[function(t,e,n){"use strict";t(106)("italics",function(t){return function(){return t(this,"i","","")}})},{106:106}],243:[function(t,e,n){"use strict";var a=t(104)(!0);t(56)(String,"String",function(t){this._t=t+"",this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=a(e,n),this._i+=t.length,{value:t,done:!1})})},{104:104,56:56}],244:[function(t,e,n){"use strict";t(106)("link",function(t){return function(e){return t(this,"a","href",e)}})},{106:106}],245:[function(t,e,n){var a=t(34),r=t(115),i=t(116);a(a.S,"String",{raw:function(t){for(var e=r(t.raw),n=i(e.length),a=arguments.length,o=[],s=0;n>s;)o.push(e[s++]+""),a>s&&o.push(arguments[s]+"");return o.join("")}})},{115:115,116:116,34:34}],246:[function(t,e,n){var a=t(34);a(a.P,"String",{repeat:t(108)})},{108:108,34:34}],247:[function(t,e,n){"use strict";t(106)("small",function(t){return function(){return t(this,"small","","")}})},{106:106}],248:[function(t,e,n){"use strict";var a=t(34),r=t(116),i=t(105),o="startsWith",s=""[o];a(a.P+a.F*t(35)(o),"String",{startsWith:function(t){var e=i(this,t,o),n=r(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),a=t+"";return s?s.call(e,a,n):e.slice(n,n+a.length)===a}})},{105:105,116:116,34:34,35:35}],249:[function(t,e,n){"use strict";t(106)("strike",function(t){return function(){return t(this,"strike","","")}})},{106:106}],250:[function(t,e,n){"use strict";t(106)("sub",function(t){return function(){return t(this,"sub","","")}})},{106:106}],251:[function(t,e,n){"use strict";t(106)("sup",function(t){return function(){return t(this,"sup","","")}})},{106:106}],252:[function(t,e,n){"use strict";t(109)("trim",function(t){return function(){return t(this,3)}})},{109:109}],253:[function(t,e,n){"use strict";var a=t(41),r=t(42),i=t(30),o=t(34),s=t(92),u=t(66).KEY,p=t(36),c=t(101),l=t(99),f=t(122),d=t(127),h=t(126),m=t(125),g=t(33),v=t(50),b=t(8),y=t(52),x=t(115),_=t(118),w=t(90),k=t(71),S=t(76),E=t(75),P=t(72),C=t(81),A=E.f,O=P.f,T=S.f,R=a.Symbol,M=a.JSON,L=M&&M.stringify,j="prototype",D=d("_hidden"),N=d("toPrimitive"),F={}.propertyIsEnumerable,I=c("symbol-registry"),B=c("symbols"),q=c("op-symbols"),U=Object[j],V="function"==typeof R,G=a.QObject,z=!G||!G[j]||!G[j].findChild,W=i&&p(function(){return 7!=k(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(t,e,n){var a=A(U,e);a&&delete U[e],O(t,e,n),a&&t!==U&&O(U,e,a)}:O,H=function(t){var e=B[t]=k(R[j]);return e._k=t,e},Q=V&&"symbol"==typeof R.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof R},K=function(t,e,n){return t===U&&K(q,e,n),b(t),e=_(e,!0),b(n),r(B,e)?(n.enumerable?(r(t,D)&&t[D][e]&&(t[D][e]=!1),n=k(n,{enumerable:w(0,!1)})):(r(t,D)||O(t,D,w(1,{})),t[D][e]=!0),W(t,e,n)):O(t,e,n)},Y=function(t,e){b(t);for(var n,a=g(e=x(e)),r=0,i=a.length;i>r;)K(t,n=a[r++],e[n]);return t},$=function(t,e){return void 0===e?k(t):Y(k(t),e)},J=function(t){var e=F.call(this,t=_(t,!0));return this===U&&r(B,t)&&!r(q,t)?!1:e||!r(this,t)||!r(B,t)||r(this,D)&&this[D][t]?e:!0},X=function(t,e){if(t=x(t),e=_(e,!0),t!==U||!r(B,e)||r(q,e)){var n=A(t,e);return!n||!r(B,e)||r(t,D)&&t[D][e]||(n.enumerable=!0),n}},Z=function(t){for(var e,n=T(x(t)),a=[],i=0;n.length>i;)r(B,e=n[i++])||e==D||e==u||a.push(e);return a},tt=function(t){for(var e,n=t===U,a=T(n?q:x(t)),i=[],o=0;a.length>o;)r(B,e=a[o++])&&(n?r(U,e):!0)&&i.push(B[e]);return i};V||(R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var t=f(arguments.length>0?arguments[0]:void 0),e=function(n){this===U&&e.call(q,n),r(this,D)&&r(this[D],t)&&(this[D][t]=!1),W(this,t,w(1,n))};return i&&z&&W(U,t,{configurable:!0,set:e}),H(t)},s(R[j],"toString",function(){return this._k}),E.f=X,P.f=K,t(77).f=S.f=Z,t(82).f=J,t(78).f=tt,i&&!t(60)&&s(U,"propertyIsEnumerable",J,!0),h.f=function(t){return H(d(t))}),o(o.G+o.W+o.F*!V,{Symbol:R});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)d(et[nt++]);for(var at=C(d.store),rt=0;at.length>rt;)m(at[rt++]);o(o.S+o.F*!V,"Symbol",{"for":function(t){return r(I,t+="")?I[t]:I[t]=R(t)},keyFor:function(t){if(!Q(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){z=!0},useSimple:function(){z=!1}}),o(o.S+o.F*!V,"Object",{create:$,defineProperty:K,defineProperties:Y,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:tt}),M&&o(o.S+o.F*(!V||p(function(){var t=R();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))})),"JSON",{stringify:function(t){for(var e,n,a=[t],r=1;arguments.length>r;)a.push(arguments[r++]);return n=e=a[1],!y(e)&&void 0===t||Q(t)?void 0:(v(e)||(e=function(t,e){return"function"==typeof n&&(e=n.call(this,t,e)),Q(e)?void 0:e}),a[1]=e,L.apply(M,a))}}),R[j][N]||t(43)(R[j],N,R[j].valueOf),l(R,"Symbol"),l(Math,"Math",!0),l(a.JSON,"JSON",!0)},{101:101,115:115,118:118,122:122,125:125,126:126,127:127,30:30,33:33,34:34,36:36,41:41,42:42,43:43,50:50,52:52,60:60,66:66,71:71,72:72,75:75,76:76,77:77,78:78,8:8,81:81,82:82,90:90,92:92,99:99}],254:[function(t,e,n){"use strict";var a=t(34),r=t(121),i=t(120),o=t(8),s=t(112),u=t(116),p=t(52),c=t(41).ArrayBuffer,l=t(102),f=i.ArrayBuffer,d=i.DataView,h=r.ABV&&c.isView,m=f.prototype.slice,g=r.VIEW,v="ArrayBuffer";a(a.G+a.W+a.F*(c!==f),{ArrayBuffer:f}),a(a.S+a.F*!r.CONSTR,v,{isView:function(t){return h&&h(t)||p(t)&&g in t}}),a(a.P+a.U+a.F*t(36)(function(){return!new f(2).slice(1,void 0).byteLength}),v,{slice:function(t,e){if(void 0!==m&&void 0===e)return m.call(o(this),t);for(var n=o(this).byteLength,a=s(t,n),r=s(void 0===e?n:e,n),i=new(l(this,f))(u(r-a)),p=new d(this),c=new d(i),h=0;r>a;)c.setUint8(h++,p.getUint8(a++));return i}}),t(98)(v)},{102:102,112:112,116:116,120:120,121:121,34:34,36:36,41:41,52:52,8:8,98:98}],255:[function(t,e,n){var a=t(34);a(a.G+a.W+a.F*!t(121).ABV,{DataView:t(120).DataView})},{120:120,121:121,34:34}],256:[function(t,e,n){t(119)("Float32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],257:[function(t,e,n){t(119)("Float64",8,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],258:[function(t,e,n){t(119)("Int16",2,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],259:[function(t,e,n){t(119)("Int32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],260:[function(t,e,n){t(119)("Int8",1,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],261:[function(t,e,n){t(119)("Uint16",2,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],262:[function(t,e,n){t(119)("Uint32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],263:[function(t,e,n){t(119)("Uint8",1,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],264:[function(t,e,n){t(119)("Uint8",1,function(t){return function(e,n,a){return t(this,e,n,a)}},!0)},{119:119}],265:[function(t,e,n){"use strict";var a,r=t(13)(0),i=t(92),o=t(66),s=t(70),u=t(22),p=t(52),c=t(36),l=t(124),f="WeakMap",d=o.getWeak,h=Object.isExtensible,m=u.ufstore,g={},v=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(p(t)){var e=d(t);return e===!0?m(l(this,f)).get(t):e?e[this._i]:void 0}},set:function(t,e){return u.def(l(this,f),t,e)}},y=e.exports=t(23)(f,v,b,u,!0,!0);c(function(){return 7!=(new y).set((Object.freeze||Object)(g),7).get(g)})&&(a=u.getConstructor(v,f),s(a.prototype,b),o.NEED=!0,r(["delete","has","get","set"],function(t){var e=y.prototype,n=e[t];i(e,t,function(e,r){if(p(e)&&!h(e)){this._f||(this._f=new a);var i=this._f[t](e,r);return"set"==t?this:i}return n.call(this,e,r)})}))},{124:124,13:13,22:22,23:23,36:36,52:52,66:66,70:70,92:92}],266:[function(t,e,n){"use strict";var a=t(22),r=t(124),i="WeakSet";t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(r(this,i),t,!0)}},a,!1,!0)},{124:124,22:22,23:23}],267:[function(t,e,n){"use strict";var a=t(34),r=t(39),i=t(117),o=t(116),s=t(4),u=t(16);a(a.P,"Array",{flatMap:function(t){var e,n,a=i(this);return s(t),e=o(a.length),n=u(a,0),r(n,a,a,e,0,1,t,arguments[1]),n}}),t(6)("flatMap")},{116:116,117:117,16:16,34:34,39:39,4:4,6:6}],268:[function(t,e,n){"use strict";var a=t(34),r=t(39),i=t(117),o=t(116),s=t(114),u=t(16);a(a.P,"Array",{flatten:function(){var t=arguments[0],e=i(this),n=o(e.length),a=u(e,0);return r(a,e,e,n,0,void 0===t?1:s(t)),a}}),t(6)("flatten")},{114:114,116:116,117:117,16:16,34:34,39:39,6:6}],269:[function(t,e,n){"use strict";var a=t(34),r=t(12)(!0);a(a.P,"Array",{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)("includes")},{12:12,34:34,6:6}],270:[function(t,e,n){var a=t(34),r=t(68)(),i=t(41).process,o="process"==t(19)(i);a(a.G,{asap:function(t){var e=o&&i.domain;r(e?e.bind(t):t)}})},{19:19,34:34,41:41,68:68}],271:[function(t,e,n){var a=t(34),r=t(19);a(a.S,"Error",{isError:function(t){return"Error"===r(t)}})},{19:19,34:34}],272:[function(t,e,n){var a=t(34);a(a.G,{global:t(41)})},{34:34,41:41}],273:[function(t,e,n){t(95)("Map")},{95:95}],274:[function(t,e,n){t(96)("Map")},{96:96}],275:[function(t,e,n){var a=t(34);a(a.P+a.R,"Map",{toJSON:t(21)("Map")})},{21:21,34:34}],276:[function(t,e,n){var a=t(34);a(a.S,"Math",{clamp:function(t,e,n){return Math.min(n,Math.max(e,t))}})},{34:34}],277:[function(t,e,n){var a=t(34);a(a.S,"Math",{DEG_PER_RAD:Math.PI/180})},{34:34}],278:[function(t,e,n){var a=t(34),r=180/Math.PI;a(a.S,"Math",{degrees:function(t){return t*r}})},{34:34}],279:[function(t,e,n){var a=t(34),r=t(64),i=t(62);a(a.S,"Math",{fscale:function(t,e,n,a,o){return i(r(t,e,n,a,o))}})},{34:34,62:62,64:64}],280:[function(t,e,n){var a=t(34);a(a.S,"Math",{iaddh:function(t,e,n,a){var r=t>>>0,i=e>>>0,o=n>>>0;return i+(a>>>0)+((r&o|(r|o)&~(r+o>>>0))>>>31)|0}})},{34:34}],281:[function(t,e,n){var a=t(34);a(a.S,"Math",{imulh:function(t,e){var n=65535,a=+t,r=+e,i=a&n,o=r&n,s=a>>16,u=r>>16,p=(s*o>>>0)+(i*o>>>16);return s*u+(p>>16)+((i*u>>>0)+(p&n)>>16)}})},{34:34}],282:[function(t,e,n){var a=t(34);a(a.S,"Math",{isubh:function(t,e,n,a){var r=t>>>0,i=e>>>0,o=n>>>0;return i-(a>>>0)-((~r&o|~(r^o)&r-o>>>0)>>>31)|0}})},{34:34}],283:[function(t,e,n){var a=t(34);a(a.S,"Math",{RAD_PER_DEG:180/Math.PI})},{34:34}],284:[function(t,e,n){var a=t(34),r=Math.PI/180;a(a.S,"Math",{radians:function(t){return t*r}})},{34:34}],285:[function(t,e,n){var a=t(34);a(a.S,"Math",{scale:t(64)})},{34:34,64:64}],286:[function(t,e,n){var a=t(34);a(a.S,"Math",{signbit:function(t){return(t=+t)!=t?t:0==t?1/t==1/0:t>0}})},{34:34}],287:[function(t,e,n){var a=t(34);a(a.S,"Math",{umulh:function(t,e){var n=65535,a=+t,r=+e,i=a&n,o=r&n,s=a>>>16,u=r>>>16,p=(s*o>>>0)+(i*o>>>16);return s*u+(p>>>16)+((i*u>>>0)+(p&n)>>>16)}})},{34:34}],288:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(4),o=t(72);t(30)&&a(a.P+t(74),"Object",{__defineGetter__:function(t,e){o.f(r(this),t,{get:i(e),enumerable:!0,configurable:!0})}})},{117:117,30:30,34:34,4:4,72:72,74:74}],289:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(4),o=t(72);t(30)&&a(a.P+t(74),"Object",{__defineSetter__:function(t,e){o.f(r(this),t,{set:i(e),enumerable:!0,configurable:!0})}})},{117:117,30:30,34:34,4:4,72:72,74:74}],290:[function(t,e,n){var a=t(34),r=t(84)(!0);a(a.S,"Object",{entries:function(t){return r(t)}})},{34:34,84:84}],291:[function(t,e,n){var a=t(34),r=t(85),i=t(115),o=t(75),s=t(25);a(a.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,a=i(t),u=o.f,p=r(a),c={},l=0;p.length>l;)n=u(a,e=p[l++]),void 0!==n&&s(c,e,n);return c}})},{115:115,25:25,34:34,75:75,85:85}],292:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118),o=t(79),s=t(75).f;t(30)&&a(a.P+t(74),"Object",{__lookupGetter__:function(t){var e,n=r(this),a=i(t,!0);do if(e=s(n,a))return e.get;while(n=o(n))}})},{117:117,118:118,30:30,34:34,74:74,75:75,79:79}],293:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118),o=t(79),s=t(75).f;t(30)&&a(a.P+t(74),"Object",{__lookupSetter__:function(t){var e,n=r(this),a=i(t,!0);do if(e=s(n,a))return e.set;while(n=o(n))}})},{117:117,118:118,30:30,34:34,74:74,75:75,79:79}],294:[function(t,e,n){var a=t(34),r=t(84)(!1);a(a.S,"Object",{values:function(t){return r(t)}})},{34:34,84:84}],295:[function(t,e,n){"use strict";var a=t(34),r=t(41),i=t(24),o=t(68)(),s=t(127)("observable"),u=t(4),p=t(8),c=t(7),l=t(91),f=t(43),d=t(40),h=d.RETURN,m=function(t){return null==t?void 0:u(t)},g=function(t){var e=t._c;e&&(t._c=void 0,e())},v=function(t){return void 0===t._o},b=function(t){v(t)||(t._o=void 0,g(t))},y=function(t,e){p(t),this._c=void 0,this._o=t,t=new x(this);try{var n=e(t),a=n;null!=n&&("function"==typeof n.unsubscribe?n=function(){a.unsubscribe()}:u(n),this._c=n)}catch(r){return void t.error(r)}v(this)&&g(this)};y.prototype=l({},{unsubscribe:function(){b(this)}});var x=function(t){this._s=t};x.prototype=l({},{next:function(t){var e=this._s;if(!v(e)){var n=e._o;try{var a=m(n.next);if(a)return a.call(n,t)}catch(r){try{b(e)}finally{throw r}}}},error:function(t){var e=this._s;if(v(e))throw t;var n=e._o;e._o=void 0;try{var a=m(n.error);if(!a)throw t;t=a.call(n,t)}catch(r){try{g(e)}finally{throw r}}return g(e),t},complete:function(t){var e=this._s;if(!v(e)){var n=e._o;e._o=void 0;try{var a=m(n.complete);t=a?a.call(n,t):void 0}catch(r){try{g(e)}finally{throw r}}return g(e),t}}});var _=function(t){c(this,_,"Observable","_f")._f=u(t)};l(_.prototype,{subscribe:function(t){return new y(t,this._f)},forEach:function(t){var e=this;return new(i.Promise||r.Promise)(function(n,a){u(t);var r=e.subscribe({next:function(e){try{return t(e)}catch(n){a(n),r.unsubscribe()}},error:a,complete:n})})}}),l(_,{from:function(t){var e="function"==typeof this?this:_,n=m(p(t)[s]);if(n){var a=p(n.call(t));return a.constructor===e?a:new e(function(t){return a.subscribe(t)})}return new e(function(e){var n=!1;return o(function(){if(!n){try{if(d(t,!1,function(t){return e.next(t),n?h:void 0})===h)return}catch(a){if(n)throw a;return void e.error(a)}e.complete()}}),function(){n=!0}})},of:function(){for(var t=0,e=arguments.length,n=Array(e);e>t;)n[t]=arguments[t++];return new("function"==typeof this?this:_)(function(t){var e=!1;return o(function(){if(!e){for(var a=0;a1?arguments[1]:void 0,!1)}})},{107:107,123:123,34:34}],313:[function(t,e,n){"use strict";var a=t(34),r=t(107),i=t(123);a(a.P+a.F*/Version\/10\.\d+(\.\d+)? Safari\//.test(i),"String",{padStart:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{107:107,123:123,34:34}],314:[function(t,e,n){"use strict";t(109)("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},{109:109}],315:[function(t,e,n){"use strict";t(109)("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},{109:109}],316:[function(t,e,n){t(125)("asyncIterator")},{125:125}],317:[function(t,e,n){t(125)("observable")},{125:125}],318:[function(t,e,n){var a=t(34);a(a.S,"System",{global:t(41)})},{34:34,41:41}],319:[function(t,e,n){t(95)("WeakMap")},{95:95}],320:[function(t,e,n){t(96)("WeakMap")},{96:96}],321:[function(t,e,n){t(95)("WeakSet")},{95:95}],322:[function(t,e,n){t(96)("WeakSet")},{96:96}],323:[function(t,e,n){for(var a=t(140),r=t(81),i=t(92),o=t(41),s=t(43),u=t(59),p=t(127),c=p("iterator"),l=p("toStringTag"),f=u.Array,d={ -CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=r(d),m=0;m2,r=a?o.call(arguments,2):!1;return t(a?function(){("function"==typeof e?e:Function(e)).apply(this,r)}:e,n)}};r(r.G+r.B+r.F*s,{setTimeout:u(a.setTimeout),setInterval:u(a.setInterval)})},{123:123,34:34,41:41}],326:[function(t,e,n){t(253),t(190),t(192),t(191),t(194),t(196),t(201),t(195),t(193),t(203),t(202),t(198),t(199),t(197),t(189),t(200),t(204),t(205),t(156),t(158),t(157),t(207),t(206),t(177),t(187),t(188),t(178),t(179),t(180),t(181),t(182),t(183),t(184),t(185),t(186),t(160),t(161),t(162),t(163),t(164),t(165),t(166),t(167),t(168),t(169),t(170),t(171),t(172),t(173),t(174),t(175),t(176),t(240),t(245),t(252),t(243),t(235),t(236),t(241),t(246),t(248),t(231),t(232),t(233),t(234),t(237),t(238),t(239),t(242),t(244),t(247),t(249),t(250),t(251),t(151),t(153),t(152),t(155),t(154),t(139),t(137),t(144),t(141),t(147),t(149),t(136),t(143),t(133),t(148),t(131),t(146),t(145),t(138),t(142),t(130),t(132),t(135),t(134),t(150),t(140),t(223),t(229),t(224),t(225),t(226),t(227),t(228),t(208),t(159),t(230),t(265),t(266),t(254),t(255),t(260),t(263),t(264),t(258),t(261),t(259),t(262),t(256),t(257),t(209),t(210),t(211),t(212),t(213),t(216),t(214),t(215),t(217),t(218),t(219),t(220),t(222),t(221),t(269),t(267),t(268),t(310),t(313),t(312),t(314),t(315),t(311),t(316),t(317),t(291),t(294),t(290),t(288),t(289),t(292),t(293),t(275),t(309),t(274),t(308),t(320),t(322),t(273),t(307),t(319),t(321),t(272),t(318),t(271),t(276),t(277),t(278),t(279),t(280),t(282),t(281),t(283),t(284),t(285),t(287),t(286),t(296),t(297),t(298),t(299),t(301),t(300),t(303),t(302),t(304),t(305),t(306),t(270),t(295),t(325),t(324),t(323),e.exports=t(24)},{130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,24:24,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,322:322,323:323,324:324,325:325}],327:[function(t,e,n){!function(t){"use strict";function e(){return c.createDocumentFragment()}function n(t){return c.createElement(t)}function a(t){if(1===t.length)return r(t[0]);for(var n=e(),a=B.call(t),i=0;i-1}}([].indexOf||function(t){for(q=this.length;q--&&this[q]!==t;);return q}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e=u?e(i):document.fonts.load(p(i,i.family),s).then(function(e){1<=e.length?t(i):setTimeout(f,25)},function(){e(i)})};f()}else n(function(){function n(){var e;(e=-1!=g&&-1!=v||-1!=g&&-1!=b||-1!=v&&-1!=b)&&((e=g!=v&&g!=b&&v!=b)||(null===l&&(e=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),l=!!e&&(536>parseInt(e[1],10)||536===parseInt(e[1],10)&&11>=parseInt(e[2],10))),e=l&&(g==y&&v==y&&b==y||g==x&&v==x&&b==x||g==_&&v==_&&b==_)),e=!e),e&&(null!==w.parentNode&&w.parentNode.removeChild(w),clearTimeout(k),t(i))}function f(){if((new Date).getTime()-c>=u)null!==w.parentNode&&w.parentNode.removeChild(w),e(i);else{var t=document.hidden;(!0===t||void 0===t)&&(g=d.a.offsetWidth,v=h.a.offsetWidth,b=m.a.offsetWidth,n()),k=setTimeout(f,50)}}var d=new a(s),h=new a(s),m=new a(s),g=-1,v=-1,b=-1,y=-1,x=-1,_=-1,w=document.createElement("div"),k=0;w.dir="ltr",r(d,p(i,"sans-serif")),r(h,p(i,"serif")),r(m,p(i,"monospace")),w.appendChild(d.a),w.appendChild(h.a),w.appendChild(m.a),document.body.appendChild(w),y=d.a.offsetWidth,x=h.a.offsetWidth,_=m.a.offsetWidth,f(),o(d,function(t){g=t,n()}),r(d,p(i,'"'+i.family+'",sans-serif')),o(h,function(t){v=t,n()}),r(h,p(i,'"'+i.family+'",serif')),o(m,function(t){b=t,n()}),r(m,p(i,'"'+i.family+'",monospace'))})})},window.FontFaceObserver=s,window.FontFaceObserver.prototype.check=s.prototype.a,void 0!==e&&(e.exports=window.FontFaceObserver)}()},{}],330:[function(t,e,n){!function(t,n){function a(t,e){var n=t.createElement("p"),a=t.getElementsByTagName("head")[0]||t.documentElement;return n.innerHTML="x",a.insertBefore(n.lastChild,a.firstChild)}function r(){var t=x.elements;return"string"==typeof t?t.split(" "):t}function i(t,e){var n=x.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),x.elements=n+" "+t,c(e)}function o(t){var e=y[t[v]];return e||(e={},b++,t[v]=b,y[b]=e),e}function s(t,e,a){if(e||(e=n),f)return e.createElement(t);a||(a=o(e));var r;return r=a.cache[t]?a.cache[t].cloneNode():g.test(t)?(a.cache[t]=a.createElem(t)).cloneNode():a.createElem(t),!r.canHaveChildren||m.test(t)||r.tagUrn?r:a.frag.appendChild(r)}function u(t,e){if(t||(t=n),f)return t.createDocumentFragment();e=e||o(t);for(var a=e.frag.cloneNode(),i=0,s=r(),u=s.length;u>i;i++)a.createElement(s[i]);return a}function p(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return x.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(x,e.frag)}function c(t){t||(t=n);var e=o(t);return!x.shivCSS||l||e.hasCSS||(e.hasCSS=!!a(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),f||p(t,e),t}var l,f,d="3.7.3-pre",h=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,g=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",l="hidden"in t,f=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){l=!0,f=!0}}();var x={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:d,shivCSS:h.shivCSS!==!1,supportsUnknownElements:f,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:c,createElement:s,createDocumentFragment:u,addElements:i};t.html5=x,c(n),"object"==typeof e&&e.exports&&(e.exports=x)}("undefined"!=typeof window?window:this,document)},{}],331:[function(t,e,n){(function(t){(function(t){!function(t){function e(t,e,n,a){for(var i,o,s=n.slice(),u=r(e,t),p=0,c=s.length;c>p&&(i=s[p],"object"==typeof i?"function"==typeof i.handleEvent&&i.handleEvent(u):i.call(t,u),!u.stoppedImmediatePropagation);p++);return o=!u.stoppedPropagation,a&&o&&t.parentNode?t.parentNode.dispatchEvent(u):!u.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function a(t,e,a){var r=y(e||t,a);v(t,"textContent",n(function(){return r.get.call(this)},function(t){r.set.call(this,t)}))}function r(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function i(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function u(t){!d&&S.test(document.readyState)&&(d=!d,document.detachEvent(h,u),t=document.createEvent("Event"),t.initEvent(m,!0,!0),document.dispatchEvent(t))}function p(t){return function(){return C[t]||document.body&&document.body[t]||0}}function c(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function l(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var f=!0,d=!1,h="onreadystatechange",m="DOMContentLoaded",g="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},b=Object.defineProperties||function(e,n){for(var a in n)if(x.call(n,a))try{v(e,a,n[a])}catch(r){t.console&&console.log(a+" failed on object:",e,r.message)}},y=Object.getOwnPropertyDescriptor,x=Object.prototype.hasOwnProperty,_=t.Element.prototype,w=t.Text.prototype,k=/^[a-z]+$/,S=/loaded|complete/,E={},P=document.createElement("div"),C=document.documentElement,A=C.removeAttribute,O=C.setAttribute,T=function(t){return{enumerable:!0,writable:!0,configurable:!0,value:t}};a(t.HTMLCommentElement.prototype,_,"nodeValue"),a(t.HTMLScriptElement.prototype,null,"text"),a(w,null,"nodeValue"),a(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(y(t.CSSStyleSheet.prototype,"cssText")));var R=/\b\s*alpha\s*\(\s*opacity\s*=\s*(\d+)\s*\)/;v(t.CSSStyleDeclaration.prototype,"opacity",{get:function(){var t=this.filter.match(R);return t?""+t[1]/100:""},set:function(t){this.zoom=1;var e=!1;t=1>t?" alpha(opacity="+Math.round(100*t)+")":"",this.filter=this.filter.replace(R,function(){return e=!0,t}),!e&&t&&(this.filter+=t)}}),b(_,{textContent:{get:o,set:c},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:T(function(t,n,a){if("function"==typeof n||"object"==typeof n){var r,o,u=this,p="on"+t,c=u[g]||v(u,g,{value:{}})[g],f=c[p]||(c[p]={}),d=f.h||(f.h=[]);if(!x.call(f,"w")){if(f.w=function(t){return t[g]||e(u,l(u,t),d,!1)},!x.call(E,p))if(k.test(t)){try{r=document.createEventObject(),r[g]=!0,9!=u.nodeType&&(null==u.parentNode&&P.appendChild(u),(o=u.getAttribute(p))&&A.call(u,p)),u.fireEvent(p,r),E[p]=!0}catch(h){for(E[p]=!1;P.hasChildNodes();)P.removeChild(P.firstChild)}null!=o&&O.call(u,p,o)}else E[p]=!1;(f.n=E[p])&&u.attachEvent(p,f.w)}i(d,n)<0&&d[a?"unshift":"push"](n),"input"===t&&u.attachEvent("onkeyup",s)}}),dispatchEvent:T(function(t){var n,a=this,r="on"+t.type,i=a[g],o=i&&i[r],s=!!o;return t.target||(t.target=a),s?o.n?a.fireEvent(r,t):e(a,t,o.h,!0):(n=a.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}),removeEventListener:T(function(t,e,n){if("function"==typeof e||"object"==typeof e){var a=this,r="on"+t,o=a[g],s=o&&o[r],u=s&&s.h,p=u?i(u,e):-1;p>-1&&u.splice(p,1)}})}),b(w,{addEventListener:T(_.addEventListener),dispatchEvent:T(_.dispatchEvent),removeEventListener:T(_.removeEventListener)}),b(t.XMLHttpRequest.prototype,{addEventListener:T(function(t,e,n){var a=this,r="on"+t,o=a[g]||v(a,g,{value:{}})[g],s=o[r]||(o[r]={}),u=s.h||(s.h=[]);i(u,e)<0&&(a[r]||(a[r]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),a.dispatchEvent(e)}),u[n?"unshift":"push"](e))}),dispatchEvent:T(function(t){var n=this,a="on"+t.type,r=n[g],i=r&&r[a],o=!!i;return o&&(i.n?n.fireEvent(a,t):e(n,t,i.h,!0))}),removeEventListener:T(_.removeEventListener)});var M=y(Event.prototype,"button").get;b(t.Event.prototype,{bubbles:T(!0),cancelable:T(!0),preventDefault:T(function(){this.cancelable&&(this.returnValue=!1)}),stopPropagation:T(function(){this.stoppedPropagation=!0,this.cancelBubble=!0}),stopImmediatePropagation:T(function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}),initEvent:T(function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}),pageX:{get:function(){return this._pageX||(this._pageX=this.clientX+t.scrollX-(C.clientLeft||0))}},pageY:{get:function(){return this._pageY||(this._pageY=this.clientY+t.scrollY-(C.clientTop||0))}},which:{get:function(){return this.keyCode?this.keyCode:isNaN(this.button)?void 0:this.button+1}},charCode:{get:function(){return this.keyCode&&"keypress"==this.type?this.keyCode:0}},buttons:{get:function(){return M.call(this)}},button:{get:function(){var t=this.buttons;return 1&t?0:2&t?2:4&t?1:void 0}},defaultPrevented:{get:function(){var t,e=this.returnValue;return!(e===t||e)}},relatedTarget:{get:function(){var t=this.type;return"mouseover"===t?this.fromElement:"mouseout"===t?this.toElement:null}}}),b(t.HTMLDocument.prototype,{defaultView:{get:function(){return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&c.call(this,t)}},addEventListener:T(function(e,n,a){var r=this;_.addEventListener.call(r,e,n,a),f&&e===m&&!S.test(r.readyState)&&(f=!1,r.attachEvent(h,u),t==top&&!function i(t){try{r.documentElement.doScroll("left"),u()}catch(e){setTimeout(i,50)}}())}),dispatchEvent:T(_.dispatchEvent),removeEventListener:T(_.removeEventListener),createEvent:T(function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e})}),b(t.Window.prototype,{getComputedStyle:T(function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,a=/^(top|right|bottom|left)$/,r=/\-([a-z])/g,i=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,u=this._,p=u.style,c=u.currentStyle,l=u.runtimeStyle;return"opacity"==t?p.opacity||"1":(t=("float"===t?"style-float":t).replace(r,i),e=c?c[t]:p[t],n.test(e)&&!a.test(t)&&(o=p.left,s=l&&l.left,s&&(l.left=c.left),p.left="fontSize"===t?"1em":e,e=p.pixelLeft+"px",p.left=o,s&&(l.left=s)),null==e?e:e+""||"auto")},e.prototype.getPropertyValue=function(){return null},function(n,a){return a?new e(n):new t(n)}}()),addEventListener:T(function(n,a,r){var o,s=t,u="on"+n;s[u]||(s[u]=function(t){return e(s,l(s,t),o,!1)&&void 0}),o=s[u][g]||(s[u][g]=[]),i(o,a)<0&&o[r?"unshift":"push"](a)}),dispatchEvent:T(function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}),removeEventListener:T(function(e,n,a){var r="on"+e,o=(t[r]||Object)[g],s=o?i(o,n):-1;s>-1&&o.splice(s,1)}),pageXOffset:{get:p("scrollLeft")},pageYOffset:{get:p("scrollTop")},scrollX:{get:p("scrollLeft")},scrollY:{get:p("scrollTop")},innerWidth:{get:p("clientWidth")},innerHeight:{get:p("clientHeight")}}),t.HTMLElement=t.Element,function(t,e,n){for(n=0;na;a++)e.appendChild(n[a].cloneNode(!0));return e},n.cloneRange=function(){var t=new e;return t._start=this._start,t._end=this._end,t},n.deleteContents=function(){for(var e=this._start.parentNode,n=t(this._start,this._end),a=0,r=n.length;r>a;a++)e.removeChild(n[a])},n.extractContents=function(){for(var e=this._start.ownerDocument.createDocumentFragment(),n=t(this._start,this._end),a=0,r=n.length;r>a;a++)e.appendChild(n[a]);return e},n.setEndAfter=function(t){this._end=t},n.setEndBefore=function(t){this._end=t.previousSibling},n.setStartAfter=function(t){this._start=t.nextSibling},n.setStartBefore=function(t){this._start=t}}}()}}(this.window||t)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],332:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=s)return(0,u["default"])({points:n});for(var l=1;s-1>=l;l++)i.push((0,p.times)(a,(0,p.minus)(n[l],n[l-1])));for(var f=[(0,p.plus)(n[0],c(i[0],i[1]))],l=1;s-2>=l;l++)f.push((0,p.minus)(n[l],(0,p.average)([i[l],i[l-1]])));f.push((0,p.minus)(n[s-1],c(i[s-2],i[s-3])));var d=f[0],h=f[1],m=n[0],g=n[1],v=(e=(0,o["default"])()).moveto.apply(e,r(m)).curveto(d[0],d[1],h[0],h[1],g[0],g[1]);return{path:(0,p.range)(2,s).reduce(function(t,e){var a=f[e],r=n[e];return t.smoothcurveto(a[0],a[1],r[0],r[1])},v),centroid:(0,p.average)(n)}},e.exports=n["default"]},{335:335,336:336,337:337}],333:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(u){r=!0,i=u}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=t(334),o=a(i),s=t(335),u=1e-5,p=function(t,e){var n=t.map(e),a=n.sort(function(t,e){var n=r(t,2),a=n[0],i=(n[1],r(e,2)),o=i[0];i[1];return a-o}),i=a.length,o=a[0][0],p=a[i-1][0],c=(0,s.minBy)(a,function(t){return t[1]}),l=(0,s.maxBy)(a,function(t){return t[1]});return o==p&&(p+=u),c==l&&(l+=u),{points:a,xmin:o,xmax:p,ymin:c,ymax:l}};n["default"]=function(t){var e=t.data,n=t.xaccessor,a=t.yaccessor,i=t.width,u=t.height,c=t.closed,l=t.min,f=t.max;n||(n=function(t){var e=r(t,2),n=e[0];e[1];return n}),a||(a=function(t){var e=r(t,2),n=(e[0],e[1]);return n});var d=function(t){return[n(t),a(t)]},h=e.map(function(t){return p(t,d)}),m=(0,s.minBy)(h,function(t){return t.xmin}),g=(0,s.maxBy)(h,function(t){return t.xmax}),v=null==l?(0,s.minBy)(h,function(t){return t.ymin}):l,b=null==f?(0,s.maxBy)(h,function(t){return t.ymax}):f;c&&(v=Math.min(v,0),b=Math.max(b,0));var y=c?0:v,x=(0,o["default"])([m,g],[0,i]),_=(0,o["default"])([v,b],[u,0]),w=function(t){var e=r(t,2),n=e[0],a=e[1];return[x(n),_(a)]};return{arranged:h,scale:w,xscale:x,yscale:_,base:y}},e.exports=n["default"]},{334:334,335:335}],334:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(u){r=!0,i=u}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t,e){var n=a(t,2),r=n[0],o=n[1],s=a(e,2),u=s[0],p=s[1],c=function(t){return u+(p-u)*(t-r)/(o-r)};return c.inverse=function(){return i([u,p],[r,o])},c};n["default"]=r,e.exports=n["default"]},{}],335:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(u){r=!0,i=u}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(t){return t.reduce(function(t,e){return t+e},0)},i=function(t){return t.reduce(function(t,e){return Math.min(t,e)})},o=function(t){return t.reduce(function(t,e){return Math.max(t,e)})},s=function(t,e){return t.reduce(function(t,n){return t+e(n)},0)},u=function(t,e){return t.reduce(function(t,n){return Math.min(t,e(n))},1/0)},p=function(t,e){return t.reduce(function(t,n){return Math.max(t,e(n))},-(1/0))},c=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],u=o[1];return[r+s,i+u]},l=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],u=o[1];return[r-s,i-u]},f=function(t,e){var n=a(e,2),r=n[0],i=n[1];return[t*r,t*i]},d=function(t){var e=a(t,2),n=e[0],r=e[1];return Math.sqrt(n*n+r*r)},h=function(t){return t.reduce(c,[0,0])},m=function(t){return f(1/t.length,t.reduce(c))},g=function(t,e){return f(t,[Math.sin(e),-Math.cos(e)])},v=function(t,e){var n=t||{};for(var a in n){var r=n[a];e[a]=r(e.index,e.item,e.group)}return e},b=function(t,e,n){for(var a=[],r=t;e>r;r++)a.push(r);return n&&a.push(e),a},y=function(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=Object.keys(t)[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var u=o.value,p=t[u];n.push(e(u,p))}}catch(c){r=!0,i=c}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n},x=function(t){return y(t,function(t,e){return[t,e]})},_=function(t){return t};n.sum=r,n.min=i,n.max=o,n.sumBy=s,n.minBy=u,n.maxBy=p,n.plus=c,n.minus=l,n.times=f,n.id=_,n.length=d,n.sumVectors=h,n.average=m,n.onCircle=g,n.enhance=v,n.range=b,n.mapObject=y,n.pairs=x,n["default"]={ -sum:r,min:i,max:o,sumBy:s,minBy:u,maxBy:p,plus:c,minus:l,times:f,id:_,length:d,sumVectors:h,average:m,onCircle:g,enhance:v,range:b,mapObject:y,pairs:x}},{}],336:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(u){r=!0,i=u}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t){var e=t||[],n=function(t,e){var n=t.slice(0,t.length);return n.push(e),n},r=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],u=o[1];return r===s&&i===u},o=function(t,e){for(var n=t.length;"0"===t.charAt(n-1);)n-=1;return"."===t.charAt(n-1)&&(n-=1),t.substr(0,n)},s=function(t,e){var n=t.toFixed(e);return o(n)},u=function(t){var e=t.command,n=t.params,a=n.map(function(t){return s(t,6)});return e+" "+a.join(" ")},p=function(t,e){var n=t.command,r=t.params,i=a(e,2),o=i[0],s=i[1];switch(n){case"M":return[r[0],r[1]];case"L":return[r[0],r[1]];case"H":return[r[0],s];case"V":return[o,r[0]];case"Z":return null;case"C":return[r[4],r[5]];case"S":return[r[2],r[3]];case"Q":return[r[2],r[3]];case"T":return[r[0],r[1]];case"A":return[r[5],r[6]]}},c=function(t,e){return function(n){var a="object"==typeof n?t.map(function(t){return n[t]}):arguments;return e.apply(null,a)}},l=function(t){return i(n(e,t))};return{moveto:c(["x","y"],function(t,e){return l({command:"M",params:[t,e]})}),lineto:c(["x","y"],function(t,e){return l({command:"L",params:[t,e]})}),hlineto:c(["x"],function(t){return l({command:"H",params:[t]})}),vlineto:c(["y"],function(t){return l({command:"V",params:[t]})}),closepath:function(){return l({command:"Z",params:[]})},curveto:c(["x1","y1","x2","y2","x","y"],function(t,e,n,a,r,i){return l({command:"C",params:[t,e,n,a,r,i]})}),smoothcurveto:c(["x2","y2","x","y"],function(t,e,n,a){return l({command:"S",params:[t,e,n,a]})}),qcurveto:c(["x1","y1","x","y"],function(t,e,n,a){return l({command:"Q",params:[t,e,n,a]})}),smoothqcurveto:c(["x","y"],function(t,e){return l({command:"T",params:[t,e]})}),arc:c(["rx","ry","xrot","largeArcFlag","sweepFlag","x","y"],function(t,e,n,a,r,i,o){return l({command:"A",params:[t,e,n,a,r,i,o]})}),print:function(){return e.map(u).join(" ")},points:function(){var t=[],n=[0,0],a=!0,r=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var u=o.value,c=p(u,n);n=c,c&&t.push(c)}}catch(l){r=!0,i=l}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return t},instructions:function(){return e.slice(0,e.length)},connect:function(t){var e=this.points(),n=e[e.length-1],a=t.points()[0],o=t.instructions().slice(1);return r(n,a)||o.unshift({command:"L",params:a}),i(this.instructions().concat(o))}}};n["default"]=function(){return r()},e.exports=n["default"]},{}],337:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];for(var r,i;i=n.shift();)for(r in i)Mo.call(i,r)&&(t[r]=i[r]);return t}function r(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function i(t){return"[object Array]"===Lo.call(t)}function o(t){return jo.test(Lo.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function u(t){return!isNaN(parseFloat(t))&&isFinite(t)}function p(t){return t&&"[object Object]"===Lo.call(t)}function c(t,e){return t.replace(/%s/g,function(){return e.shift()})}function l(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];throw t=c(t,n),Error(t)}function f(){Mg.DEBUG&&Oo.apply(null,arguments)}function d(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),To(t,n)}function h(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),Do[t]||(Do[t]=!0,To(t,n))}function m(){Mg.DEBUG&&d.apply(null,arguments)}function g(){Mg.DEBUG&&h.apply(null,arguments)}function v(t,e,n){var a=b(t,e,n);return a?a[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function x(t){var e,n,a,r,i,o;for(e=t.split("."),(n=zo[e.length])||(n=_(e.length)),i=[],a=function(t,n){return t?"*":e[n]},r=n.length;r--;)o=n[r].map(a).join("."),i.hasOwnProperty(o)||(i.push(o),i[o]=!0);return i}function _(t){var e,n,a,r,i,o,s,u,p="";if(!zo[t]){for(a=[];p.length=i;i+=1){for(n=i.toString(2);n.lengtho;o++)u.push(r(n[o]));a[i]=u}zo[t]=a}return zo[t]}function w(t,e,n,a){var r=t[e];if(!r||!r.equalsOrStartsWith(a)&&r.equalsOrStartsWith(n))return t[e]=r?r.replace(n,a):a,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&u(e)?+e:e}function S(t){return null==t?t:(Qo.hasOwnProperty(t)||(Qo[t]=new Ko(t)),Qo[t])}function E(t,e){function n(e,n){var a,r,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(a=t.viewmodel.wrapped[n.str],r=a?a.get():t.viewmodel.get(n),o=r?Object.keys(r):null),o&&o.forEach(function(t){"_ractive"===t&&i(r)||e.push(n.join(t))}),e}var a,r,o;for(a=e.str.split("."),o=[$o];r=a.shift();)"*"===r?o=o.reduce(n,[]):o[0]===$o?o[0]=S(r):o=o.map(P(r));return o}function P(t){return function(e){return e.join(t)}}function C(t){return t?t.replace(Wo,".$1"):""}function A(t,e,n){if("string"!=typeof e||!u(n))throw Error("Bad arguments");var a=void 0,r=void 0;if(/\*/.test(e))return r={},E(t,S(C(e))).forEach(function(e){var a=t.viewmodel.get(e);if(!u(a))throw Error(Xo);r[e.str]=a+n}),t.set(r);if(a=t.get(e),!u(a))throw Error(Xo);return t.set(e,+a+n)}function O(t,e){return Jo(this,t,void 0===e?1:+e)}function T(t){this.event=t,this.method="on"+t,this.deprecate=as[t]}function R(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function M(t,e){for(var n=0,a=t.length;a>n;n++)if(t[n]==e)return!0;return!1}function L(t,e){var n;if(!i(t)||!i(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function j(t){return"string"==typeof t?[t]:void 0===t?[]:t}function D(t){return t[t.length-1]}function N(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function F(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function I(t){setTimeout(t,0)}function B(t,e){return function(){for(var n;n=t.shift();)n(e)}}function q(t,e,n,a){var r;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof rs)e.then(n,a);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{r=e.then}catch(i){return void a(i)}if("function"==typeof r){var o,s,u;s=function(e){o||(o=!0,q(t,e,n,a))},u=function(t){o||(o=!0,a(t))};try{r.call(e,s,u)}catch(i){if(!o)return a(i),void(o=!0)}}else n(e)}}function U(t,e,n){var a;return e=C(e),"~/"===e.substr(0,2)?(a=S(e.substring(2)),z(t,a.firstKey,n)):"."===e[0]?(a=V(cs(n),e),a&&z(t,a.firstKey,n)):a=G(t,S(e),n),a}function V(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return S(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),S(n.join("."))}return S(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function G(t,e,n,a){var r,i,o,s,u;if(e.isRoot)return e;for(i=e.firstKey;n;)if(r=n.context,n=n.parent,r&&(s=!0,o=t.viewmodel.get(r),o&&("object"==typeof o||"function"==typeof o)&&i in o))return r.join(e.str);return W(t.viewmodel,i)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,i=S(i),u=G(t.parent,i,n,!0))?(t.viewmodel.map(i,{origin:t.parent.viewmodel,keypath:u}),e):a||s?void 0:(t.viewmodel.set(e,void 0),e)}function z(t,e){var n;!t.parent||t.isolated||W(t.viewmodel,e)||(e=S(e),(n=G(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function W(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function H(t){t.teardown()}function Q(t){t.unbind()}function K(t){t.unrender()}function Y(t){t.cancel()}function $(t){t.detach()}function J(t){t.detachNodes()}function X(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function Z(){for(var t,e,n;ds.ractives.length;)e=ds.ractives.pop(),n=e.viewmodel.applyChanges(),n&&vs.fire(e,n);for(tt(),t=0;t=0;i--)r=t._subs[e[i]],r&&(s=vt(t,r,n,a)&&s);if(Gs.dequeue(t),t.parent&&s){if(o&&t.component){var u=t.component.name+"."+e[e.length-1];e=S(u).wildcardMatches(),n&&(n.component=t)}gt(t.parent,e,n,a)}}function vt(t,e,n,a){var r=null,i=!1;n&&!n._noArg&&(a=[n].concat(a)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,a)===!1&&(i=!0);return n&&!n._noArg&&i&&(r=n.original)&&(r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation()),!i}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};zs(this,t,e)}function yt(t){var e;return t=S(C(t)),e=this.viewmodel.get(t,Qs),void 0===e&&this.parent&&!this.isolated&&ls(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function xt(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,_t(this)}function _t(t){Ys.fire(t),t.findAllComponents("*").forEach(function(t){_t(t.instance)})}function wt(t,e,n){var a,r;return t=S(C(t)),a=this.viewmodel.get(t),i(a)&&i(e)?(r=bs.start(this,!0),this.viewmodel.merge(t,a,e,n),bs.end(),r):this.set(t,e,n&&n.complete)}function kt(t,e){var n,a;return n=E(t,e),a={},n.forEach(function(e){a[e.str]=t.get(e.str)}),a}function St(t,e,n,a){var r,i,o;e=S(C(e)),a=a||cu,e.isPattern?(r=new uu(t,e,n,a),t.viewmodel.patternObservers.push(r),i=!0):r=new Zs(t,e,n,a),r.init(a.init),t.viewmodel.register(e,r,i?"patternObservers":"observers"),r.ready=!0;var s={cancel:function(){var n;o||(i?(n=t.viewmodel.patternObservers.indexOf(r),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,r,"patternObservers")):t.viewmodel.unregister(e,r,"observers"),o=!0)}};return t._observers.push(s),s}function Et(t,e,n){var a,r,i,o;if(p(t)){n=e,r=t,a=[];for(t in r)r.hasOwnProperty(t)&&(e=r[t],a.push(this.observe(t,e,n)));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",pu(this,t,e,n);if(i=t.split(" "),1===i.length)return pu(this,t,e,n);for(a=[],o=i.length;o--;)t=i[o],t&&a.push(pu(this,t,e,n));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}function Pt(t,e,n){var a=this.observe(t,function(){e.apply(this,arguments),a.cancel()},{init:!1,defer:n&&n.defer});return a}function Ct(t,e){var n,a=this;if(t)n=t.split(" ").map(du).filter(hu),n.forEach(function(t){var n,r;(n=a._subs[t])&&(e?(r=n.indexOf(e),-1!==r&&n.splice(r,1)):a._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function At(t,e){var n,a,r,i=this;if("object"==typeof t){n=[];for(a in t)t.hasOwnProperty(a)&&n.push(this.on(a,t[a]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return r=t.split(" ").map(du).filter(hu),r.forEach(function(t){(i._subs[t]||(i._subs[t]=[])).push(e)}),{cancel:function(){return i.off(t,e)}}}function Ot(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Tt(t,e,n){var a,r,i,o,s,u,p=[];if(a=Rt(t,e,n),!a)return null;for(r=t.length,s=a.length-2-a[1],i=Math.min(r,a[0]),o=i+a[1],u=0;i>u;u+=1)p.push(u);for(;o>u;u+=1)p.push(-1);for(;r>u;u+=1)p.push(u+s);return 0!==s?p.touchedFrom=a[0]:p.touchedFrom=t.length,p}function Rt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Mt(e,n){var a,r,i,o=this;if(i=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),a=bs.start(this,!0),bs.scheduleTask(function(){return Ru.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&Lt(s),e.innerHTML=""}return this.cssId&&Ou.apply(),e&&((r=e.__ractive_instances__)?r.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),bs.end(),this.transitionsEnabled=i,a.then(function(){return Mu.fire(o)})}function Lt(t){t.splice(0,t.length).forEach(H)}function jt(t,e){for(var n=t.slice(),a=e.length;a--;)~n.indexOf(e[a])||n.push(e[a]);return n}function Dt(t,e){var n,a,r;return a='[data-ractive-css~="{'+e+'}"]',r=function(t){var e,n,r,i,o,s,u,p=[];for(e=[];n=Iu.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(i=e.map(Ft),u=e.length;u--;)s=i.slice(),r=e[u],s[u]=r.base+a+r.modifiers||"",o=i.slice(),o[u]=a+" "+o[u],p.push(s.join(" "),o.join(" "));return p.join(", ")},n=qu.test(t)?t.replace(qu,a):t.replace(Fu,"").replace(Nu,function(t,e){var n,a;return Bu.test(e)?t:(n=e.split(",").map(Nt),a=n.map(r).join(", ")+" ",t.replace(e,a))})}function Nt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function Ft(t){return t.str}function It(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?l("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function Bt(t,e){It(e);var n="function"==typeof t,a="function"==typeof e;return e||n||(e={}),n||a?function(){var r=a?qt(e,this):e,i=n?qt(t,this):t;return Ut(r,i)}:Ut(e,t)}function qt(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&l("Data function must return an object"),n.constructor!==Object&&g("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function Ut(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function Vt(t){var e=So(Ku);return e.parse=function(e,n){return Gt(e,n||t)},e}function Gt(t,e){if(!Hu)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return Hu(t,e||this.options)}function zt(t,e){var n;if(!Xi){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Wt(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a From a0b1b82608e103d51b8e7622ab4b909740318e06 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 30 Jul 2018 16:55:08 +0000 Subject: [PATCH 223/403] Automatic changelog compile, [ci skip] --- html/changelog.html | 132 ++++++++++----------- html/changelogs/.all_changelog.yml | 45 +++++++ html/changelogs/AutoChangeLog-pr-39298.yml | 6 - html/changelogs/AutoChangeLog-pr-39344.yml | 4 - html/changelogs/AutoChangeLog-pr-39376.yml | 9 -- html/changelogs/AutoChangeLog-pr-39377.yml | 4 - html/changelogs/AutoChangeLog-pr-39386.yml | 4 - html/changelogs/AutoChangeLog-pr-39400.yml | 6 - html/changelogs/AutoChangeLog-pr-39401.yml | 4 - html/changelogs/AutoChangeLog-pr-39407.yml | 4 - html/changelogs/AutoChangeLog-pr-39409.yml | 4 - html/changelogs/AutoChangeLog-pr-39410.yml | 5 - html/changelogs/AutoChangeLog-pr-39417.yml | 4 - html/changelogs/AutoChangeLog-pr-39419.yml | 4 - html/changelogs/AutoChangeLog-pr-39427.yml | 4 - html/changelogs/AutoChangeLog-pr-39431.yml | 4 - html/changelogs/AutoChangeLog-pr-39434.yml | 4 - html/changelogs/AutoChangeLog-pr-39438.yml | 4 - 18 files changed, 106 insertions(+), 145 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-39298.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39344.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39376.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39377.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39386.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39400.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39401.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39407.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39409.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39410.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39417.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39419.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39427.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39431.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39434.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39438.yml diff --git a/html/changelog.html b/html/changelog.html index 2fbd99c290..7a31d4b836 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,67 @@ -->
    +

    30 July 2018

    +

    Anonmare updated:

    +
      +
    • Upload boards and AI modules, in addition to Weapon Recharger boards, are now more expensive to manufacture
    • +
    +

    Basilman updated:

    +
      +
    • fixed BM Speedwagon offsets
    • +
    +

    Cobby (based off Wesoda25's idea) updated:

    +
      +
    • Adds the PENLITE holobarrier. A holographic barrier which halts individuals with bad diseases!
    • +
    +

    Denton updated:

    +
      +
    • Techweb nodes that are available to exofabs by roundstart have been moved to basic research technology.
    • +
    • Ripley APLU circuit boards are now printable by roundstart.
    • +
    • Odysseus, Gygax, Durand, H.O.N.K. and Phazon mech parts have to be researched before becoming printable (same as their circuit boards).
    • +
    • Arrivals shuttles no longer throw objects/players when docking.
    • +
    • Regular fedoras no longer spawn containing flasks.
    • +
    • Increased the range of handheld T-ray scanners.
    • +
    • Cargo bounties that request irreplaceable items have been removed.
    • +
    +

    Garen updated:

    +
      +
    • Throwers no longer deal damage
    • +
    • Flashlight circuits are now the same strength as a normal flashlight
    • +
    • Grabber circuits are now combat circuits
    • +
    • Removed smoke circuits
    • +
    • Removed all screens larger than small
    • +
    • Ntnet circuits can no longer specify the passkey used, it instead always uses the access
    • +
    +

    Hate9 updated:

    +
      +
    • Added pulse multiplexer circuits, to complete the list of data transfers.
    • +
    +

    Jared-Fogle updated:

    +
      +
    • NanoTrasen now officially recognizes Moth Week as a holiday.
    • +
    • Temporarily removes canvases until someone figures out how to fix them.
    • +
    +

    Mickyan updated:

    +
      +
    • Social anxiety trigger range decreased. Stay out of my personal space!
    • +
    • Social anxiety no longer triggers while nobody is around but you
    • +
    +

    WJohnston updated:

    +
      +
    • Redesigned the metastation white ship as a salvage vessel.
    • +
    +

    YoYoBatty updated:

    +
      +
    • SMES power terminals not actually deleting the terminal reference when by cutting the terminal itself rather than the SMES.
    • +
    • SMES now reconnect to the grid properly after construction.
    • +
    • SMES now uses wirecutter act to handle terminal deconstruction.
    • +
    +

    ninjanomnom updated:

    +
      +
    • Objects picked up from tables blocking throws will no longer be forever unthrowable
    • +
    +

    28 July 2018

    CitrusGender updated:

      @@ -1454,77 +1515,6 @@

      Naksu updated:

      • removed some unneeded typecaches
      - -

      28 May 2018

      -

      CitrusGender updated:

      -
        -
      • Kills you if you're under 0% blood and above -9999% blood level (shouldn't be possible through normal means to be below that.)
      • -
      • Stops bloodloss trait from happening if your race contains the NO_BLOOD
      • -
      • added a check to see if the preferred race is human when the name doesn't have a space
      • -
      -

      Dennok updated:

      -
        -
      • Fixed a laser reflections from reflectors.
      • -
      -

      Denton updated:

      -
        -
      • Deltastation's firing range has been decommisioned and replaced with a brand new toxins burn chamber.
      • -
      • Delta toxins disposals are now actually connected to the disposals loop. Toxins storage has a fire alarm too.
      • -
      • The shutter buttons of Pubbystation's mechbay now check for access.
      • -
      -

      SpaceManiac updated:

      -
        -
      • The robustness of the Super Secret Room has been increased.
      • -
      • Observers can no longer move the action button toggle or change the ambient occlusion setting of their targets.
      • -
      • The emergency space suit safes in escape pods are no longer always unlocked.
      • -
      -

      Tlaltecuhtli updated:

      -
        -
      • apiaries from cargo start unwrenched
      • -
      - -

      27 May 2018

      -

      Armhulen, and Keekenox updated:

      -
        -
      • Chaplain now gets custom armor too! Order it from the beacon in your locker.
      • -
      -

      Cobby updated:

      -
        -
      • Several of the recent drinks added have now been given effects!
      • -
      • Alexander: Conquer the world... or just the station with this drink! If you have a shield, it will increase the block chance by 10 percent! Careful not to drop it in battle though....
      • -
      • Between The Sheets: Save the pillow talk for next shift, having this in your system while you're asleep will slowly heal you!
      • -
      • Menthol: Prevents coughing. Good for a cold or if the Chaplain gets his hands on a smoke book!
      • -
      • Descriptions have been edited so that if you view these under a chem master they will tell you the effect.
      • -
      • Decals are the exception to the recent removal of effects in Chameleon Projectors.
      • -
      -

      Dax Dupont updated:

      -
        -
      • Did you know istype doesn't work on paths even though they are mostly the same? Yeah I didn't either. Experimentor shouldn't shit out TB nades anymore.
      • -
      • Fixes item reactions for relics as well.
      • -
      • Adds better messaging
      • -
      • Fixes summons happening on away missions.
      • -
      -

      GuyonBroadway updated:

      -
        -
      • Adds gloves of the north star to the traitor uplink. Wearing these gloves lets you punch people five times faster than normal.
      • -
      • Sprites for the gloves courtesy of Notamaniac
      • -
      -

      Mickyan updated:

      -
        -
      • New trait: Drunken Resilience. You may be a drunken wreck but at least you're healthy. If alcohol poisoning doesn't get you, that is!
      • -
      -

      Naksu updated:

      -
        -
      • Nuclear explosive-shaped beerkegs found on metastation can now be triggered with the nuclear disk and the syndicate's legacy nuclear code for a foamy surprise
      • -
      -

      SpaceManiac updated:

      -
        -
      • Unwrenching and re-wrenching pre-mapped atmos components no longer turns them on automatically.
      • -
      -

      steamport updated:

      -
        -
      • Borgs/AIs can now toggle rad collectors
      • -
    GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 84a5ec3c81..00e14084a2 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -19236,3 +19236,48 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. resemble fighting a human in those suits, with appropriate health, sounds, and space movement limitations. - imageadd: Pirates in space suits have more modern space suits. +2018-07-30: + Anonmare: + - balance: Upload boards and AI modules, in addition to Weapon Recharger boards, + are now more expensive to manufacture + Basilman: + - bugfix: fixed BM Speedwagon offsets + Cobby (based off Wesoda25's idea): + - rscadd: Adds the PENLITE holobarrier. A holographic barrier which halts individuals + with bad diseases! + Denton: + - tweak: Techweb nodes that are available to exofabs by roundstart have been moved + to basic research technology. + - balance: Ripley APLU circuit boards are now printable by roundstart. + - balance: Odysseus, Gygax, Durand, H.O.N.K. and Phazon mech parts have to be researched + before becoming printable (same as their circuit boards). + - tweak: Arrivals shuttles no longer throw objects/players when docking. + - bugfix: Regular fedoras no longer spawn containing flasks. + - tweak: Increased the range of handheld T-ray scanners. + - balance: Cargo bounties that request irreplaceable items have been removed. + Garen: + - balance: Throwers no longer deal damage + - balance: Flashlight circuits are now the same strength as a normal flashlight + - balance: Grabber circuits are now combat circuits + - rscdel: Removed smoke circuits + - rscdel: Removed all screens larger than small + - tweak: Ntnet circuits can no longer specify the passkey used, it instead always + uses the access + Hate9: + - rscadd: Added pulse multiplexer circuits, to complete the list of data transfers. + Jared-Fogle: + - rscadd: NanoTrasen now officially recognizes Moth Week as a holiday. + - rscdel: Temporarily removes canvases until someone figures out how to fix them. + Mickyan: + - balance: Social anxiety trigger range decreased. Stay out of my personal space! + - bugfix: Social anxiety no longer triggers while nobody is around but you + WJohnston: + - rscadd: Redesigned the metastation white ship as a salvage vessel. + YoYoBatty: + - bugfix: SMES power terminals not actually deleting the terminal reference when + by cutting the terminal itself rather than the SMES. + - bugfix: SMES now reconnect to the grid properly after construction. + - refactor: SMES now uses wirecutter act to handle terminal deconstruction. + ninjanomnom: + - bugfix: Objects picked up from tables blocking throws will no longer be forever + unthrowable diff --git a/html/changelogs/AutoChangeLog-pr-39298.yml b/html/changelogs/AutoChangeLog-pr-39298.yml deleted file mode 100644 index 315ee0e83a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39298.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - tweak: "Techweb nodes that are available to exofabs by roundstart have been moved to basic research technology." - - balance: "Ripley APLU circuit boards are now printable by roundstart." - - balance: "Odysseus, Gygax, Durand, H.O.N.K. and Phazon mech parts have to be researched before becoming printable (same as their circuit boards)." diff --git a/html/changelogs/AutoChangeLog-pr-39344.yml b/html/changelogs/AutoChangeLog-pr-39344.yml deleted file mode 100644 index 75b742a82a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39344.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cobby (based off Wesoda25's idea)" -delete-after: True -changes: - - rscadd: "Adds the PENLITE holobarrier. A holographic barrier which halts individuals with bad diseases!" diff --git a/html/changelogs/AutoChangeLog-pr-39376.yml b/html/changelogs/AutoChangeLog-pr-39376.yml deleted file mode 100644 index 5ebd8d1750..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39376.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Garen" -delete-after: True -changes: - - balance: "Throwers no longer deal damage" - - balance: "Flashlight circuits are now the same strength as a normal flashlight" - - balance: "Grabber circuits are now combat circuits" - - rscdel: "Removed smoke circuits" - - rscdel: "Removed all screens larger than small" - - tweak: "Ntnet circuits can no longer specify the passkey used, it instead always uses the access" diff --git a/html/changelogs/AutoChangeLog-pr-39377.yml b/html/changelogs/AutoChangeLog-pr-39377.yml deleted file mode 100644 index 0a19199ee0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39377.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Jared-Fogle" -delete-after: True -changes: - - rscadd: "NanoTrasen now officially recognizes Moth Week as a holiday." diff --git a/html/changelogs/AutoChangeLog-pr-39386.yml b/html/changelogs/AutoChangeLog-pr-39386.yml deleted file mode 100644 index 92341511aa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39386.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Anonmare" -delete-after: True -changes: - - balance: "Upload boards and AI modules, in addition to Weapon Recharger boards, are now more expensive to manufacture" diff --git a/html/changelogs/AutoChangeLog-pr-39400.yml b/html/changelogs/AutoChangeLog-pr-39400.yml deleted file mode 100644 index 107f748196..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39400.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "YoYoBatty" -delete-after: True -changes: - - bugfix: "SMES power terminals not actually deleting the terminal reference when by cutting the terminal itself rather than the SMES." - - bugfix: "SMES now reconnect to the grid properly after construction." - - refactor: "SMES now uses wirecutter act to handle terminal deconstruction." diff --git a/html/changelogs/AutoChangeLog-pr-39401.yml b/html/changelogs/AutoChangeLog-pr-39401.yml deleted file mode 100644 index 39c9f515f5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39401.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Jared-Fogle" -delete-after: True -changes: - - rscdel: "Temporarily removes canvases until someone figures out how to fix them." diff --git a/html/changelogs/AutoChangeLog-pr-39407.yml b/html/changelogs/AutoChangeLog-pr-39407.yml deleted file mode 100644 index b0296e7180..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39407.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - tweak: "Arrivals shuttles no longer throw objects/players when docking." diff --git a/html/changelogs/AutoChangeLog-pr-39409.yml b/html/changelogs/AutoChangeLog-pr-39409.yml deleted file mode 100644 index 673364eb0c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39409.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - bugfix: "Regular fedoras no longer spawn containing flasks." diff --git a/html/changelogs/AutoChangeLog-pr-39410.yml b/html/changelogs/AutoChangeLog-pr-39410.yml deleted file mode 100644 index bf7d88c610..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39410.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Mickyan" -delete-after: True -changes: - - balance: "Social anxiety trigger range decreased. Stay out of my personal space!" - - bugfix: "Social anxiety no longer triggers while nobody is around but you" diff --git a/html/changelogs/AutoChangeLog-pr-39417.yml b/html/changelogs/AutoChangeLog-pr-39417.yml deleted file mode 100644 index f88e029b56..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39417.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hate9" -delete-after: True -changes: - - rscadd: "Added pulse multiplexer circuits, to complete the list of data transfers." diff --git a/html/changelogs/AutoChangeLog-pr-39419.yml b/html/changelogs/AutoChangeLog-pr-39419.yml deleted file mode 100644 index 5790d2ed75..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39419.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Basilman" -delete-after: True -changes: - - bugfix: "fixed BM Speedwagon offsets" diff --git a/html/changelogs/AutoChangeLog-pr-39427.yml b/html/changelogs/AutoChangeLog-pr-39427.yml deleted file mode 100644 index 7940dfdbff..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39427.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - tweak: "Increased the range of handheld T-ray scanners." diff --git a/html/changelogs/AutoChangeLog-pr-39431.yml b/html/changelogs/AutoChangeLog-pr-39431.yml deleted file mode 100644 index 310c1caea9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39431.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - balance: "Cargo bounties that request irreplaceable items have been removed." diff --git a/html/changelogs/AutoChangeLog-pr-39434.yml b/html/changelogs/AutoChangeLog-pr-39434.yml deleted file mode 100644 index 4c80590a3b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39434.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Objects picked up from tables blocking throws will no longer be forever unthrowable" diff --git a/html/changelogs/AutoChangeLog-pr-39438.yml b/html/changelogs/AutoChangeLog-pr-39438.yml deleted file mode 100644 index ce7639de9f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39438.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohnston" -delete-after: True -changes: - - rscadd: "Redesigned the metastation white ship as a salvage vessel." From 294027088056b954615459008c41f551ea9d0077 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Mon, 30 Jul 2018 22:32:07 +0200 Subject: [PATCH 224/403] Add four more bounties (#39421) I added the following bounty items: * Firefighter APLU for 18.000 dosh - 5.000 more than a Ripley APLU since it requires three times the amount of plasteel. * Cat tail for 3000 since we already have a lizard tail bounty. * Cat and Liz o' Nine Tails for 4000 as a variation on the tail bounties. --- code/modules/cargo/bounties/assistant.dm | 14 +++++++++++++- code/modules/cargo/bounties/mech.dm | 7 ++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 8f617eda39..b2fe671f24 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -141,6 +141,18 @@ reward = 3000 wanted_types = list(/obj/item/organ/tail/lizard) +/datum/bounty/item/assistant/cat_tail + name = "Cat Tail" + description = "Central Command has run out of heavy duty pipe cleaners. Can you ship over a cat tail to help us out?" + reward = 3000 + wanted_types = list(/obj/item/organ/tail/cat) + +/datum/bounty/item/assistant/tail_whip + name = "Nine Tails whip" + description = "Commander Jackson is looking for a fine addition to her exotic weapons collection. She will reward you handsomely for either a Cat or Liz o' Nine Tails." + reward = 4000 + wanted_types = list(/obj/item/melee/chainofcommand/tailwhip) + /datum/bounty/item/assistant/shard name = "Shards" description = "A killer clown has been stalking CentCom, and staff have been unable to catch her because she's not wearing shoes. Please ship some shards so that a booby trap can be constructed." @@ -150,7 +162,7 @@ /datum/bounty/item/assistant/comfy_chair name = "Comfy Chairs" - description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him. " + description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him." reward = 1500 required_count = 5 wanted_types = list(/obj/structure/chair/comfy) diff --git a/code/modules/cargo/bounties/mech.dm b/code/modules/cargo/bounties/mech.dm index c331e97266..b7eac3499f 100644 --- a/code/modules/cargo/bounties/mech.dm +++ b/code/modules/cargo/bounties/mech.dm @@ -17,6 +17,12 @@ name = "APLU \"Ripley\"" reward = 13000 wanted_types = list(/obj/mecha/working/ripley) + exclude_types = list(/obj/mecha/working/ripley/firefighter) + +/datum/bounty/item/mech/firefighter + name = "APLU \"Firefighter\"" + reward = 18000 + wanted_types = list(/obj/mecha/working/ripley/firefighter) /datum/bounty/item/mech/odysseus name = "Odysseus" @@ -37,4 +43,3 @@ name = "Phazon" reward = 50000 wanted_types = list(/obj/mecha/combat/phazon) - From 2e6fefbac9fcad1bfc8f4ce8753135b4e7e91474 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 30 Jul 2018 13:32:09 -0700 Subject: [PATCH 225/403] Automatic changelog generation for PR #39421 [ci skip] --- html/changelogs/AutoChangeLog-pr-39421.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39421.yml diff --git a/html/changelogs/AutoChangeLog-pr-39421.yml b/html/changelogs/AutoChangeLog-pr-39421.yml new file mode 100644 index 0000000000..0d0d8b8b8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39421.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "New bounties have been added for the Firefighter APLU mech, cat tails and the Cat/Liz o' Nine Tails weapons." From 085dff4678f47cc868ecb472c4583606d7a391e0 Mon Sep 17 00:00:00 2001 From: MMMiracles Date: Mon, 30 Jul 2018 17:21:19 -0400 Subject: [PATCH 226/403] Indestructible turfs don't get destroyed by singularities (#39448) Indestructible turfs that are actually destructible aren't very indestructible, one could argue. --- code/game/turfs/closed.dm | 3 +++ code/game/turfs/open.dm | 3 +++ 2 files changed, 6 insertions(+) diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index c1aba02f28..578232fba0 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -35,6 +35,9 @@ to_be_destroyed = FALSE return src +/turf/closed/indestructible/singularity_act() + return + /turf/closed/indestructible/oldshuttle name = "strange shuttle wall" icon = 'icons/turf/shuttleold.dmi' diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 44dff22963..3554155f46 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -23,6 +23,9 @@ to_be_destroyed = FALSE return src +/turf/open/indestructible/singularity_act() + return + /turf/open/indestructible/TerraformTurf(path, defer_change = FALSE, ignore_air = FALSE) return From 8ca6a80b5015803438513d923a60e425b11fda5e Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Mon, 30 Jul 2018 16:09:12 -0700 Subject: [PATCH 227/403] Triples the price on the bee grenade bundle. (#39420) * Triples the price on the bee grenade bundle. * Update uplink_items.dm --- code/modules/uplink/uplink_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index a206026ab8..dc3bdfaf2b 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -409,7 +409,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "A box with three grenades that release a swarm of angry bees upon activation. These bees indiscriminately attack friend or foe \ with random toxins. Courtesy of the BLF and Tiger Cooperative." item = /obj/item/storage/box/syndie_kit/bee_grenades - cost = 5 + cost = 15 surplus = 35 include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) From 101bf4a3ba5e00cadb944b440ed10d7bffc81489 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 30 Jul 2018 16:09:15 -0700 Subject: [PATCH 228/403] Automatic changelog generation for PR #39420 [ci skip] --- html/changelogs/AutoChangeLog-pr-39420.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39420.yml diff --git a/html/changelogs/AutoChangeLog-pr-39420.yml b/html/changelogs/AutoChangeLog-pr-39420.yml new file mode 100644 index 0000000000..8114eced0e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39420.yml @@ -0,0 +1,4 @@ +author: "Iamgoofball" +delete-after: True +changes: + - balance: "Buzzkill Grenade Box Cost: 5 -> 15" From 7df3ffb4db6cf9ceead2464ce943e8544fb5fedc Mon Sep 17 00:00:00 2001 From: bgobandit Date: Mon, 30 Jul 2018 19:15:59 -0400 Subject: [PATCH 229/403] Fixes various small issues with moodlets; adds one for exercise. (#39437) Adds a slight positive moodlet for working out, the same effect as reading a book In the process refactors weight machines so they are actually object oriented, this creates map edits to Delta and Pubby as well as one ruin Changes the message "Nothing special has happened to me" to something that is hopefully less immersion-demolishing. Moodlet text for eating disgusting food no longer appears in positive green text Other various grammar fixes --- .../LavaRuins/lavaland_biodome_beach.dmm | 4 +- .../map_files/Deltastation/DeltaStation2.dmm | 10 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 8 +- code/datums/components/mood.dm | 2 +- .../mood_events/generic_negative_events.dm | 2 +- .../mood_events/generic_positive_events.dm | 5 + code/datums/mood_events/needs_events.dm | 4 +- code/modules/mining/lavaland/ruins/gym.dm | 105 ++++++++---------- 8 files changed, 65 insertions(+), 75 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 04c4fae9fb..ecaff8ad07 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -196,7 +196,7 @@ /turf/open/floor/plasteel/asteroid, /area/ruin/powered/beach) "aO" = ( -/obj/structure/stacklifter, +/obj/structure/weightmachine/stacklifter, /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "aP" = ( @@ -249,7 +249,7 @@ /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "bb" = ( -/obj/structure/weightlifter, +/obj/structure/weightmachine/weightlifter, /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "bc" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index cc320196ff..8822c407de 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -15348,7 +15348,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/weightlifter, +/obj/structure/weightmachine/weightlifter, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ icon_state = "platingdmg3" @@ -59730,7 +59730,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/weightlifter, +/obj/structure/weightmachine/weightlifter, /turf/open/floor/plasteel/neutral, /area/crew_quarters/fitness/recreation) "czj" = ( @@ -59746,7 +59746,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/structure/stacklifter, +/obj/structure/weightmachine/stacklifter, /turf/open/floor/plasteel/neutral, /area/crew_quarters/fitness/recreation) "czl" = ( @@ -61917,7 +61917,7 @@ }, /area/crew_quarters/fitness/recreation) "cDK" = ( -/obj/structure/stacklifter, +/obj/structure/weightmachine/stacklifter, /turf/open/floor/plasteel/neutral, /area/crew_quarters/fitness/recreation) "cDL" = ( @@ -61928,7 +61928,7 @@ /turf/open/floor/plasteel/neutral/side, /area/crew_quarters/fitness/recreation) "cDN" = ( -/obj/structure/weightlifter, +/obj/structure/weightmachine/weightlifter, /turf/open/floor/plasteel/neutral, /area/crew_quarters/fitness/recreation) "cDO" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index ac4e19272d..63213acdd6 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -9108,7 +9108,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/structure/stacklifter, +/obj/structure/weightmachine/stacklifter, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "ayw" = ( @@ -9611,7 +9611,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/obj/structure/weightlifter, +/obj/structure/weightmachine/weightlifter, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "azE" = ( @@ -44190,7 +44190,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/main) "cnT" = ( -/obj/structure/weightlifter, +/obj/structure/weightmachine/weightlifter, /turf/open/floor/plasteel/showroomfloor, /area/security/main) "cnV" = ( @@ -50229,7 +50229,7 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "lGp" = ( -/obj/structure/weightlifter, +/obj/structure/weightmachine/weightlifter, /turf/open/floor/plasteel/dark, /area/security/prison) "lGv" = ( diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 4c814697b4..42b3083c68 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -77,7 +77,7 @@ var/datum/mood_event/event = mood_events[i] msg += event.description else - msg += "Nothing special has happened to me lately!\n" + msg += "I don't have much of a reaction to anything right now.\n" to_chat(user || parent, msg) /datum/component/mood/proc/update_mood() //Called whenever a mood event is added or removed diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 3ee3e9b048..04be096439 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -1,5 +1,5 @@ /datum/mood_event/handcuffed - description = "I guess my antics have finally caught up with me..\n" + description = "I guess my antics have finally caught up with me.\n" mood_change = -1 /datum/mood_event/broken_vow //Used for when mimes break their vow of silence diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 54eb74f10f..61bb29c540 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -18,6 +18,11 @@ mood_change = 3 timeout = 3000 +/datum/mood_event/exercise + description = "Working out releases those endorphins!\n" + mood_change = 3 + timeout = 3000 + /datum/mood_event/pet_corgi description = "Corgis are adorable! I can't stop petting them!\n" mood_change = 3 diff --git a/code/datums/mood_events/needs_events.dm b/code/datums/mood_events/needs_events.dm index 6d0ac42769..82b69f58b9 100644 --- a/code/datums/mood_events/needs_events.dm +++ b/code/datums/mood_events/needs_events.dm @@ -39,12 +39,12 @@ timeout = 2400 /datum/mood_event/gross_food - description = "I really didn't like that food.\n" + description = "I really didn't like that food.\n" mood_change = -2 timeout = 2400 /datum/mood_event/disgusting_food - description = "That food was disgusting!\n" + description = "That food was disgusting!\n" mood_change = -4 timeout = 2400 diff --git a/code/modules/mining/lavaland/ruins/gym.dm b/code/modules/mining/lavaland/ruins/gym.dm index 634c2df859..1c535fd9ab 100644 --- a/code/modules/mining/lavaland/ruins/gym.dm +++ b/code/modules/mining/lavaland/ruins/gym.dm @@ -16,17 +16,20 @@ playsound(loc, pick(hit_sounds), 25, 1, -1) if(isliving(user)) var/mob/living/L = user + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "exercise", /datum/mood_event/exercise) L.apply_status_effect(STATUS_EFFECT_EXERCISED) -/obj/structure/stacklifter +/obj/structure/weightmachine name = "Weight Machine" desc = "Just looking at this thing makes you feel tired." - icon = 'goon/icons/obj/fitness.dmi' - icon_state = "fitnesslifter" density = TRUE anchored = TRUE + var/icon_state_inuse + +/obj/structure/weightmachine/proc/AnimateMachine(mob/living/user) + return -/obj/structure/stacklifter/attack_hand(mob/living/user) +/obj/structure/weightmachine/attack_hand(mob/living/user) . = ..() if(.) return @@ -35,76 +38,58 @@ return else obj_flags |= IN_USE - icon_state = "fitnesslifter2" + icon_state = icon_state_inuse user.setDir(SOUTH) user.Stun(80) user.forceMove(src.loc) var/bragmessage = pick("pushing it to the limit","going into overdrive","burning with determination","rising up to the challenge", "getting strong now","getting ripped") user.visible_message("[user] is [bragmessage]!") - var/lifts = 0 - while (lifts++ < 6) - if (user.loc != src.loc) - break - sleep(3) - animate(user, pixel_y = -2, time = 3) - sleep(3) - animate(user, pixel_y = -4, time = 3) - sleep(3) - playsound(user, 'goon/sound/effects/spring.ogg', 60, 1) + AnimateMachine(user) playsound(user, 'sound/machines/click.ogg', 60, 1) obj_flags &= ~IN_USE user.pixel_y = 0 var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!") - icon_state = "fitnesslifter" + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "exercise", /datum/mood_event/exercise) + icon_state = initial(icon_state) to_chat(user, finishmessage) user.apply_status_effect(STATUS_EFFECT_EXERCISED) -/obj/structure/weightlifter - name = "Weight Machine" - desc = "Just looking at this thing makes you feel tired." +/obj/structure/weightmachine/stacklifter icon = 'goon/icons/obj/fitness.dmi' - icon_state = "fitnessweight" - density = TRUE - anchored = TRUE - -/obj/structure/weightlifter/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(obj_flags & IN_USE) - to_chat(user, "It's already in use - wait a bit.") - return - else - obj_flags |= IN_USE - icon_state = "fitnessweight-c" - user.setDir(SOUTH) - user.Stun(80) - user.forceMove(src.loc) - var/mutable_appearance/swole_overlay = mutable_appearance(icon, "fitnessweight-w", WALL_OBJ_LAYER) - add_overlay(swole_overlay) - var/bragmessage = pick("pushing it to the limit","going into overdrive","burning with determination","rising up to the challenge", "getting strong now","getting ripped") - user.visible_message("[user] is [bragmessage]!") - var/reps = 0 - user.pixel_y = 5 - while (reps++ < 6) - if (user.loc != src.loc) - break - - for (var/innerReps = max(reps, 1), innerReps > 0, innerReps--) - sleep(3) - animate(user, pixel_y = (user.pixel_y == 3) ? 5 : 3, time = 3) - - playsound(user, 'goon/sound/effects/spring.ogg', 60, 1) + icon_state = "fitnesslifter" + icon_state_inuse = "fitnesslifter2" +/obj/structure/weightmachine/stacklifter/AnimateMachine(mob/living/user) + var/lifts = 0 + while (lifts++ < 6) + if (user.loc != src.loc) + break sleep(3) - animate(user, pixel_y = 2, time = 3) + animate(user, pixel_y = -2, time = 3) sleep(3) - playsound(user, 'sound/machines/click.ogg', 60, 1) - obj_flags &= ~IN_USE - animate(user, pixel_y = 0, time = 3) - var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!") - icon_state = "fitnessweight" - cut_overlay(swole_overlay) - to_chat(user, "[finishmessage]") - user.apply_status_effect(STATUS_EFFECT_EXERCISED) \ No newline at end of file + animate(user, pixel_y = -4, time = 3) + sleep(3) + playsound(user, 'goon/sound/effects/spring.ogg', 60, 1) + +/obj/structure/weightmachine/weightlifter + icon = 'goon/icons/obj/fitness.dmi' + icon_state = "fitnessweight" + icon_state_inuse = "fitnessweight-c" + +/obj/structure/weightmachine/weightlifter/AnimateMachine(mob/living/user) + var/mutable_appearance/swole_overlay = mutable_appearance(icon, "fitnessweight-w", WALL_OBJ_LAYER) + add_overlay(swole_overlay) + var/reps = 0 + user.pixel_y = 5 + while (reps++ < 6) + if (user.loc != src.loc) + break + for (var/innerReps = max(reps, 1), innerReps > 0, innerReps--) + sleep(3) + animate(user, pixel_y = (user.pixel_y == 3) ? 5 : 3, time = 3) + playsound(user, 'goon/sound/effects/spring.ogg', 60, 1) + sleep(3) + animate(user, pixel_y = 2, time = 3) + sleep(3) + cut_overlay(swole_overlay) \ No newline at end of file From 86b578a3d279c3fb4f350932c8dcbdc5e058acf3 Mon Sep 17 00:00:00 2001 From: granpawalton <36310010+granpawalton@users.noreply.github.com> Date: Mon, 30 Jul 2018 18:17:37 -0500 Subject: [PATCH 230/403] [READY] Incinerator clean up and update (#39299) Main goal: clean up atmos so it is more user friendly and up to date with its current uses Side goal: provide the backbone of making tritium for the user while still requiring several edits to make it at a rate that can be used. Reasoning: atmos can take a lot of math and a lot of trivial work to make it reach its end teir developements, so much so that many, especially newer atmos techs arent able to make anything tangible until around the 30 minute mark which is the length of most rounds that arent on low pop hours. When it comes to more advanced incinerators users the filter, scrubber, and mixer are all mandatory changes for a tritium set up which can become very boring and just function as a time gate between the start of the round and tritium to work with. These changes are meant to remove the less thought requiring parts of incinerator changes and encourage newer players to make their first exotic gas (similiar to how each department has a simple entry level job that a player can get hooked on to start). The changing in scrubbers and distro are meant to allow players to make many common changes without removing parts the scrubbers and distro from the room itself and the removing of the old piping for the same reason. Removing the old piping will also allow the room to be less cluttered after the incinerator user makes his or her changes. Toxins incinerator was also updated for universality --- _maps/map_files/BoxStation/BoxStation.dmm | 192 ++-- .../map_files/Deltastation/DeltaStation2.dmm | 899 ++++++++--------- _maps/map_files/MetaStation/MetaStation.dmm | 948 +++++++++--------- _maps/map_files/Mining/Lavaland.dmm | 130 +-- _maps/map_files/PubbyStation/PubbyStation.dmm | 274 +++-- _maps/shuttles/ruin_syndicate_dropship.dmm | 26 +- _maps/shuttles/whiteship_delta.dmm | 10 +- 7 files changed, 1199 insertions(+), 1280 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 40b8dd6db5..840ba5905d 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -36050,7 +36050,7 @@ dir = 2; pixel_x = 25 }, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, /turf/open/floor/engine/vacuum, @@ -43780,7 +43780,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, +/turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cfZ" = ( /obj/machinery/light_switch{ @@ -43800,18 +43800,21 @@ /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cgb" = ( -/obj/machinery/disposal/bin, /obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, -/obj/structure/disposalpipe/trunk, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cgc" = ( /obj/effect/landmark/xeno_spawn, @@ -44226,17 +44229,14 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "chi" = ( -/obj/machinery/atmospherics/pipe/manifold4w/general{ - level = 2 - }, /obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "chj" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "plasma tank pump" - }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "chk" = ( @@ -44267,7 +44267,6 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "chn" = ( -/obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ icon_state = "2-4" }, @@ -44771,11 +44770,8 @@ /obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4; - name = "input gas connector port" - }, -/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/reagent_dispensers/watertank, +/obj/item/extinguisher, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "ciz" = ( @@ -44785,16 +44781,15 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "ciA" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "input port pump" +/obj/structure/disposalpipe/segment{ + dir = 5 }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "ciB" = ( /obj/effect/decal/cleanable/cobweb, -/obj/structure/reagent_dispensers/watertank, -/obj/item/extinguisher, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "ciC" = ( @@ -44814,14 +44809,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"ciE" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) "ciF" = ( /obj/structure/table, /obj/item/cartridge/medical, @@ -45112,12 +45099,6 @@ /obj/item/storage/toolbox/emergency, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"cjq" = ( -/obj/machinery/atmospherics/components/binary/valve{ - name = "Mix to Space" - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) "cjr" = ( /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) @@ -45126,11 +45107,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"cjt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) @@ -45151,13 +45129,13 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cjw" = ( @@ -45425,10 +45403,10 @@ /turf/open/floor/plating, /area/maintenance/disposal/incinerator) "ckg" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, /obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "ckh" = ( @@ -45436,6 +45414,7 @@ dir = 8; name = "Mix to MiniSat" }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cki" = ( @@ -45456,11 +45435,10 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/valve{ - dir = 4; - name = "Incinerator to Space" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "ckl" = ( @@ -45749,6 +45727,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/meter, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "clg" = ( @@ -46783,12 +46762,12 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "coq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{ - dir = 1 - }, /obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cor" = ( @@ -48096,10 +48075,7 @@ pixel_x = -6; pixel_y = -24 }, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/obj/machinery/meter, +/obj/machinery/atmospherics/components/trinary/filter/flipped, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "css" = ( @@ -53327,8 +53303,9 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "eHI" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) @@ -53418,6 +53395,15 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"gGE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "gLH" = ( /obj/machinery/door/airlock/external{ name = "External Access"; @@ -53644,6 +53630,22 @@ }, /turf/closed/wall/r_wall, /area/science/mixing) +"kGA" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/chemist, +/obj/machinery/button/door{ + id = "chemistry_shutters"; + name = "Chemistry shutters"; + pixel_x = 24; + pixel_y = -28; + req_one_access_txt = "5; 33" + }, +/turf/open/floor/plasteel/whiteyellow/side{ + dir = 4 + }, +/area/medical/chemistry) "kOw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, @@ -53674,6 +53676,12 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) +"lhu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) "lAB" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, @@ -53698,12 +53706,6 @@ /obj/machinery/nuclearbomb/beer, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"miq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) "mjr" = ( /obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, @@ -53761,6 +53763,14 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"nQI" = ( +/obj/machinery/light_switch{ + pixel_x = -23 + }, +/obj/structure/closet/secure_closet/chemical, +/obj/item/radio/headset/headset_med, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) "nRG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -54055,22 +54065,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"vRy" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start/chemist, -/obj/machinery/button/door{ - id = "chemistry_shutters"; - name = "Chemistry shutters"; - pixel_x = 24; - pixel_y = -28; - req_one_access_txt = "5; 33" - }, -/turf/open/floor/plasteel/whiteyellow/side{ - dir = 4 - }, -/area/medical/chemistry) "wkN" = ( /turf/closed/wall, /area/science/circuit) @@ -54109,14 +54103,14 @@ }, /turf/closed/wall, /area/hallway/secondary/service) -"wCA" = ( -/obj/machinery/light_switch{ - pixel_x = -23 +"wHy" = ( +/obj/machinery/atmospherics/components/trinary/mixer{ + dir = 1; + icon_state = "mixer_off"; + name = "plasma mixer" }, -/obj/structure/closet/secure_closet/chemical, -/obj/item/radio/headset/headset_med, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) +/turf/open/floor/plasteel, +/area/engine/atmos) "wHz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -87963,7 +87957,7 @@ bcq bcq bcq bfF -wCA +nQI bio bgF blf @@ -88511,7 +88505,7 @@ bTU bUS bUS cCD -bXU +wHy bUS bUS bUS @@ -88739,7 +88733,7 @@ bip bjO bip bmG -miq +lhu bnC bpF bqS @@ -88994,7 +88988,7 @@ bfF bhd bis bjR -vRy +kGA bmI bod bpt @@ -91864,8 +91858,8 @@ chk chl ciz chi -ciz -cjq +gGE +cjr ckg cmb cpO @@ -92122,7 +92116,7 @@ cfZ cki cld eHI -cjt +cjr csq xEu wHz @@ -92634,7 +92628,7 @@ ceG cfj cgb chn -ciE +clj cjv clj ckk diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 8822c407de..452fe9c9dc 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -436,16 +436,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) -"acD" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/storage_shared) "acF" = ( /obj/docking_port/stationary{ dir = 2; @@ -12745,6 +12735,9 @@ dir = 10 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/plasteel/vault, /area/maintenance/disposal/incinerator) "aGR" = ( @@ -12753,21 +12746,25 @@ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/vault, /area/maintenance/disposal/incinerator) "aGS" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/light{ dir = 1 }, /obj/machinery/airalarm{ + locked = 0; pixel_y = 23 }, -/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel/vault, /area/maintenance/disposal/incinerator) "aGT" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/structure/extinguisher_cabinet{ pixel_y = 32 }, @@ -12776,19 +12773,17 @@ c_tag = "Atmospherics - Incinerator"; name = "atmospherics camera" }, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/plasteel/vault, /area/maintenance/disposal/incinerator) "aGU" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault, /area/maintenance/disposal/incinerator) "aGV" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, /obj/structure/cable/white{ icon_state = "2-4" }, @@ -13503,9 +13498,6 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "aIs" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Gas to Turbine" - }, /obj/structure/cable{ icon_state = "4-8" }, @@ -13516,19 +13508,6 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "aIt" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Gas to Turbine" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/maintenance/disposal/incinerator) -"aIu" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, /obj/structure/cable{ icon_state = "4-8" }, @@ -13538,7 +13517,6 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "aIv" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, /obj/structure/cable{ icon_state = "4-8" }, @@ -14139,17 +14117,12 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "aJK" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, /obj/structure/cable/white{ icon_state = "4-8" }, /turf/open/floor/plasteel/neutral, /area/maintenance/disposal/incinerator) "aJL" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/machinery/meter, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -14157,26 +14130,7 @@ }, /turf/open/floor/plasteel/neutral, /area/maintenance/disposal/incinerator) -"aJM" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/neutral, -/area/maintenance/disposal/incinerator) -"aJN" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/neutral, -/area/maintenance/disposal/incinerator) "aJO" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Mix to Turbine" - }, /obj/structure/cable/white{ icon_state = "1-4" }, @@ -14811,7 +14765,9 @@ "aLj" = ( /obj/machinery/meter, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, /turf/open/floor/plasteel/caution, /area/maintenance/disposal/incinerator) "aLk" = ( @@ -15390,7 +15346,7 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aMu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, /turf/open/floor/engine/vacuum, @@ -15423,8 +15379,11 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aMy" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/trinary/filter/flipped{ + icon_state = "filter_off_f"; + dir = 8 + }, /turf/open/floor/plasteel/caution{ dir = 10 }, @@ -23440,13 +23399,13 @@ }, /area/engine/atmos) "bdc" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/atmospherics/components/trinary/mixer{ + name = "plasma mixer" + }, /turf/open/floor/plasteel, /area/engine/atmos) "bdd" = ( @@ -29869,6 +29828,13 @@ dir = 4 }, /area/hallway/primary/central) +"brd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/storage_shared) "bre" = ( /obj/machinery/light{ dir = 8 @@ -36596,12 +36562,9 @@ /area/engine/gravity_generator) "bEp" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/highsecurity{ - name = "Gravity Generator Room"; - req_access_txt = "19;23" - }, -/obj/structure/cable/white{ - icon_state = "4-8" +/obj/machinery/door/airlock/command/glass{ + name = "Gravity Generator Chamber"; + req_access_txt = "19; 61" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -36609,8 +36572,14 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/structure/cable/white{ + icon_state = "2-4" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 + dir = 4 }, /turf/open/floor/plasteel, /area/engine/gravity_generator) @@ -36653,15 +36622,25 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "bEu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/highsecurity{ + name = "Gravity Generator Room"; + req_access_txt = "19;23" + }, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, /turf/open/floor/plasteel, -/area/engine/storage_shared) +/area/engine/gravity_generator) "bEv" = ( /obj/structure/cable/white{ icon_state = "1-8" @@ -99367,10 +99346,6 @@ }, /turf/open/floor/plasteel/dark, /area/library) -"evJ" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "exE" = ( /obj/machinery/air_sensor/atmos/toxins_mixing_tank, /turf/open/floor/engine/vacuum, @@ -99400,6 +99375,13 @@ dir = 5 }, /area/science/mixing) +"eMS" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "eTv" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -99426,6 +99408,26 @@ dir = 4 }, /area/science/misc_lab) +"fbA" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/storage_shared) +"fjK" = ( +/obj/machinery/door/poddoor/preopen{ + id = "transitlock"; + name = "Transit Tube Lockdown Door" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/caution, +/area/engine/storage_shared) "fno" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -99440,42 +99442,10 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/science/mixing) -"fyy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) "fGq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/science/circuit) -"fJG" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_y = 26 - }, -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) "fLR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -99492,6 +99462,13 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"fSj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "gbV" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 @@ -99504,36 +99481,10 @@ }, /turf/open/floor/engine, /area/science/mixing) -"ggE" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/electrical, -/obj/item/wrench/power, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/storage_shared) -"gjc" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/storage_shared) "gmj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/science/circuit) -"gEC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) "gKr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -99553,6 +99504,10 @@ dir = 5 }, /area/science/mixing) +"gPb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/neutral, +/area/engine/storage_shared) "gPv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -99588,6 +99543,18 @@ }, /turf/open/floor/plasteel, /area/maintenance/department/electrical) +"hcP" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "hdH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ @@ -99626,16 +99593,26 @@ }, /turf/open/floor/plasteel, /area/maintenance/port/aft) -"hEo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +"hsX" = ( +/obj/machinery/ore_silo, +/turf/open/floor/plasteel/vault{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/area/security/nuke_storage) +"huX" = ( +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/structure/cable/white, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) +/turf/open/floor/plating, +/area/engine/storage_shared) "hFo" = ( /obj/structure/lattice, /obj/structure/disposalpipe/segment{ @@ -99667,6 +99644,22 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"hLm" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_y = 26 + }, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "hNZ" = ( /obj/structure/chair/office/light{ dir = 8 @@ -99675,45 +99668,28 @@ dir = 9 }, /area/science/circuit) -"hYo" = ( -/obj/item/twohanded/required/kirbyplants/random, -/obj/effect/turf_decal/delivery, -/obj/machinery/light_switch{ - pixel_x = 22 - }, -/turf/open/floor/plasteel, -/area/engine/storage_shared) "iaF" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/research) +"igE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "ixL" = ( /obj/structure/sign/warning/vacuum{ pixel_x = 32 }, /turf/open/floor/engine/vacuum, /area/science/mixing) -"izp" = ( -/obj/structure/table/reinforced, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/rglass{ - amount = 30; - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/stack/cable_coil/white, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/storage_shared) -"iAI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) "iQh" = ( /obj/structure/bodycontainer/morgue{ dir = 1 @@ -99734,14 +99710,6 @@ dir = 5 }, /area/science/mixing) -"iTS" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/structure/cable/white, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/storage_shared) "jdO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -99874,9 +99842,6 @@ dir = 8 }, /area/maintenance/port) -"kEZ" = ( -/turf/closed/wall/r_wall, -/area/engine/storage_shared) "kLu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -99891,30 +99856,43 @@ dir = 4 }, /area/science/mixing) -"kNP" = ( +"lak" = ( +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/science/circuit) +"lec" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"lak" = ( -/turf/open/floor/plasteel/white/side{ - dir = 10 +"leh" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/white{ + icon_state = "4-8" }, -/area/science/circuit) -"ldF" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 +/obj/machinery/door/airlock/highsecurity{ + name = "Gravity Generator Foyer"; + req_access_txt = "10" }, -/turf/open/floor/plasteel/neutral/side{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, +/turf/open/floor/plasteel, /area/engine/storage_shared) "loI" = ( /obj/machinery/autolathe, @@ -99966,13 +99944,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/side, /area/maintenance/port) -"lII" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/storage_shared) "lKu" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -99988,19 +99959,6 @@ dir = 6 }, /area/science/circuit) -"lPF" = ( -/obj/machinery/door/poddoor/preopen{ - id = "transitlock"; - name = "Transit Tube Lockdown Door" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel/caution, -/area/engine/storage_shared) "lTo" = ( /obj/docking_port/stationary{ area_type = /area/construction/mining/aux_base; @@ -100015,6 +99973,14 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) +"lXl" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/structure/cable/white, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/storage_shared) "lXF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -100053,6 +100019,22 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/circuit/green, /area/science/research/abandoned) +"mAW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/engine/gravity_generator) +"mCL" = ( +/turf/closed/wall, +/area/engine/storage_shared) +"mHL" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -26 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "mQE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -100075,41 +100057,43 @@ }, /turf/open/floor/engine, /area/science/mixing) -"nMb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel, +"nyB" = ( +/obj/structure/lattice, +/turf/closed/wall/r_wall, /area/engine/gravity_generator) -"nQh" = ( -/obj/machinery/power/apc/highcap/five_k{ - dir = 1; - name = "Gravity Generator APC"; - areastring = "/area/engine/gravity_generator"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, +"nBr" = ( +/turf/closed/wall/r_wall, +/area/engine/storage_shared) +"nDk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 + dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) +/turf/closed/wall, +/area/engine/storage_shared) +"nOg" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "nSh" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"ojB" = ( -/obj/machinery/newscaster{ - pixel_y = -32 +"nSN" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/storage_shared) +"ovg" = ( /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/gravity_generator) @@ -100129,18 +100113,6 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/science/mixing) -"oLB" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/storage_shared) "oMw" = ( /obj/docking_port/stationary/public_mining_dock{ dir = 4 @@ -100158,6 +100130,15 @@ dir = 5 }, /area/science/mixing) +"oRB" = ( +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "oSD" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -100224,13 +100205,15 @@ }, /turf/open/floor/plating, /area/science/research/abandoned) -"pDt" = ( -/obj/structure/cable{ - icon_state = "1-4" +"pCE" = ( +/obj/structure/cable/white{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/neutral, -/area/engine/gravity_generator) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "pQm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -100238,15 +100221,15 @@ }, /turf/open/floor/plasteel/neutral, /area/science/research/abandoned) -"pWY" = ( -/obj/structure/cable/white{ - icon_state = "0-4" +"qcx" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/storage_shared) "qhc" = ( /obj/structure/table/reinforced, @@ -100257,30 +100240,6 @@ dir = 9 }, /area/science/circuit) -"qhk" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/highsecurity{ - name = "Gravity Generator Foyer"; - req_access_txt = "10" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/storage_shared) "qnx" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input, /turf/open/floor/engine/vacuum, @@ -100290,32 +100249,23 @@ dir = 5 }, /area/science/circuit) -"qtz" = ( -/obj/structure/cable/white{ - icon_state = "0-4" +"qNG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" }, /obj/structure/cable/white{ - icon_state = "0-8" + icon_state = "1-2" }, -/obj/structure/cable/white, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plating, -/area/engine/storage_shared) -"qzA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/engine/storage_shared) -"qCb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/neutral, -/area/engine/storage_shared) -"qJw" = ( +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"qWg" = ( /obj/structure/table/reinforced, /obj/machinery/light/small{ dir = 1 @@ -100334,6 +100284,22 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/storage_shared) +"qYo" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"qYx" = ( +/obj/structure/table/reinforced, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/rglass{ + amount = 30; + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/stack/cable_coil/white, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "rhO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -100342,17 +100308,29 @@ dir = 9 }, /area/science/circuit) -"rya" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/engine/storage_shared) "rCv" = ( /turf/open/floor/plasteel/white/side{ dir = 6 }, /area/science/circuit) +"rEm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"rOf" = ( +/obj/item/twohanded/required/kirbyplants/random, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch{ + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "rUD" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -100376,22 +100354,31 @@ /obj/effect/decal/remains/xeno, /turf/open/floor/engine/vacuum, /area/science/mixing) -"sog" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/neutral, -/area/engine/gravity_generator) "svv" = ( /obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) -"tgZ" = ( -/obj/machinery/ore_silo, -/turf/open/floor/plasteel/vault{ +"tbR" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/engine/storage_shared) +"tkj" = ( +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/area/security/nuke_storage) +/turf/open/floor/plating, +/area/engine/storage_shared) "tmi" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -100407,13 +100394,13 @@ "tCh" = ( /turf/closed/wall, /area/science/misc_lab) -"tIX" = ( -/turf/closed/wall, -/area/engine/storage_shared) -"tKd" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) +"tHE" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/neutral, +/area/engine/gravity_generator) "tMk" = ( /turf/open/floor/plasteel/white/side{ dir = 10 @@ -100447,13 +100434,6 @@ }, /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) -"uwJ" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) "uNP" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/effect/turf_decal/stripes/line{ @@ -100463,42 +100443,6 @@ dir = 5 }, /area/science/mixing) -"uOY" = ( -/obj/structure/table/reinforced, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/item/stack/sheet/plasteel/fifty, -/obj/item/crowbar/power, -/obj/structure/sign/nanotrasen{ - pixel_x = 32 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/storage_shared) -"uVP" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "Gravity Generator Chamber"; - req_access_txt = "19; 61" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "1-4" - }, -/obj/structure/cable/white{ - icon_state = "2-4" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) "uYS" = ( /obj/machinery/door/airlock/atmos/glass/critical{ heat_proof = 1; @@ -100519,6 +100463,19 @@ dir = 5 }, /area/medical/morgue) +"vwZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/stack/sheet/plasteel/fifty, +/obj/item/crowbar/power, +/obj/structure/sign/nanotrasen{ + pixel_x = 32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "vAb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -100527,21 +100484,32 @@ dir = 4 }, /area/science/mixing) +"vDU" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/engine/storage_shared) +"vGz" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 1; + name = "Gravity Generator APC"; + areastring = "/area/engine/gravity_generator"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) "wei" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/circuit) -"wxt" = ( -/obj/structure/lattice, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"wzI" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -26 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/storage_shared) "wAA" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall/r_wall, @@ -100556,6 +100524,16 @@ }, /turf/open/floor/plasteel/whitepurple/corner, /area/science/misc_lab) +"wEB" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/electrical, +/obj/item/wrench/power, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/storage_shared) "xaf" = ( /obj/machinery/door/airlock/public/glass{ name = "Holodeck Access" @@ -100617,15 +100595,6 @@ dir = 5 }, /area/science/mixing) -"xHw" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/storage_shared) "xJl" = ( /obj/structure/table, /obj/item/folder/white, @@ -100648,7 +100617,7 @@ /turf/open/floor/plasteel, /area/science/research) "xXn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/engine/vacuum, /area/science/mixing) "xZM" = ( @@ -118013,7 +117982,7 @@ bAH bEn bAH bAH -wxt +nyB ajr aad aad @@ -118784,7 +118753,7 @@ bCy bCx bCw bAH -wxt +nyB aad ajr aaa @@ -119295,7 +119264,7 @@ aad bxC bAJ bCA -uVP +bEp bCA bHO bxC @@ -119551,9 +119520,9 @@ aad aad bxC bAK -kNP +ovg bEq -hEo +rEm bHP bxC aad @@ -119807,11 +119776,11 @@ aad aad aad bxC -nQh -pDt +vGz +tHE bEr -sog -gEC +mAW +igE bxC aad aad @@ -120064,11 +120033,11 @@ aaa aad aad bxC -fJG -fyy +hLm +qNG bEs -iAI -ojB +lec +oRB bxC aad ajr @@ -120575,12 +120544,12 @@ aad aaa aad aaa -tKd +nOg bxC bxC bxC bCF -bEp +bEu bGc bxC bxC @@ -120837,9 +120806,9 @@ bxC bzd bAO bCB -uwJ +eMS bFY -nMb +fSj bxC aad bNF @@ -121603,14 +121572,14 @@ bpO brT bpO aRF -evJ -kEZ -tIX -tIX -rya -qhk -tIX -kEZ +qYo +nBr +mCL +mCL +nDk +leh +mCL +nBr bLF bLH bNK @@ -121860,14 +121829,14 @@ bpO bpO btK aRF -evJ -kEZ -qJw -wzI -pWY -bEu -acD -lPF +qYo +nBr +qWg +mHL +tkj +nSN +qcx +fjK bLF bLI bNL @@ -122117,10 +122086,10 @@ bpP brU btL aRF -evJ -kEZ -ggE -gjc +qYo +nBr +wEB +vDU bCG bEv bGd @@ -122374,12 +122343,12 @@ aZQ aUY aWw aRF -evJ -kEZ -lII -iTS -qtz -xHw +qYo +nBr +fbA +lXl +huX +pCE bGe bHU bJP @@ -122631,12 +122600,12 @@ aZR aRE aWx aRE -evJ -kEZ -izp -gjc +qYo +nBr +qYx +vDU bCI -oLB +hcP bGf bHV bHV @@ -122889,12 +122858,12 @@ aMB aWy aMG aMG -kEZ -uOY -gjc +nBr +vwZ +vDU bCJ bEy -hYo +rOf bHV bJQ bLL @@ -123121,7 +123090,7 @@ azN aFr aGT aIt -aJM +aJK aLh aMC aNZ @@ -123146,12 +123115,12 @@ brV btM buY bwr -kEZ -kEZ -kEZ +nBr +nBr +nBr bxG bEz -kEZ +nBr bHV bJR bLM @@ -123377,8 +123346,8 @@ aDl avZ aFs aGU -aIu -aJN +aIt +aJK aLi aMD aOa @@ -123403,9 +123372,9 @@ brW btN buZ bws -kEZ +nBr bzi -ldF +tbR bCL bEA bGh @@ -123919,7 +123888,7 @@ bva bwu bxG bzk -qCb +gPb bCN bEC bGj @@ -124432,11 +124401,11 @@ btR bvc bww bxI -tIX -tIX -qzA +mCL +mCL +brd bEE -tIX +mCL bHV bJW bLQ @@ -146535,7 +146504,7 @@ bvT bxi byz bxi -tgZ +hsX but aad bHq diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 3ebf4be712..1945e7113c 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2,10 +2,29 @@ "aaa" = ( /turf/open/space/basic, /area/space) +"aab" = ( +/obj/machinery/atmospherics/components/trinary/mixer{ + dir = 1; + name = "plasma mixer" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) "aac" = ( /obj/effect/landmark/carpspawn, /turf/open/space, /area/space) +"aad" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/starboard) +"aae" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard) "aaf" = ( /obj/structure/lattice, /turf/open/space, @@ -252,6 +271,15 @@ }, /turf/open/floor/plating, /area/security/prison) +"aaM" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "aaN" = ( /obj/structure/cable{ icon_state = "0-2" @@ -294,6 +322,32 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"aaU" = ( +/obj/machinery/light_switch, +/turf/closed/wall, +/area/maintenance/disposal/incinerator) +"aaV" = ( +/obj/machinery/atmospherics/components/unary/tank/toxins{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) +"aaW" = ( +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) +"aaX" = ( +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink"; + pixel_y = 28 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "aaY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -328,6 +382,21 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/prison) +"abd" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "abe" = ( /turf/closed/wall, /area/security/prison) @@ -458,6 +527,14 @@ dir = 8 }, /area/security/prison) +"abt" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/storage/box/lights/mixed, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) "abu" = ( /obj/docking_port/stationary{ dir = 1; @@ -738,6 +815,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/prison) +"acd" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/portable_atmospherics/canister, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "ace" = ( /obj/machinery/vending/sustenance{ desc = "A vending machine normally reserved for work camps."; @@ -1349,6 +1438,21 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) +"adk" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) +"adl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "adm" = ( /obj/structure/table, /obj/item/flashlight/lamp, @@ -1529,6 +1633,20 @@ }, /turf/open/space, /area/space/nearstation) +"adH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"adI" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) "adJ" = ( /obj/item/radio/intercom{ freerange = 0; @@ -1952,6 +2070,12 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) +"aeD" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "aeE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2677,6 +2801,13 @@ dir = 1 }, /area/security/prison) +"afQ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "afR" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -3633,6 +3764,10 @@ icon_state = "platingdmg1" }, /area/maintenance/fore) +"ahT" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "ahU" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/table, @@ -4117,6 +4252,11 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"aiW" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "aiX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -4218,6 +4358,12 @@ /obj/item/restraints/handcuffs/cable/pink, /turf/open/floor/plating, /area/maintenance/port/fore) +"ajk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/starboard) "ajl" = ( /obj/item/soap/deluxe, /obj/item/storage/secure/safe{ @@ -4306,6 +4452,13 @@ dir = 4 }, /area/security/warden) +"aju" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "ajv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -5874,6 +6027,16 @@ /obj/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"amB" = ( +/obj/structure/closet, +/obj/item/flashlight, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) "amC" = ( /obj/structure/chair{ dir = 4 @@ -6029,6 +6192,16 @@ icon_state = "platingdmg2" }, /area/maintenance/port) +"amV" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/extinguisher, +/obj/machinery/light/small, +/obj/structure/extinguisher_cabinet{ + pixel_y = -31 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "amW" = ( /obj/structure/table/reinforced, /obj/item/folder, @@ -6271,6 +6444,14 @@ /obj/item/paper, /turf/open/floor/plasteel, /area/security/main) +"anz" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 2; + name = "output gas to space" + }, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "anA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, @@ -6700,6 +6881,16 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/security/warden) +"aov" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -31 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "aow" = ( /obj/machinery/door/firedoor, /obj/structure/cable/yellow{ @@ -7374,6 +7565,10 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"apP" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped, +/turf/open/floor/plasteel/floorgrime, +/area/maintenance/disposal/incinerator) "apQ" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 @@ -7426,6 +7621,10 @@ /obj/item/assembly/flash/handheld, /turf/open/floor/plasteel, /area/security/main) +"apX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/starboard/aft) "apY" = ( /obj/structure/table, /obj/item/folder/red, @@ -7469,6 +7668,29 @@ /obj/item/clothing/head/soft/red, /turf/open/floor/plasteel/vault, /area/crew_quarters/fitness/recreation) +"aqe" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 6; + pixel_y = -1 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/syringe, +/obj/item/reagent_containers/syringe, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "aqf" = ( /obj/structure/closet/lasertag/blue, /turf/open/floor/plasteel/vault, @@ -7924,6 +8146,21 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"arh" = ( +/obj/item/reagent_containers/glass/bottle/toxin{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/reagentgrinder{ + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "ari" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -8112,6 +8349,10 @@ dir = 4 }, /area/crew_quarters/dorms) +"arF" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/starboard/aft) "arG" = ( /obj/structure/closet, /obj/item/storage/box/lights/mixed, @@ -9082,6 +9323,18 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"atw" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 2; + name = "Incinerator Output Pump" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/space, +/area/maintenance/disposal/incinerator) "atx" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -9152,6 +9405,12 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"atC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) "atD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -9174,6 +9433,12 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"atF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) "atG" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9217,6 +9482,16 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"atJ" = ( +/obj/machinery/sparker/toxmix{ + dir = 2; + pixel_x = 25 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/science/mixing) "atK" = ( /obj/machinery/computer/gulag_teleporter_computer{ dir = 1 @@ -9926,11 +10201,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"avr" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/starboard) "avs" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -43532,12 +43802,6 @@ dir = 1 }, /area/engine/atmos) -"bPv" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "bPw" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ @@ -47626,19 +47890,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"bYs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bYt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "bYu" = ( /obj/item/cigbutt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -48130,18 +48381,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) -"bZz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bZA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/starboard) "bZB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -48860,20 +49099,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"caW" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"caX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light_switch, -/turf/closed/wall, -/area/maintenance/disposal/incinerator) "caY" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -49708,50 +49933,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"ccE" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins{ - dir = 4 - }, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"ccF" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "plasma tank pump" - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"ccG" = ( -/obj/structure/sink/kitchen{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "old sink"; - pixel_y = 28 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"ccH" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) "ccI" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -50322,51 +50503,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/starboard) -"cdY" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/item/storage/box/lights/mixed, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/maintenance/starboard) -"cdZ" = ( -/obj/structure/sign/warning/nosmoking{ - pixel_x = -28 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4; - name = "input gas connector port" - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"cea" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "input port pump" - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"ceb" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"cec" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) "ced" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50981,62 +51117,12 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"cfm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"cfn" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4; - name = "input gas connector port" - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"cfo" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"cfp" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) "cfq" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"cfr" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "input port pump" - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"cfs" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) "cft" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -51518,12 +51604,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"cgw" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) "cgx" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52075,15 +52155,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"chF" = ( -/obj/structure/closet, -/obj/item/flashlight, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "chG" = ( /obj/structure/reagent_dispensers/fueltank, /obj/item/storage/toolbox/emergency, @@ -52093,42 +52164,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"chH" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/item/extinguisher, -/obj/machinery/light/small, -/obj/structure/extinguisher_cabinet{ - pixel_y = -31 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"chI" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/binary/valve{ - dir = 2; - name = "output gas to space" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) -"chJ" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -31 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) "chM" = ( /obj/structure/window/reinforced{ dir = 1; @@ -53376,49 +53411,11 @@ "ckz" = ( /obj/structure/table, /obj/item/storage/toolbox/emergency, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"ckA" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = 6; - pixel_y = -1 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/syringe, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"ckB" = ( -/obj/item/reagent_containers/glass/bottle/toxin{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/structure/table, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/reagentgrinder{ - pixel_y = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"ckC" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 2; - name = "Incinerator Output Pump" - }, -/obj/structure/disposalpipe/segment, -/turf/open/space, -/area/maintenance/disposal/incinerator) "ckD" = ( /obj/machinery/light/small{ dir = 8 @@ -54540,12 +54537,6 @@ /obj/machinery/chem_heater, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cnd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{ - dir = 1 - }, -/turf/open/floor/engine/vacuum, -/area/maintenance/disposal/incinerator) "cne" = ( /obj/machinery/igniter/incinerator_atmos, /obj/structure/cable{ @@ -63158,16 +63149,6 @@ }, /turf/open/floor/engine/vacuum, /area/science/mixing) -"cEt" = ( -/obj/machinery/sparker/toxmix{ - dir = 2; - pixel_x = 25 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/science/mixing) "cEu" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -70629,6 +70610,12 @@ dir = 8 }, /area/engine/atmos) +"cVU" = ( +/turf/open/floor/plasteel/purple/corner{ + icon_state = "purplecorner"; + dir = 1 + }, +/area/science/circuit) "cWA" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, @@ -75683,6 +75670,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"dQV" = ( +/obj/structure/grille/broken, +/turf/open/space/basic, +/area/space/nearstation) "dYu" = ( /obj/machinery/door/airlock/external{ name = "Auxiliary Airlock" @@ -75777,6 +75768,11 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/engine/engineering) +"fwb" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, +/area/space/nearstation) "fDD" = ( /obj/machinery/light_switch{ pixel_y = -25 @@ -75812,6 +75808,11 @@ }, /turf/open/floor/plasteel, /area/engine/break_room) +"gkj" = ( +/turf/open/floor/plasteel/purple/side{ + dir = 1 + }, +/area/science/circuit) "gnZ" = ( /obj/item/radio/intercom{ pixel_y = -30 @@ -75887,6 +75888,20 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"gNx" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/machinery/computer/security/telescreen/circuitry{ + pixel_y = 30 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/science/circuit) "gXY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -75898,11 +75913,6 @@ dir = 8 }, /area/engine/storage_shared) -"hdU" = ( -/turf/open/floor/plasteel/purple/side{ - dir = 1 - }, -/area/science/circuit) "hfn" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -75943,10 +75953,6 @@ }, /turf/open/floor/plasteel, /area/engine/break_room) -"imj" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/whitepurple/side, -/area/science/circuit) "ioI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -76005,6 +76011,10 @@ "jwW" = ( /turf/closed/wall/mineral/plastitanium, /area/crew_quarters/fitness/recreation) +"jxg" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/whitepurple/side, +/area/science/circuit) "jyv" = ( /obj/structure/table/reinforced, /obj/structure/sign/poster/random{ @@ -76053,32 +76063,6 @@ dir = 8 }, /area/science/circuit) -"jNV" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/machinery/computer/security/telescreen/circuitry{ - pixel_y = 30 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/purple/corner{ - dir = 8 - }, -/area/science/circuit) -"jOj" = ( -/obj/item/integrated_electronics/analyzer, -/obj/item/integrated_electronics/debugger, -/obj/item/integrated_electronics/wirer, -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side{ - dir = 8 - }, -/area/science/circuit) "kfu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, @@ -76134,11 +76118,6 @@ /obj/machinery/vending/coffee, /turf/open/floor/plasteel, /area/engine/break_room) -"kCz" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) "kDM" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -76219,10 +76198,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"lQw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/white, -/area/science/circuit) "lWY" = ( /obj/machinery/door/airlock/hatch{ name = "Telecomms Server Room" @@ -76243,11 +76218,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"mps" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) "msD" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -76279,16 +76249,6 @@ }, /turf/open/floor/plasteel/caution/corner, /area/engine/storage_shared) -"mTj" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/purple/side{ - dir = 1 - }, -/area/science/circuit) "mWg" = ( /obj/structure/girder, /obj/structure/grille, @@ -76340,6 +76300,9 @@ }, /turf/open/floor/plasteel, /area/construction/storage/wing) +"nSo" = ( +/turf/open/floor/plasteel/whitepurple/side, +/area/science/circuit) "nXA" = ( /obj/structure/rack{ icon = 'icons/obj/stationobjs.dmi'; @@ -76349,6 +76312,11 @@ /obj/item/storage/fancy/candle_box, /turf/open/floor/engine/cult, /area/library) +"nYJ" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/turf/open/space/basic, +/area/space/nearstation) "obb" = ( /obj/structure/target_stake, /obj/effect/turf_decal/stripes/line{ @@ -76356,12 +76324,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"obJ" = ( -/turf/open/floor/plasteel/purple/corner{ - icon_state = "purplecorner"; - dir = 1 - }, -/area/science/circuit) "obX" = ( /obj/docking_port/stationary{ area_type = /area/construction/mining/aux_base; @@ -76392,6 +76354,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/white, /area/science/circuit) +"oje" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/purple/side{ + dir = 1 + }, +/area/science/circuit) "oub" = ( /obj/structure/sign/poster/official/random, /turf/closed/wall, @@ -76456,12 +76428,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/port/aft) -"pmc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/maintenance/disposal/incinerator) "pvA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -76494,14 +76460,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"pGw" = ( -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/purple/side{ - dir = 8 - }, -/area/science/circuit) "pMX" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -76540,33 +76498,24 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"qcZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/stairs/right, +/area/science/circuit) "qdT" = ( /obj/item/twohanded/required/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/storage_shared) -"qgv" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/plasteel/purple/side{ - dir = 1 - }, -/area/science/circuit) "qhe" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plating, /area/maintenance/port) -"qle" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/whitepurple/side, -/area/science/circuit) "qqg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -76594,6 +76543,27 @@ /obj/item/storage/photo_album, /turf/open/floor/engine/cult, /area/library) +"qLL" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/purple/side{ + dir = 1 + }, +/area/science/circuit) +"qQn" = ( +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/science/circuit) "qRM" = ( /obj/machinery/camera{ c_tag = "Research Division Circuitry Lab"; @@ -76695,6 +76665,23 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) +"sjY" = ( +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/science/circuit) +"szA" = ( +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/science/circuit) "sFv" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -76736,13 +76723,9 @@ "sJW" = ( /turf/closed/wall/mineral/plastitanium, /area/engine/break_room) -"tih" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +"thn" = ( /obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/stairs/right, +/turf/open/floor/plasteel/whitepurple/side, /area/science/circuit) "tsx" = ( /obj/structure/cable/yellow{ @@ -76770,11 +76753,6 @@ }, /turf/open/floor/plasteel/dark, /area/medical/morgue) -"tSU" = ( -/turf/open/floor/plasteel/whitepurple/side{ - dir = 8 - }, -/area/science/circuit) "tVY" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -76863,10 +76841,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"uWb" = ( -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) "uYk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -76898,13 +76872,10 @@ dir = 8 }, /area/crew_quarters/fitness/recreation) -"vyx" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/maintenance/disposal/incinerator) +"vxq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/science/circuit) "vzO" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/effect/turf_decal/delivery, @@ -76914,13 +76885,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space) -"vXM" = ( -/turf/open/floor/plasteel/whitepurple/side, -/area/science/circuit) -"wgw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/maintenance/disposal/incinerator) "wiZ" = ( /obj/machinery/door/airlock/external{ name = "Security External Airlock"; @@ -109390,7 +109354,7 @@ dDA cBu cCv cyK -cEt +atJ tXK cGj cHe @@ -113750,9 +113714,9 @@ cuZ fFM cud kxk -tSU -tSU -tSU +szA +szA +szA dGH mzh krD @@ -114006,11 +113970,11 @@ cqY cuZ jLY lzk -tih +qcZ cwd kfu cxP -vXM +nSo gnZ krD czI @@ -114267,7 +114231,7 @@ krD kOt llb oUA -vXM +nSo qRM krD aaf @@ -114524,7 +114488,7 @@ krD oLW gGT wPk -vXM +nSo uYk noG aaf @@ -114781,7 +114745,7 @@ krD ocT xkG wPk -vXM +nSo ykE noG aaa @@ -115021,7 +114985,7 @@ xVl dLK alq cdX -cfm +adH apc chE dvY @@ -115036,10 +115000,10 @@ dvY mjJ krD eqq -lQw +vxq uTS -vXM -qgv +nSo +qLL krD aaa aaa @@ -115275,13 +115239,13 @@ bVB bVC nAG pCV -caW -alq -cdY -bPl -avr -chF -dvY +aaM +bmR +abt +adI +ajk +amB +apX ckz ciL dwY @@ -115295,8 +115259,8 @@ krD lsv llb eEe -qle -mTj +thn +oje krD aaa aaa @@ -115531,7 +115495,7 @@ uHc uJU uJU pvA -bZA +aae bZE bZE bZE @@ -115539,7 +115503,7 @@ bZE bZE bZE bZE -ckA +aqe dwQ cnb cou @@ -115552,8 +115516,8 @@ krD jyv ohj cxO -imj -hdU +jxg +gkj noG aaa aaa @@ -115788,15 +115752,15 @@ alq apb apb bXa -bZz +apc bZE -ccE -cdZ -cfn +aaV +acd +aeD cgt chG bZE -ckB +arh cmb cnc cov @@ -115806,10 +115770,10 @@ csd dvY lMJ krD -jNV -jOj -pGw -obJ +gNx +sjY +qQn +cVU noG noG aaa @@ -116045,15 +116009,15 @@ alq bVC bWY bYr -bZz +apc bZE -ccF -cea -cea +aaW +aaW +aaW cgu -chH -bZE -dvY +amV +bZC +arF dvY dvY dvY @@ -116301,16 +116265,16 @@ bTf alq diu bWZ -bYs -bZB +aad +apc bZE -ccG -ceb -cfo +aaX +adk +afQ cgv -chI +anz ciY -ckC +atw cmc cmc cmc @@ -116558,16 +116522,16 @@ bTg alq bVE bXa -bYt -bZC -caX -ccH -cec -cfp -vyx -chJ -wgw -pmc +apc +bZE +aaU +abd +adl +ahT +cfq +aov +cgz +atC cgz cgz cgz @@ -116820,13 +116784,13 @@ bZD caY ccI ced -cfq -cgw -cfs +aaW +aju +apP ciZ ckD ciZ -cnd +atF cgz cgz cre @@ -116839,11 +116803,11 @@ aaa aaa aaa aaa -uWb -kCz -mps -kCz -kCz +dQV +fwb +nYJ +fwb +fwb aaf aaa aqB @@ -117077,7 +117041,7 @@ bZE caZ ccJ cee -cfr +cgx cgx cgx cja @@ -117334,7 +117298,7 @@ bZE cba ccK cef -cfs +aiW czH cLC cjb @@ -120920,7 +120884,7 @@ bIX bKE bKE dhh -bPv +aab bKE bKE bKE diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 9aa1f66429..0ef53bdc68 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -2313,6 +2313,12 @@ }, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) +"hz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) "hH" = ( /obj/structure/stone_tile/block{ dir = 1 @@ -2396,20 +2402,6 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"iU" = ( -/obj/machinery/button/door{ - id = "miningbathroom"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 0; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) "iX" = ( /obj/structure/stone_tile, /obj/structure/stone_tile{ @@ -2505,13 +2497,6 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"jy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) "jF" = ( /obj/structure/stone_tile/surrounding_tile, /obj/structure/stone_tile/surrounding_tile{ @@ -2658,12 +2643,6 @@ /obj/structure/stone_tile/center, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"kK" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/mine/living_quarters) "kM" = ( /obj/structure/stone_tile/block/cracked{ dir = 1 @@ -3268,41 +3247,61 @@ }, /turf/open/indestructible/boss, /area/lavaland/surface/outdoors) -"nh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +"ss" = ( +/obj/machinery/button/door{ + id = "miningbathroom"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 0; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/mine/living_quarters) +"tI" = ( +/obj/machinery/light/small{ dir = 4 }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) -"ty" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply, -/turf/open/floor/plasteel, +"vb" = ( +/obj/machinery/door/window/southleft, +/obj/machinery/shower{ + pixel_y = 22 + }, +/turf/open/floor/plasteel/freezer, /area/mine/living_quarters) -"Cj" = ( +"Es" = ( /obj/machinery/door/window/southright, /obj/machinery/shower{ pixel_y = 22 }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) -"DY" = ( -/obj/machinery/door/airlock{ - id_tag = "miningbathroom"; - name = "Restroom" +"Fe" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/mirror{ + pixel_x = -28 }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) -"Os" = ( -/obj/machinery/door/window/southleft, -/obj/machinery/shower{ - pixel_y = 22 +"HO" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"IK" = ( +/obj/structure/toilet{ + dir = 8 }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) -"OE" = ( +"Nj" = ( /obj/machinery/door/airlock{ name = "Restroom" }, @@ -3311,14 +3310,11 @@ }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) -"TX" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12 - }, -/obj/structure/mirror{ - pixel_x = -28 +"Tn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, +/obj/machinery/light/small, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) "Uq" = ( @@ -3424,9 +3420,13 @@ /obj/effect/baseturf_helper/lava_land/surface, /turf/closed/wall, /area/mine/living_quarters) -"ZY" = ( -/obj/structure/toilet{ - dir = 8 +"Zf" = ( +/obj/machinery/door/airlock{ + id_tag = "miningbathroom"; + name = "Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) @@ -13435,7 +13435,7 @@ eN fi fN eN -ty +HO fp cR ab @@ -13692,7 +13692,7 @@ dQ cM cM cM -OE +Nj cM cM ai @@ -13948,8 +13948,8 @@ fk fk fI cM -Os -nh +vb +hz cM ai ad @@ -14205,8 +14205,8 @@ fk fC fk cM -Cj -jy +Es +Tn cM ab ai @@ -14463,7 +14463,7 @@ fD fJ cM cM -DY +Zf cM aj aj @@ -14719,8 +14719,8 @@ fk fE fK cM -TX -iU +Fe +ss cM aj aj @@ -14976,8 +14976,8 @@ fk fF fk cM -ZY -kK +IK +tI cM aj aj diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 63213acdd6..2d94c26407 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -34955,7 +34955,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bMn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, /turf/open/floor/engine/vacuum, @@ -37231,12 +37231,13 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bSg" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 8 - }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/components/trinary/mixer{ + name = "plasma mixer"; + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bSh" = ( @@ -40088,6 +40089,7 @@ }, /obj/machinery/airalarm{ dir = 2; + locked = 0; pixel_y = 22 }, /obj/structure/cable{ @@ -40330,7 +40332,9 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -27 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, /turf/open/floor/plasteel/darkyellow/side{ icon_state = "darkyellow"; dir = 8 @@ -40388,7 +40392,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ dir = 8 }, -/turf/open/floor/engine, +/turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "bZV" = ( /obj/structure/sign/warning/fire, @@ -40610,9 +40614,6 @@ network = list("turbine"); pixel_x = -29 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, /turf/open/floor/plasteel/darkyellow/side{ icon_state = "darkyellow"; dir = 8 @@ -40676,7 +40677,7 @@ pixel_x = 32; pixel_y = -32 }, -/turf/open/floor/engine, +/turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "caP" = ( /obj/structure/cable/yellow{ @@ -40695,7 +40696,7 @@ dir = 2; network = list("turbine") }, -/turf/open/floor/engine, +/turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "caQ" = ( /obj/structure/cable/yellow{ @@ -40705,7 +40706,7 @@ dir = 4; luminosity = 2 }, -/turf/open/floor/engine, +/turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "caR" = ( /obj/machinery/door/poddoor/incinerator_atmos_main, @@ -40916,11 +40917,10 @@ }, /area/maintenance/disposal/incinerator) "cbB" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Incinerator to Output" - }, /obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "cbC" = ( @@ -40928,19 +40928,13 @@ pixel_x = 26; pixel_y = -6 }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 1 - }, -/turf/open/floor/plasteel/darkyellow/side{ +/obj/machinery/atmospherics/components/trinary/filter/flipped{ + icon_state = "filter_off_f"; dir = 4 }, -/area/maintenance/disposal/incinerator) -"cbD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ +/turf/open/floor/plasteel/darkyellow/side{ dir = 4 }, -/turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "cbE" = ( /obj/machinery/atmospherics/components/binary/pump{ @@ -40951,10 +40945,10 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cbF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/turf/open/floor/engine, +/turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cbG" = ( /obj/structure/window/reinforced/fulltile, @@ -41182,10 +41176,7 @@ /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "ccr" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 2; - name = "Incinerator Output Pump" - }, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plasteel/darkyellow/side{ dir = 4 }, @@ -41351,6 +41342,7 @@ /area/maintenance/disposal/incinerator) "cdi" = ( /obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/machinery/meter, /turf/open/floor/plasteel/darkyellow/side{ icon_state = "darkyellow"; dir = 6 @@ -48104,14 +48096,6 @@ }, /turf/open/floor/plasteel, /area/science/explab) -"flk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/directions/evac{ - dir = 8; - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "fmh" = ( /turf/open/floor/wood, /area/maintenance/department/engine) @@ -48486,6 +48470,21 @@ }, /turf/open/floor/plasteel/yellow/side, /area/engine/engineering) +"gpu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sign/directions/medical{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/directions/science{ + pixel_x = 32 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = 8 + }, +/turf/open/floor/plasteel/neutral/corner, +/area/hallway/primary/central) "gpC" = ( /obj/structure/chair, /obj/machinery/light{ @@ -49329,20 +49328,6 @@ }, /turf/open/floor/plating, /area/security/execution/transfer) -"iQH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/escape{ - dir = 1 - }, -/area/hallway/secondary/exit/departure_lounge) "iSz" = ( /obj/structure/cable{ icon_state = "2-8" @@ -49648,6 +49633,20 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) +"jRZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit/departure_lounge) "jSA" = ( /obj/structure/sign/departments/science, /turf/closed/wall, @@ -49783,28 +49782,6 @@ dir = 4 }, /area/hallway/secondary/exit/departure_lounge) -"klP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/sign/directions/science{ - dir = 4; - pixel_x = 32; - pixel_y = 40 - }, -/obj/structure/sign/directions/engineering{ - dir = 4; - pixel_x = 32; - pixel_y = 32 - }, -/obj/structure/sign/directions/supply{ - dir = 4; - pixel_x = 32; - pixel_y = 24 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "klV" = ( /obj/item/clothing/under/rank/clown/sexy, /turf/open/floor/plasteel/dark, @@ -49825,15 +49802,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"knx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/directions/engineering{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/hallway/primary/aft) "kpK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -50182,6 +50150,15 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/library/lounge) +"lsI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sign/directions/engineering{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/green/side{ + dir = 4 + }, +/area/hallway/primary/aft) "lzJ" = ( /obj/structure/closet/crate/bin, /turf/open/floor/carpet, @@ -50276,21 +50253,6 @@ /obj/item/wrench, /turf/open/floor/plating, /area/maintenance/department/science) -"lKG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/directions/medical{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/directions/science{ - pixel_x = 32 - }, -/obj/structure/sign/directions/engineering{ - pixel_x = 32; - pixel_y = 8 - }, -/turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central) "lKL" = ( /obj/machinery/door/airlock/abandoned{ name = "Starboard Emergency Storage"; @@ -50664,6 +50626,14 @@ }, /turf/open/floor/plating, /area/science/xenobiology) +"mPh" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/directions/evac{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "mQm" = ( /obj/structure/chair/office/light{ dir = 1 @@ -50967,14 +50937,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"nMf" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/directions/evac{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "nMG" = ( /obj/structure/cable{ icon_state = "2-4" @@ -51051,6 +51013,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/lawoffice) +"nVz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/directions/evac{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "nVU" = ( /obj/item/twohanded/spear, /turf/open/floor/plating, @@ -52239,6 +52209,13 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"rlV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/directions/evac{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "rnr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -52461,6 +52438,24 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/science/mixing) +"rQa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/directions/evac{ + dir = 8; + pixel_x = -32; + pixel_y = 8 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = -32 + }, +/obj/structure/sign/directions/command{ + dir = 1; + pixel_x = -32; + pixel_y = -8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "rSH" = ( /obj/item/trash/can, /turf/open/floor/wood, @@ -53042,6 +53037,28 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/engine) +"tWc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/science{ + dir = 4; + pixel_x = 32; + pixel_y = 40 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_x = 32; + pixel_y = 32 + }, +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_x = 32; + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "tXn" = ( /obj/structure/sink{ dir = 4; @@ -53352,24 +53369,6 @@ /obj/effect/turf_decal/plaque, /turf/open/floor/plating, /area/maintenance/department/engine) -"uPN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/directions/evac{ - dir = 8; - pixel_x = -32; - pixel_y = 8 - }, -/obj/structure/sign/directions/security{ - dir = 1; - pixel_x = -32 - }, -/obj/structure/sign/directions/command{ - dir = 1; - pixel_x = -32; - pixel_y = -8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "uQR" = ( /obj/item/ammo_casing/shotgun/beanbag, /turf/open/floor/plating, @@ -54203,13 +54202,6 @@ /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/library) -"xjb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/directions/evac{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "xjc" = ( /obj/structure/cable{ icon_state = "2-8" @@ -76245,7 +76237,7 @@ oEA scp oEA oEA -iQH +jRZ dTV aWF kAa @@ -78288,11 +78280,11 @@ aDu aEs aFr aGb -nMf +mPh aHE aAL aAL -xjb +rlV aAL aMR aAL @@ -78308,11 +78300,11 @@ aGU aAL aZL aAL -uPN +rQa aAL aAL bfg -flk +nVz aAL bhJ bif @@ -78817,7 +78809,7 @@ aKI aTP aUM aVR -lKG +gpu aXL aYL aZN @@ -82682,7 +82674,7 @@ bdo ben bfo bfo -klP +tWc aAL bin bja @@ -90143,7 +90135,7 @@ bks blD bko bko -knx +lsI bqf bko bsV @@ -93521,7 +93513,7 @@ jLW bZi bZR caL -cbD +bZT bYw cdj bYw diff --git a/_maps/shuttles/ruin_syndicate_dropship.dmm b/_maps/shuttles/ruin_syndicate_dropship.dmm index df8fd53d34..15ec7ae230 100644 --- a/_maps/shuttles/ruin_syndicate_dropship.dmm +++ b/_maps/shuttles/ruin_syndicate_dropship.dmm @@ -245,18 +245,6 @@ }, /turf/open/floor/plasteel/dark, /area/shuttle/caravan/syndicate3) -"zq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/item/clothing/shoes/jackboots, -/obj/item/crowbar/red, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/caravan/syndicate3) "BQ" = ( /turf/open/floor/plasteel/darkred/side, /area/shuttle/caravan/syndicate3) @@ -523,6 +511,18 @@ "ZB" = ( /turf/closed/wall/mineral/plastitanium, /area/shuttle/caravan/syndicate3) +"ZI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/obj/item/clothing/shoes/jackboots, +/obj/item/crowbar/red, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) "ZJ" = ( /turf/open/floor/plasteel/dark, /area/shuttle/caravan/syndicate3) @@ -630,7 +630,7 @@ Tn Lq YU Dx -zq +ZI HJ Tn "} diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index 4b291820a4..e53108dc34 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -2806,10 +2806,7 @@ "iM" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned/medbay) -"vm" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/abandoned/medbay) -"Ci" = ( +"oo" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; name = "dust" @@ -2822,6 +2819,9 @@ dir = 4 }, /area/shuttle/abandoned/crew) +"vm" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned/medbay) "DZ" = ( /obj/effect/turf_decal/delivery/white, /obj/effect/decal/cleanable/dirt{ @@ -3033,7 +3033,7 @@ vm ac al aE -Ci +oo bp bF bF From 8d2ea1b605347dc12a4c23b6df3dbc436e98085c Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 30 Jul 2018 16:17:39 -0700 Subject: [PATCH 231/403] Automatic changelog generation for PR #39299 [ci skip] --- html/changelogs/AutoChangeLog-pr-39299.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39299.yml diff --git a/html/changelogs/AutoChangeLog-pr-39299.yml b/html/changelogs/AutoChangeLog-pr-39299.yml new file mode 100644 index 0000000000..886dcaeac2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39299.yml @@ -0,0 +1,10 @@ +author: "granpawalton" +delete-after: True +changes: + - tweak: "Removed old piping sections and replaced with Canister storage area in atmos incinerator" + - tweak: "scrubber and distro pipes moved in atmos incinerator to make room for added piping" + - balance: "added filter at connector on scrubbing pipe in atmos incinerator" + - balance: "replaced vent in incinerator with scrubber in **Both** incinerators" + - balance: "mixer placed on pure loop at plasma" + - bugfix: "delta and pubby atmos incinerator air alarm is no longer locked at round start" + - bugfix: "pubby atmos incinerator now starts without atmos in it" From 2552190fbff6132e458b02ec7d4a7fd866a5c4a5 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Tue, 31 Jul 2018 01:24:06 -0700 Subject: [PATCH 232/403] Fix some weird syntax --- code/__HELPERS/game.dm | 2 +- code/datums/brain_damage/imaginary_friend.dm | 2 +- code/game/machinery/newscaster.dm | 6 +++--- code/game/mecha/mecha.dm | 2 +- code/game/mecha/mecha_actions.dm | 2 +- .../objects/effects/spawners/xeno_egg_delivery.dm | 2 +- code/game/objects/items/pinpointer.dm | 6 ------ code/modules/awaymissions/capture_the_flag.dm | 2 +- code/modules/events/holiday/vday.dm | 2 +- code/modules/mob/living/carbon/alien/larva/powers.dm | 2 +- code/modules/mob/living/carbon/human/species.dm | 6 +++--- code/modules/mob/living/simple_animal/bot/honkbot.dm | 2 +- .../modules/mob/living/simple_animal/hostile/bees.dm | 12 ++++++------ code/modules/research/experimentor.dm | 2 +- 14 files changed, 22 insertions(+), 28 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 13f415823c..c590c844eb 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -350,7 +350,7 @@ /proc/flick_overlay(image/I, list/show_to, duration) for(var/client/C in show_to) C.images += I - addtimer(CALLBACK(GLOBAL_PROC, /.proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME) + addtimer(CALLBACK(GLOBAL_PROC, /proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME) /proc/flick_overlay_view(image/I, atom/target, duration) //wrapper for the above, flicks to everyone who can see the target atom var/list/viewing = list() diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm index 8af71a714b..d738645c22 100644 --- a/code/datums/brain_damage/imaginary_friend.dm +++ b/code/datums/brain_damage/imaginary_friend.dm @@ -158,7 +158,7 @@ if(owner.client) var/mutable_appearance/MA = mutable_appearance('icons/mob/talk.dmi', src, "default[say_test(message)]", FLY_LAYER) MA.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA - INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, MA, list(owner.client), 30) + INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, MA, list(owner.client), 30) for(var/mob/M in GLOB.dead_mob_list) var/link = FOLLOW_LINK(M, owner) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 887eba8047..dd844428e6 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -298,7 +298,7 @@ GLOBAL_LIST_EMPTY(allCasters) if(CHANNEL.is_admin_channel) dat+="[CHANNEL.channel_name]
    " else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " dat+="

    Refresh" dat+="
    Back" if(2) @@ -403,7 +403,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="No feed channels found active...
    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " dat+="
    Cancel" if(11) dat+="Nanotrasen D-Notice Handler
    " @@ -414,7 +414,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="No feed channels found active...
    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ""]
    " dat+="
    Back" if(12) dat+="[viewing_channel.channel_name]: \[ created by: [viewing_channel.returnAuthor(-1)] \]
    " diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 844cc876ce..1b03efc62e 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -410,7 +410,7 @@ for(var/mob/M in get_hearers_in_view(7,src)) if(M.client) speech_bubble_recipients.Add(M.client) - INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, image('icons/mob/talk.dmi', src, "machine[say_test(raw_message)]",MOB_LAYER+1), speech_bubble_recipients, 30) + INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, image('icons/mob/talk.dmi', src, "machine[say_test(raw_message)]",MOB_LAYER+1), speech_bubble_recipients, 30) //////////////////////////// ///// Action processing //// diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index eee71818c5..6d42c302e1 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -265,7 +265,7 @@ if("fire") new_damtype = "tox" chassis.occupant_message("A bone-chillingly thick plasteel needle protracts from the exosuit's palm.") - chassis.damtype = new_damtype. + chassis.damtype = new_damtype button_icon_state = "mech_damtype_[new_damtype]" playsound(src, 'sound/mecha/mechmove01.ogg', 50, 1) UpdateButtonIcon() diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm index a41f4b4c9b..9be52dab52 100644 --- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm +++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm @@ -15,5 +15,5 @@ message_admins("An alien egg has been delivered to [ADMIN_VERBOSEJMP(T)].") log_game("An alien egg has been delivered to [AREACOORD(T)]") var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen." - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time)) + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /proc/print_command_report, message), announcement_time)) return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index d6262c10a5..c4ad324a2c 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -143,9 +143,3 @@ target = null if(!target) //target can be set to null from above code, or elsewhere active = FALSE - -/obj/item/pinpointer/process() - if(!active) - return PROCESS_KILL - scan_for_target() - update_icon() diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 1c390ddc35..c1d3403c08 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -555,7 +555,7 @@ anchored = TRUE alpha = 255 -/obj/structure/trap/examine(mob/user) +/obj/structure/trap/ctf/examine(mob/user) return /obj/structure/trap/ctf/trap_effect(mob/living/L) diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index eb8c8340df..172748f023 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -160,7 +160,7 @@ "A heart-shaped candy that reads: ERP", "A heart-shaped candy that reads: LEWD", "A heart-shaped candy that reads: LUSTY", - "A heart-shaped candy that reads: SPESS LOVE" + "A heart-shaped candy that reads: SPESS LOVE", "A heart-shaped candy that reads: AYY LMAO", "A heart-shaped candy that reads: TABLE ME", "A heart-shaped candy that reads: HAND CUFFS", diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm index 906ba71c96..9d5617b3e7 100644 --- a/code/modules/mob/living/carbon/alien/larva/powers.dm +++ b/code/modules/mob/living/carbon/alien/larva/powers.dm @@ -15,7 +15,7 @@ "You are now hiding.") else user.layer = MOB_LAYER - user.visible_message("[user.] slowly peeks up from the ground...", \ + user.visible_message("[user] slowly peeks up from the ground...", \ "You stop hiding.") return 1 diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 8269edc7d6..603522ab31 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -601,15 +601,15 @@ GLOBAL_LIST_EMPTY(roundstart_races) if("tail_lizard") S = GLOB.tails_list_lizard[H.dna.features["tail_lizard"]] if("waggingtail_lizard") - S.= GLOB.animated_tails_list_lizard[H.dna.features["tail_lizard"]] + S = GLOB.animated_tails_list_lizard[H.dna.features["tail_lizard"]] if("tail_human") S = GLOB.tails_list_human[H.dna.features["tail_human"]] if("waggingtail_human") - S.= GLOB.animated_tails_list_human[H.dna.features["tail_human"]] + S = GLOB.animated_tails_list_human[H.dna.features["tail_human"]] if("spines") S = GLOB.spines_list[H.dna.features["spines"]] if("waggingspines") - S.= GLOB.animated_spines_list[H.dna.features["spines"]] + S = GLOB.animated_spines_list[H.dna.features["spines"]] if("snout") S = GLOB.snouts_list[H.dna.features["snout"]] if("frills") diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 65b78bf844..26c7f40dc5 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -123,7 +123,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, /mob/living/simple_animal/bot/honkbot/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/weldingtool) && user.a_intent != INTENT_HARM). + if(istype(W, /obj/item/weldingtool) && user.a_intent != INTENT_HARM) return if(!istype(W, /obj/item/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Check for welding tool to fix #2432. retaliate(user) diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 748a8e9c5d..c7b46e6aed 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -209,14 +209,14 @@ var/datum/reagent/R = pick(typesof(/datum/reagent/toxin)) assign_reagent(GLOB.chemical_reagents_list[initial(R.id)]) - /mob/living/simple_animal/hostile/poison/bees/queen - name = "queen bee" - desc = "She's the queen of bees, BZZ BZZ!" - icon_base = "queen" - isqueen = TRUE +/mob/living/simple_animal/hostile/poison/bees/queen + name = "queen bee" + desc = "She's the queen of bees, BZZ BZZ!" + icon_base = "queen" + isqueen = TRUE - //the Queen doesn't leave the box on her own, and she CERTAINLY doesn't pollinate by herself +//the Queen doesn't leave the box on her own, and she CERTAINLY doesn't pollinate by herself /mob/living/simple_animal/hostile/poison/bees/queen/Found(atom/A) return FALSE diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index ccd9872b46..ebd386513e 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -583,7 +583,7 @@ /obj/item/relic/proc/corgicannon(mob/user) playsound(src, "sparks", rand(25,50), 1) var/mob/living/simple_animal/pet/dog/corgi/C = new/mob/living/simple_animal/pet/dog/corgi(get_turf(user)) - C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, .throwSmoke, C)) + C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, .proc/throwSmoke, C)) warn_admins(user, "Corgi Cannon", 0) /obj/item/relic/proc/clean(mob/user) From 804405441213c56352a802356d13fe4b45c1bc43 Mon Sep 17 00:00:00 2001 From: barbedwireqtip <39710136+barbedwireqtip@users.noreply.github.com> Date: Tue, 31 Jul 2018 04:57:01 -0400 Subject: [PATCH 233/403] Add the half-life security guard outfit to the secdrobe (#39460) I saw this outfit in the code, thought it'd be pretty neat to add to the secdrobe. --- code/modules/vending/wardrobes.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 8be5cee324..95c981f62b 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -18,7 +18,8 @@ /obj/item/clothing/mask/bandana/red = 3, /obj/item/clothing/under/rank/security/skirt = 3, /obj/item/clothing/under/rank/security/grey = 3, - /obj/item/clothing/under/pants/khaki = 3) + /obj/item/clothing/under/pants/khaki = 3, + /obj/item/clothing/under/rank/security/blueshirt = 3) premium = list(/obj/item/clothing/under/rank/security/navyblue = 3, /obj/item/clothing/suit/security/officer = 3, /obj/item/clothing/head/beret/sec/navyofficer = 3) From 6b82cf716fb8024fbfd556cf6b0b628fbbd3b5c5 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 31 Jul 2018 01:57:04 -0700 Subject: [PATCH 234/403] Automatic changelog generation for PR #39460 [ci skip] --- html/changelogs/AutoChangeLog-pr-39460.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39460.yml diff --git a/html/changelogs/AutoChangeLog-pr-39460.yml b/html/changelogs/AutoChangeLog-pr-39460.yml new file mode 100644 index 0000000000..940a172e3f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39460.yml @@ -0,0 +1,4 @@ +author: "barbedwireqtip" +delete-after: True +changes: + - tweak: "Adds the security guard outfit from Half-Life to the secdrobe" From 02ef76dc7794bf6687a0fedf7fa8fcf2b3a1499e Mon Sep 17 00:00:00 2001 From: Grandmother of 50 <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Tue, 31 Jul 2018 11:54:50 -0400 Subject: [PATCH 235/403] Update _drone.dm (#39463) --- code/modules/mob/living/simple_animal/friendly/drone/_drone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 613d348016..cf3742fcc5 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -59,7 +59,7 @@ var/laws = \ "1. You may not involve yourself in the matters of another being, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n"+\ "2. You may not harm any being, regardless of intent or circumstance.\n"+\ - "3. Your goals are to build, maintain, repair, improve, and provide power to the best of your abilities, You must never actively work against these goals." + "3. Your goals are to actively build, maintain, repair, improve, and provide power to the best of your abilities within the facility that housed your activation." //for derelict drones so they don't go to station. var/heavy_emp_damage = 25 //Amount of damage sustained if hit by a heavy EMP pulse var/alarms = list("Atmosphere" = list(), "Fire" = list(), "Power" = list()) var/obj/item/internal_storage //Drones can store one item, of any size/type in their body From 15805a1b8f4ca896f9e5683d2a5bb2c6502fa4f2 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 31 Jul 2018 08:54:54 -0700 Subject: [PATCH 236/403] Automatic changelog generation for PR #39463 [ci skip] --- html/changelogs/AutoChangeLog-pr-39463.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39463.yml diff --git a/html/changelogs/AutoChangeLog-pr-39463.yml b/html/changelogs/AutoChangeLog-pr-39463.yml new file mode 100644 index 0000000000..7eb23aa3f2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39463.yml @@ -0,0 +1,4 @@ +author: "Cobby" +delete-after: True +changes: + - spellcheck: "Drone's Law 3 has been edited to explicitly state that it's for the site of activation (aka people do not get banned for going to upgrade station as derelict drones since it's explicitly clear now). See https://tgstation13.org/phpBB/viewtopic.php?f=33&t=18844&p=429944#p429944 for why this was PR'd" From 1463784de5aa11110ec34a169f4d54f02744fb4e Mon Sep 17 00:00:00 2001 From: Hate9 Date: Tue, 31 Jul 2018 17:27:37 -0400 Subject: [PATCH 237/403] Adds tiny circuits (#39123) * Added tiny circuits * fixed typo * Update assemblies.dm * Rename example - Copy.yml to example.yml * Update circuit.dm * Delete tinycircuits.yml --- .../subsystem/processing/circuit.dm | 7 +++ .../integrated_electronics/core/assemblies.dm | 44 ++++++++++++++++++ icons/obj/assemblies/electronic_setups.dmi | Bin 16484 -> 17029 bytes 3 files changed, 51 insertions(+) diff --git a/code/controllers/subsystem/processing/circuit.dm b/code/controllers/subsystem/processing/circuit.dm index dad71a005a..1ae5bad23c 100644 --- a/code/controllers/subsystem/processing/circuit.dm +++ b/code/controllers/subsystem/processing/circuit.dm @@ -50,6 +50,11 @@ PROCESSING_SUBSYSTEM_DEF(circuit) /obj/item/electronic_assembly/simple, /obj/item/electronic_assembly/hook, /obj/item/electronic_assembly/pda, + /obj/item/electronic_assembly/small/default, + /obj/item/electronic_assembly/small/cylinder, + /obj/item/electronic_assembly/small/scanner, + /obj/item/electronic_assembly/small/hook, + /obj/item/electronic_assembly/small/box, /obj/item/electronic_assembly/medium/default, /obj/item/electronic_assembly/medium/box, /obj/item/electronic_assembly/medium/clam, @@ -68,6 +73,7 @@ PROCESSING_SUBSYSTEM_DEF(circuit) /obj/item/electronic_assembly/drone/medbot, /obj/item/electronic_assembly/drone/genbot, /obj/item/electronic_assembly/drone/android, + /obj/item/electronic_assembly/wallmount/tiny, /obj/item/electronic_assembly/wallmount/light, /obj/item/electronic_assembly/wallmount, /obj/item/electronic_assembly/wallmount/heavy @@ -83,3 +89,4 @@ PROCESSING_SUBSYSTEM_DEF(circuit) /obj/item/card/data/full_color, /obj/item/card/data/disk ) + diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index dcd49356a3..d6e26519fe 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -59,6 +59,11 @@ COLOR_ASSEMBLY_PURPLE ) +/obj/item/electronic_assembly/New() + ..() + src.max_components = round(max_components) + src.max_complexity = round(max_complexity) + /obj/item/electronic_assembly/GenerateTag() tag = "assembly_[next_assembly_id++]" @@ -608,6 +613,37 @@ icon_state = "setup_small_pda" desc = "It's a case, for building small electronics with. This one resembles a PDA." +/obj/item/electronic_assembly/small + name = "electronic device" + icon_state = "setup_device" + desc = "It's a case, for building tiny-sized electronics with." + w_class = WEIGHT_CLASS_TINY + max_components = IC_MAX_SIZE_BASE / 2 + max_complexity = IC_COMPLEXITY_BASE / 2 + +/obj/item/electronic_assembly/small/default + name = "type-a electronic device" + +/obj/item/electronic_assembly/small/cylinder + name = "type-b electronic device" + icon_state = "setup_device_cylinder" + desc = "It's a case, for building tiny-sized electronics with. This one has a cylindrical design." + +/obj/item/electronic_assembly/small/scanner + name = "type-c electronic device" + icon_state = "setup_device_scanner" + desc = "It's a case, for building tiny-sized electronics with. This one has a scanner-like design." + +/obj/item/electronic_assembly/small/hook + name = "type-d electronic device" + icon_state = "setup_device_hook" + desc = "It's a case, for building tiny-sized electronics with. This one looks like it has a belt clip, but it's purely decorative." + +/obj/item/electronic_assembly/small/box + name = "type-e electronic device" + icon_state = "setup_device_box" + desc = "It's a case, for building tiny-sized electronics with. This one has a boxy design." + /obj/item/electronic_assembly/medium name = "electronic mechanism" icon_state = "setup_medium" @@ -749,6 +785,14 @@ max_components = IC_MAX_SIZE_BASE max_complexity = IC_COMPLEXITY_BASE +/obj/item/electronic_assembly/wallmount/tiny + name = "tiny wall-mounted electronic assembly" + icon_state = "setup_wallmount_tiny" + desc = "It's a case, for building tiny electronics with. It has a magnetized backing to allow it to stick to walls, but you'll still need to wrench the anchoring bolts in place to keep it on." + w_class = WEIGHT_CLASS_TINY + max_components = IC_MAX_SIZE_BASE / 2 + max_complexity = IC_COMPLEXITY_BASE / 2 + /obj/item/electronic_assembly/wallmount/proc/mount_assembly(turf/on_wall, mob/user) //Yeah, this is admittedly just an abridged and kitbashed version of the wallframe attach procs. if(get_dist(on_wall,user)>1) return diff --git a/icons/obj/assemblies/electronic_setups.dmi b/icons/obj/assemblies/electronic_setups.dmi index f18018c0aec049c54e4dc8fdf8079be0f9a26508..58ef0903beb9befb4059221a63cc466db20e69f5 100644 GIT binary patch literal 17029 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%0Aa3;Pa&IU(?slP5lOlIF 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 UK{)d!Egqn+ZLC$P;Sl+M03(fh>;M1& From e85177e1fd47223e3fc58b4fc57968754461f2fe Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 31 Jul 2018 14:27:40 -0700 Subject: [PATCH 238/403] Automatic changelog generation for PR #39123 [ci skip] --- html/changelogs/AutoChangeLog-pr-39123.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39123.yml diff --git a/html/changelogs/AutoChangeLog-pr-39123.yml b/html/changelogs/AutoChangeLog-pr-39123.yml new file mode 100644 index 0000000000..7a809a8327 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39123.yml @@ -0,0 +1,5 @@ +author: "Hate9" +delete-after: True +changes: + - rscadd: "Added tiny-sized circuits (called Devices)" + - imageadd: "added new icons for the Devices" From be7d1b8f88814fc92866102e5e7dd05b22e45c04 Mon Sep 17 00:00:00 2001 From: AnturK Date: Tue, 31 Jul 2018 23:28:25 +0200 Subject: [PATCH 239/403] Sliding puzzle improvements (#39471) * Sets notransform on the mob and makes few more things respect it. * Makes if location contains any indestructible walls. (I need to switch these to flag instead of path checking) * Adds it to smite. --- code/__DEFINES/admin.dm | 1 + code/_onclick/click.dm | 3 +++ code/controllers/subsystem/npcpool.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 6 ++++- .../modules/ruins/lavalandruin_code/puzzle.dm | 24 ++++++++++++++++--- 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 811761c582..21024e78f7 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -70,6 +70,7 @@ #define ADMIN_PUNISHMENT_FIREBALL "Fireball" #define ADMIN_PUNISHMENT_ROD "Immovable Rod" #define ADMIN_PUNISHMENT_SUPPLYPOD "Supply Pod" +#define ADMIN_PUNISHMENT_MAZING "Puzzle" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 52173a0ef1..4fe76339f8 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -72,6 +72,9 @@ if(check_click_intercept(params,A)) return + if(notransform) + return + var/list/modifiers = params2list(params) if(modifiers["shift"] && modifiers["middle"]) ShiftMiddleClickOn(A) diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm index 67e31b6931..d93f1f2407 100644 --- a/code/controllers/subsystem/npcpool.dm +++ b/code/controllers/subsystem/npcpool.dm @@ -23,7 +23,7 @@ SUBSYSTEM_DEF(npcpool) var/mob/living/simple_animal/SA = currentrun[currentrun.len] --currentrun.len - if(!SA.ckey) + if(!SA.ckey && !SA.notransform) if(SA.stat != DEAD) SA.handle_automated_movement() if(SA.stat != DEAD) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 0184c4b34f..de30b69f97 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1313,7 +1313,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(!check_rights(R_ADMIN)) return - var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD) + var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD, ADMIN_PUNISHMENT_MAZING) var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list @@ -1359,6 +1359,10 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(iscarbon(target)) target.Stun(10)//takes 0.53 seconds for CentCom pod to land new /obj/effect/DPtarget(get_turf(target), delivery, POD_CENTCOM) + if(ADMIN_PUNISHMENT_MAZING) + if(!puzzle_imprison(target)) + to_chat(usr,"Imprisonment failed!") + return var/msg = "[key_name_admin(usr)] punished [key_name_admin(target)] with [punishment]." message_admins(msg) diff --git a/code/modules/ruins/lavalandruin_code/puzzle.dm b/code/modules/ruins/lavalandruin_code/puzzle.dm index adb28fb96c..05eedc3e79 100644 --- a/code/modules/ruins/lavalandruin_code/puzzle.dm +++ b/code/modules/ruins/lavalandruin_code/puzzle.dm @@ -43,6 +43,16 @@ if(auto_setup) setup() +/obj/effect/sliding_puzzle/proc/check_setup_location() + for(var/id in 1 to 9) + var/turf/T = get_turf_for_id(id) + if(!T) + return FALSE + if(istype(T,/turf/closed/indestructible)) + return FALSE + return TRUE + + /obj/effect/sliding_puzzle/proc/validate() if(finished) return @@ -277,6 +287,7 @@ /obj/effect/sliding_puzzle/prison/dispense_reward() prisoner.forceMove(get_turf(src)) + prisoner.notransform = FALSE prisoner = null //Some armor so it's harder to kill someone by mistake. @@ -300,17 +311,23 @@ var/mob/living/carbon/carbon_victim = victim //Handcuffed or unconcious if(istype(carbon_victim) && carbon_victim.handcuffed || victim.stat != CONSCIOUS) - imprison(target) + if(!puzzle_imprison(target)) + to_chat(user,"[src] does nothing.") + return to_chat(user,"You trap [victim] in the prison cube!") qdel(src) else to_chat(user,"[src] only accepts restrained or unconcious prisoners.") -/obj/item/prisoncube/proc/imprison(mob/living/prisoner) +/proc/puzzle_imprison(mob/living/prisoner) var/turf/T = get_turf(prisoner) var/obj/effect/sliding_puzzle/prison/cube = new(T) + if(!cube.check_setup_location()) + qdel(cube) + return FALSE //First grab the prisoner and move them temporarily into the generator so they won't get thrown around. + prisoner.notransform = TRUE prisoner.forceMove(cube) to_chat(prisoner,"You're trapped by the prison cube! You will remain trapped until someone solves it.") @@ -330,4 +347,5 @@ //Move them into random block var/obj/structure/puzzle_element/E = pick(cube.elements) - prisoner.forceMove(E) \ No newline at end of file + prisoner.forceMove(E) + return TRUE \ No newline at end of file From d9fca34298c78156a55222bae3cd1c48db1ff68d Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Tue, 31 Jul 2018 23:29:30 +0200 Subject: [PATCH 240/403] Fix sparks cooling air (#39476) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Turns out I forgot that the game uses Kelvin oops New temp is 300°K which is roughly 27°C I'm still in favor of removing hotspot_expose for sparks altogether, but that's out of scope for this PR. this is why I drink --- code/game/objects/effects/effect_system/effects_sparks.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/effects/effect_system/effects_sparks.dm b/code/game/objects/effects/effect_system/effects_sparks.dm index c0aaeaf228..c04acf79a6 100644 --- a/code/game/objects/effects/effect_system/effects_sparks.dm +++ b/code/game/objects/effects/effect_system/effects_sparks.dm @@ -28,20 +28,20 @@ playsound(src.loc, "sparks", 100, 1) var/turf/T = loc if(isturf(T)) - T.hotspot_expose(35,5) + T.hotspot_expose(300,5) QDEL_IN(src, 20) /obj/effect/particle_effect/sparks/Destroy() var/turf/T = loc if(isturf(T)) - T.hotspot_expose(35,1) + T.hotspot_expose(300,1) return ..() /obj/effect/particle_effect/sparks/Move() ..() var/turf/T = loc if(isturf(T)) - T.hotspot_expose(35,1) + T.hotspot_expose(300,1) /datum/effect_system/spark_spread effect_type = /obj/effect/particle_effect/sparks From 5fbca572ab4c1af8784f4fc5e69718a04d6ac1e5 Mon Sep 17 00:00:00 2001 From: Nich Date: Tue, 31 Jul 2018 22:30:12 +0100 Subject: [PATCH 241/403] Fix a typo in scrapheap shuttle description (#39480) --- code/datums/shuttles.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index cf4ba080f1..d9b197d2ff 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -229,7 +229,7 @@ suffix = "scrapheap" name = "Standby Evacuation Vessel \"Scrapheap Challenge\"" credit_cost = -1000 - description = "Due to a lack of functional emergency shuttles, we bought this second hand from a scrapyard and pressed it into service. Please do not lean to heavily on the exterior windows, they are fragile." + description = "Due to a lack of functional emergency shuttles, we bought this second hand from a scrapyard and pressed it into service. Please do not lean too heavily on the exterior windows, they are fragile." admin_notes = "An abomination with no functional medbay, sections missing, and some very fragile windows. Surprisingly airtight." /datum/map_template/shuttle/emergency/narnar From 59023c4022f6369a12d76f3c12be3026995b716a Mon Sep 17 00:00:00 2001 From: Militaires Date: Tue, 31 Jul 2018 23:34:51 +0200 Subject: [PATCH 242/403] [READY] Agent Stealth Box / Stealth Manual (#39302) This is a traitor item that allows you to deploy inside box that promptly turns invisible. If the box collides with a living being or vice versa, it will be temporarily revealed, pushing against the box will continue revealing it. While the box is revealed, clicking on it will open the box as well as destroy it, clicking the action button while the box is deployed also destroys the box. Finally, you can't open airlocks while inside the box, that means you must exit the box > open > wait until cooldown > enter box if you're not a smart agent and wait for someone to open the door before sneaking behind them. The box can be recognized as of syndicate nature due to a red label on its side. --- code/datums/action.dm | 21 +++++++++++ .../objects/items/implants/implant_stealth.dm | 35 ++++++++++++++++++ code/game/objects/items/implants/implanter.dm | 4 ++ .../structures/crates_lockers/crates.dm | 2 +- code/modules/uplink/uplink_items.dm | 6 +++ icons/mob/actions/actions_items.dmi | Bin 8401 -> 8842 bytes icons/mob/actions/backgrounds.dmi | Bin 2937 -> 5866 bytes icons/obj/closet.dmi | Bin 28456 -> 28534 bytes icons/obj/library.dmi | Bin 25195 -> 25325 bytes sound/misc/box_deploy.ogg | Bin 0 -> 16791 bytes tgstation.dme | 1 + 11 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 code/game/objects/items/implants/implant_stealth.dm create mode 100644 sound/misc/box_deploy.ogg diff --git a/code/datums/action.dm b/code/datums/action.dm index 593e81ff01..aaa337bd46 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -487,6 +487,27 @@ else to_chat(owner, "Your hands are full!") +/datum/action/item_action/agent_box + name = "Deploy Box" + desc = "Find inner peace, here, in the box." + check_flags = AB_CHECK_RESTRAINED | AB_CHECK_STUN | AB_CHECK_CONSCIOUS + background_icon_state = "bg_agent" + icon_icon = 'icons/mob/actions/actions_items.dmi' + button_icon_state = "deploy_box" + var/cooldown = 0 + var/obj/structure/closet/cardboard/agent/box + +/datum/action/item_action/agent_box/Trigger() + if(!box) + if(cooldown < world.time - 30) + box = new(get_turf(owner)) + owner.forceMove(box) + cooldown = world.time + owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE) + else + owner.forceMove(get_turf(box)) + owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE) + QDEL_NULL(box) //Preset for spells /datum/action/spell_action diff --git a/code/game/objects/items/implants/implant_stealth.dm b/code/game/objects/items/implants/implant_stealth.dm new file mode 100644 index 0000000000..d067371d07 --- /dev/null +++ b/code/game/objects/items/implants/implant_stealth.dm @@ -0,0 +1,35 @@ +/obj/item/implant/stealth + name = "S3 implant" + desc = "Allows you to be hidden in plain sight." + actions_types = list(/datum/action/item_action/agent_box) + +//Box Object + +/obj/structure/closet/cardboard/agent + name = "inconspicious box" + desc = "It's so normal that you didn't notice it before." + icon_state = "agentbox" + move_speed_multiplier = 0.5 + +/obj/structure/closet/cardboard/agent/proc/go_invisible() + animate(src, , alpha = 0, time = 5) + +/obj/structure/closet/cardboard/agent/Initialize() + . = ..() + go_invisible() + + +/obj/structure/closet/cardboard/agent/open() + . = ..() + qdel(src) + +/obj/structure/closet/cardboard/agent/process() + alpha = max(0, alpha - 50) + +/obj/structure/closet/cardboard/agent/Bump(atom/movable/A) + . = ..() + if(isliving(A)) + alpha = 255 + addtimer(CALLBACK(src, .proc/go_invisible), 10, TIMER_UNIQUE) + + diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index 528905be1e..a1d360240d 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -71,3 +71,7 @@ /obj/item/implanter/emp name = "implanter (EMP)" imp_type = /obj/item/implant/emp + +/obj/item/implanter/stealth + name = "implanter (stealth)" + imp_type = /obj/item/implant/stealth \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index b803fff2bd..df3df8ad14 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -69,7 +69,7 @@ desc = "It's a burial receptacle for the dearly departed." icon_state = "coffin" resistance_flags = FLAMMABLE - max_integrity = 70 + max_integrity = 70 material_drop = /obj/item/stack/sheet/mineral/wood material_drop_amount = 5 diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index dc3bdfaf2b..35699dba52 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1330,6 +1330,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 40 cant_discount = TRUE +/datum/uplink_item/cyber_implants/stealthimplant + name = "Stealth Implant" + desc = "This one-of-a-kind implant will make you almost invisible if you play your cards right." + item = /obj/item/implanter/stealth + cost = 8 + // Role-specific items /datum/uplink_item/role_restricted category = "Role-Restricted" diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi index ce7d000409cfba451534c97ca7479bdcd33ef293..ca380a5376e57388c4bcce2153b8b9be6b432b35 100644 GIT binary patch literal 8842 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 M07*qoM6N<$f^em4Qvd(} literal 8401 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 Lb=4|Wtit{S4!Ut# literal 2937 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 diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index 3d1d7c406dfed4840358158cc799884bbfcccafb..d8c198c15506fcd1599acc758ae105210e691a93 100644 GIT binary patch delta 5621 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 P00000NkvXXu0mjfrltHb delta 5543 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 HHsSvT%E+XM delta 4731 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 E13TZhyZ`_I literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 371e87196c..e56547711f 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -859,6 +859,7 @@ #include "code\game\objects\items\implants\implant_mindshield.dm" #include "code\game\objects\items\implants\implant_misc.dm" #include "code\game\objects\items\implants\implant_spell.dm" +#include "code\game\objects\items\implants\implant_stealth.dm" #include "code\game\objects\items\implants\implant_storage.dm" #include "code\game\objects\items\implants\implant_track.dm" #include "code\game\objects\items\implants\implantcase.dm" From 9cc6815f4ad7046d7c3592ceb921b1da77d4a0b4 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 31 Jul 2018 14:34:54 -0700 Subject: [PATCH 243/403] Automatic changelog generation for PR #39302 [ci skip] --- html/changelogs/AutoChangeLog-pr-39302.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39302.yml diff --git a/html/changelogs/AutoChangeLog-pr-39302.yml b/html/changelogs/AutoChangeLog-pr-39302.yml new file mode 100644 index 0000000000..ced2f4d0d7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39302.yml @@ -0,0 +1,4 @@ +author: "Basilman" +delete-after: True +changes: + - rscadd: "Added the stealth manual to the uplink, costs 8 TC. Find it under the implant section" From 3638e5948e51b91e903215bfc1d6a3c6b4099cb1 Mon Sep 17 00:00:00 2001 From: AnturK Date: Tue, 31 Jul 2018 23:36:15 +0200 Subject: [PATCH 244/403] Fix nuke rounds not ending when nuke was disarmed (#39440) --- code/game/gamemodes/nuclear/nuclear.dm | 7 +++---- .../antagonists/nukeop/equipment/nuclearbomb.dm | 10 +++------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 792ef5d830..b269a5abe5 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -67,10 +67,9 @@ /datum/game_mode/nuclear/check_finished() //Keep the round going if ops are dead but bomb is ticking. if(nuke_team.operatives_dead()) - var/obj/machinery/nuclearbomb/N - pass(N) //suppress unused warning - if(N.bomb_set) //snaaaaaaaaaake! It's not over yet! - return FALSE //its a static var btw + for(var/obj/machinery/nuclearbomb/N in GLOB.nuke_list) + if(N.proper_bomb && (N.timing || N.exploding)) + return FALSE return ..() /datum/game_mode/nuclear/set_round_result() diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index df9b35ee8b..e365f09b55 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -28,8 +28,8 @@ var/deconstruction_state = NUKESTATE_INTACT var/lights = "" var/interior = "" + var/proper_bomb = TRUE //Please var/obj/effect/countdown/nuclearbomb/countdown - var/static/bomb_set /obj/machinery/nuclearbomb/Initialize() . = ..() @@ -227,7 +227,6 @@ /obj/machinery/nuclearbomb/process() if(timing && !exploding) - bomb_set = TRUE if(detonation_timer < world.time) explode() else @@ -358,26 +357,23 @@ S.switch_mode_to(initial(S.mode)) S.alert = FALSE timing = FALSE - bomb_set = TRUE detonation_timer = null countdown.stop() update_icon() /obj/machinery/nuclearbomb/proc/set_active() - if(safety && !bomb_set) + if(safety) to_chat(usr, "The safety is still on.") return timing = !timing if(timing) previous_level = get_security_level() - bomb_set = TRUE detonation_timer = world.time + (timer_set * 10) for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list) S.switch_mode_to(TRACK_INFILTRATOR) countdown.start() set_security_level("delta") else - bomb_set = FALSE detonation_timer = null set_security_level(previous_level) for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list) @@ -460,6 +456,7 @@ /obj/machinery/nuclearbomb/beer name = "Nanotrasen-brand nuclear fission explosive" desc = "One of the more successful achievements of the Nanotrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devastatingly effective. Signs explain that though this particular device has been decommissioned, every Nanotrasen station is equipped with an equivalent one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back." + proper_bomb = FALSE var/obj/structure/reagent_dispensers/beerkeg/keg /obj/machinery/nuclearbomb/beer/Initialize() @@ -498,7 +495,6 @@ addtimer(CALLBACK(src, .proc/fizzbuzz), 110) /obj/machinery/nuclearbomb/beer/proc/disarm() - bomb_set = FALSE detonation_timer = null exploding = FALSE exploded = TRUE From df0f4bd49202589f11c27e10dde8f040fc16bb59 Mon Sep 17 00:00:00 2001 From: Shdorsh <32726535+Shdorsh@users.noreply.github.com> Date: Tue, 31 Jul 2018 23:36:46 +0200 Subject: [PATCH 245/403] Turning circuits literate (#39223) Adds A text replacer circuit. Who knows, maybe one day we will be able to have a real discussion with a circuit? --- .../integrated_electronics/subtypes/text.dm | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 code/modules/integrated_electronics/subtypes/text.dm diff --git a/code/modules/integrated_electronics/subtypes/text.dm b/code/modules/integrated_electronics/subtypes/text.dm new file mode 100644 index 0000000000..bcc3d94766 --- /dev/null +++ b/code/modules/integrated_electronics/subtypes/text.dm @@ -0,0 +1,29 @@ +/obj/item/integrated_circuit/text + name = "text thingy" + desc = "Does text-processing related things." + category_text = "Text" + complexity = 1 + +// - Text Replacer - // +/obj/item/integrated_circuit/text/text_replacer + name = "find-replace circuit" + desc = "Replaces all of one bit of text with another" + extended_desc = "Takes a string(haystack) and puts out the string while having a certain word(needle) replaced with another." + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + inputs = list( + "haystack" = IC_PINTYPE_STRING, + "needle" = IC_PINTYPE_STRING, + "replacement" = IC_PINTYPE_STRING + ) + activators = list( + "replace" = IC_PINTYPE_PULSE_IN, + "on replaced" = IC_PINTYPE_PULSE_OUT + ) + outputs = list( + "replaced string" = IC_PINTYPE_STRING + ) + +/obj/item/integrated_circuit/text/text_replacer/do_work() + set_pin_data(IC_OUTPUT, 1,replacetext(get_pin_data(IC_INPUT, 1), get_pin_data(IC_INPUT, 2), get_pin_data(IC_INPUT, 3))) + push_data() + activate_pin(2) From 436d07ccaa109bfe5898bb800cf99c9e85d34449 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 31 Jul 2018 14:36:49 -0700 Subject: [PATCH 246/403] Automatic changelog generation for PR #39223 [ci skip] --- html/changelogs/AutoChangeLog-pr-39223.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39223.yml diff --git a/html/changelogs/AutoChangeLog-pr-39223.yml b/html/changelogs/AutoChangeLog-pr-39223.yml new file mode 100644 index 0000000000..37161a002a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39223.yml @@ -0,0 +1,4 @@ +author: "Shdorsh" +delete-after: True +changes: + - rscadd: "Text replacer circuit" From 3f6f9e6b4f330829043f45267cf9f8161a2698af Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 31 Jul 2018 14:38:56 -0700 Subject: [PATCH 247/403] Automatic changelog generation for PR #39465 [ci skip] --- html/changelogs/AutoChangeLog-pr-39465.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39465.yml diff --git a/html/changelogs/AutoChangeLog-pr-39465.yml b/html/changelogs/AutoChangeLog-pr-39465.yml new file mode 100644 index 0000000000..22ec3f3b8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39465.yml @@ -0,0 +1,4 @@ +author: "SpaceManiac" +delete-after: True +changes: + - bugfix: "The bridge of the gulag shuttle now has a stacking machine console for ejecting sheets." From 5e203503747f4d4ebbe0a705145f897c57e076af Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Tue, 31 Jul 2018 16:35:10 -0700 Subject: [PATCH 248/403] Skip the map merger on merge commits (#39495) --- tools/mapmerge2/precommit.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/mapmerge2/precommit.py b/tools/mapmerge2/precommit.py index 381f1ea8a3..423b8971b8 100644 --- a/tools/mapmerge2/precommit.py +++ b/tools/mapmerge2/precommit.py @@ -9,6 +9,13 @@ def main(repo): print("You need to resolve merge conflicts first.") return 1 + try: + repo.lookup_reference('MERGE_HEAD') + print("Not running mapmerge for merge commit.") + return 0 + except KeyError: + pass + changed = 0 for path, status in repo.status().items(): if path.endswith(".dmm") and (status & (pygit2.GIT_STATUS_INDEX_MODIFIED | pygit2.GIT_STATUS_INDEX_NEW)): From 6fa2dcf54ee44b484648af97dff43ed7cf6b444b Mon Sep 17 00:00:00 2001 From: fluffe9911 Date: Tue, 31 Jul 2018 20:05:08 -0400 Subject: [PATCH 249/403] Multiple Color Clown Costumes! (#39435) This pr adds new clown costumes that come in a variety of colors including blue, green, yellow, purple, orange and now rainbow! so now clowns can go out in the station in the latest clown style! --- code/modules/clothing/under/jobs/civilian.dm | 54 +++++++++++++++++++ code/modules/vending/autodrobe.dm | 11 +++- icons/mob/inhands/clothing_lefthand.dmi | Bin 68896 -> 71974 bytes icons/mob/inhands/clothing_righthand.dmi | Bin 68034 -> 71747 bytes icons/mob/uniform.dmi | Bin 234446 -> 240600 bytes icons/obj/clothing/uniforms.dmi | Bin 64078 -> 66242 bytes 6 files changed, 63 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 69535b77b0..0411a67846 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -67,6 +67,60 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE +/obj/item/clothing/under/rank/blueclown + name = "blue clown suit" + desc = "'BLUE HONK!'" + icon_state = "blueclown" + item_state = "blueclown" + item_color = "blueclown" + fitted = FEMALE_UNIFORM_TOP + can_adjust = FALSE + +/obj/item/clothing/under/rank/greenclown + name = "green clown suit" + desc = "'GREEN HONK!'" + icon_state = "greenclown" + item_state = "greenclown" + item_color = "greenclown" + fitted = FEMALE_UNIFORM_TOP + can_adjust = FALSE + +/obj/item/clothing/under/rank/yellowclown + name = "yellow clown suit" + desc = "'YELLOW HONK!'" + icon_state = "yellowclown" + item_state = "yellowclown" + item_color = "yellowclown" + fitted = FEMALE_UNIFORM_TOP + can_adjust = FALSE + +/obj/item/clothing/under/rank/purpleclown + name = "purple clown suit" + desc = "'PURPLE HONK!'" + icon_state = "purpleclown" + item_state = "purpleclown" + item_color = "purpleclown" + fitted = FEMALE_UNIFORM_TOP + can_adjust = FALSE + +/obj/item/clothing/under/rank/orangeclown + name = "orange clown suit" + desc = "'ORANGE HONK!'" + icon_state = "orangeclown" + item_state = "orangeclown" + item_color = "orangeclown" + fitted = FEMALE_UNIFORM_TOP + can_adjust = FALSE + +/obj/item/clothing/under/rank/rainbowclown + name = "rainbow clown suit" + desc = "'R A I N B O W HONK!'" + icon_state = "rainbowclown" + item_state = "rainbowclown" + item_color = "rainbowclown" + fitted = FEMALE_UNIFORM_TOP + can_adjust = FALSE + /obj/item/clothing/under/rank/clown/Initialize() . = ..() AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 95211a9600..65480cd113 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -8,7 +8,12 @@ vend_reply = "Thank you for using AutoDrobe!" products = list(/obj/item/clothing/suit/chickensuit = 1, /obj/item/clothing/head/chicken = 1, - /obj/item/clothing/under/gladiator = 1, + /obj/item/clothing/under/rank/blueclown = 1, + /obj/item/clothing/under/rank/greenclown = 1, + /obj/item/clothing/under/rank/yellowclown = 1, + /obj/item/clothing/under/rank/orangeclown = 1, + /obj/item/clothing/under/rank/purpleclown = 1, + /obj/item/clothing/under/gladiator = 1, /obj/item/clothing/head/helmet/gladiator = 1, /obj/item/clothing/under/gimmick/rank/captain/suit = 1, /obj/item/clothing/head/flatcap = 1, @@ -114,12 +119,14 @@ /obj/item/clothing/mask/muzzle = 2) premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, + /obj/item/clothing/under/rank/rainbowclown = 1, /obj/item/clothing/head/helmet/roman/fake = 1, /obj/item/clothing/head/helmet/roman/legionnaire/fake = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/shield/riot/roman/fake = 1, - /obj/item/skub = 1) + /obj/item/skub = 1,) + refill_canister = /obj/item/vending_refill/autodrobe /obj/machinery/vending/autodrobe/all_access diff --git a/icons/mob/inhands/clothing_lefthand.dmi b/icons/mob/inhands/clothing_lefthand.dmi index 76adebdc11e91556ea9983a67dd12ce4d1bdfa6d..2b39acd3d88bdcc946eb6d3d5def954138ed742c 100644 GIT binary patch literal 71974 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
    i*CGZ=f8(-%6nY6I3w{ub5 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 YV0*KV7?sDxP6QCer>b&APfR}iFZg)>82|tP literal 68896 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 diff --git a/icons/mob/inhands/clothing_righthand.dmi b/icons/mob/inhands/clothing_righthand.dmi index a12053ae1d761601531fefc9cb5fafe006e4f63b..ef6c9b3f062ce4746eae778686fea276d9373f4b 100644 GIT binary patch literal 71747 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

    Gu$*Eac z<4bfJ5h>PvU&6tvSR=MCe%+4LPr9DmXQQA9+WS}9t>q}Z{qU?t#NT(YxF&YMF7)Zi z)nX|c<<>W>dDcl^vv{(ylp|di(?G3LYNB z!P@oJmc7J2*a=ne@Vv24PJ?IIak%%1)$eCGTyyxBV`@=Iet}r*endnO+^2dw#hq}& z0ZM?h2{|pBI$8@v*d2y*Rm_u#u z^C@>OyBz$}rrs4Zn$(fS#tJ&mPg@*EgU$~NXxWjVC*v5YoCxOA-4>BAe#AFg4~ue5Ze-5i%p zPr61`s8BwxC~ zNXuYo*;g|0r7rvGme5J__8fPxEKOY(_;4pYX=Zor9AThanWvW~8#p(r?X`Y@s3%0A=+Dgxlr$4* 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 literal 68034 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

    _sKKBjn9`p?FymrAaKaM#mj1pja(c@@ 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�n~ZI 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 C!G|XR literal 234446 zcmdSAbyOU|*Dcz(2ZFnV1cF0?1&81S3xp6{gKKabJOl_5fd++|DrXq)jO^FQv0G@)p^jiQxrGI#1qC+hL z2OQ=AfTrW6sqG?d{>jwY%F)Hj!5#oS(n?c??HBk7eh)9@6MVB#pRjw>a`RU3IWjK` z9JMoy@{4IKwYmIZ8T>-jvZYxz=7dP?#%!fGOa9UJaIf$3-RbGDs$t6ZaKR(cdHAky+e9qqPk*4Q2;%wxxzH(lB@~Cb=-MNya zE82w81$8%y{jIOYC(H9Ex&4=VGbFE&i?O|mhHs@5!l%+1N36_kDi7P*e~a3?7nWNN z6`wD6_=$^LP+QvlNa@X3x@&p0o#kf`u<*S_r%>2|j1+xzG>NE>^15M?M0&et%ir&C zk*VhLxyw8{&^nLl-)fKc(KBTA_7FHJuk?G_GsE!yk0;XINO{X{i30VGp7tI05l;no z07D_p1{3ZiBUK2HgXS!Q{%(c72NSbP-Grv!i@2=3(}`7OpEj$D{*nAIPvsUtGm`n1 zwC+7R3ba4}^3qAWdsLpHRk)+j!U)(1-X}ku$g0u){nuQqTw6BsDbk-AIVXR)Q_m2+ z42Z{^n+o)8wze6B))AqkZ!N7%+P)@Kws?1e{468-GXMC1%xQs3s1BfT;;20l1v zY0gPvWVDPB{}tzX86 zC!hP7*c5 zH%ewh#f|+vh92`BQinAS0ocb>K<$ktdH6VxAop`X`v>x|KNXRmx0-&~cCs5NwD0vZ z0MS-dp%XINxednh*+>($+H3@WG-HQGG_yiw-rno{{T8G9*z5xBfayqk!=8NXk$WDq z*`TDXA$Obraigp33e};qygQ|E5&n!@5hGigSLPIwa7aTp=7eojWI7TVyDD`9fS9Ff zd`6(wk8zlpd%;hB-qv@Fw}3x>d%LxsxV`o7JiiMzbQd%KO4=K8w)B94w4|m-+CjRf z53vj!6i+5e~sY4a@q zCypOccF7lPY{q<-|d>%UK=`A7Wz|5JHr8{(p)^dw7VD=QbSDi4AIV8e%Wv-P?v9Bm`Syoz4k&nfHZtg>GyJw? zYHe-RZnme<@NNKQyox{pRdkAJvZP;BZbDZ00cor#r1`VcyFCeiV(#cZWt8}2*olW` ziJ31xB_ljg;0E`%s5-&<-pXvjye{BQ2*ZrQobTU&-!59#xl&2R6QMJRGE zIZqEw5tebYXYQvK9W3$OlZo>@mEzopmsdLJtMhUaQHI9zS3t!nNsLn$%`K?ORI$P5 z#&7F`hB_2=A5Ge+nNj5|Ca(sg-@2sg0(A|LSsIW_W{0MJgm}cg`5os$iEtAFrFj%y zKdDT>KW-0m1V}dO zfP{++uhs|lZ&TJ0AwCzQa)3Wha`InWavq-s7w~#FKclm&3&qvdHHptA!Q~M&@Fyc` z$UyRk4+6p9*D5*fsxL+}f-&3272}WjX&4$ju+2=TTZxc&Z>RwiW{ZQFO2B_SUzJVB zkmuvee^JuzA1`^|b zc1krgHlqNRy$(HRo58LaYW66T>|9(J0Pn;!BRzM_2j=g$hB^80j3pNofB47x7NM4z z7ZguLBo^?gQGMJxwXXY6Gr3h4#I?HlF(rfWiRVt2{i45+lf-1|MA;f=vA8zTU58$y zaAkW9D=PHfBKUIP18u7dL)IT9fe^oqfdUpmmPt>v#n3(CI=GHoiGhB|benF_9+wuj zFOzIsaql|bsrclXpCg{%*puxmQ@>{EGBaVYoFR$+=OxHYFl!4r*4o2qX2&0JTh`^ zEkasw`z`juGGm+P+WQ)oC#$4yY{!M8+)saTW5Av$cuW$28l@JMU-}M>D1sqt3!a{w z#6(#PrG1&1(eCc)Sv?;X#{e1{8ZxV@z9|qGb)T$u|M`H{Blhm6`|T(2S`Tzc!IjdQtz*Ow zu!TzdQ6f1d`L14esmwt!ZFP3Vwzu0E3GoAUgF^e`c85>N&W63;1mE>2&mlaczm%kJ zNMZWJmP}2KU`3;`9A5UA(F`6&L3TLN3DB^(5z#{B5XX@M=58VhOFk zWS9JH-Lmgn)xVOQ%h)w?q#9PucIMm<2%W$vOu56jm zZ5x_L+=$TSJzeRzF6bbrf(TttxrUtywOsD<4_YC82vgoT7R+h@Q@@Ho{_kNuyKQS* zM}iqYf%nVbl--tL?6cCA>F`_C zeW7aC2J~)tgWwDAD_iYSE$9WbFEoDQG4Cf1R!x)7dy^b^;>ZJ+AO28hOEJ~k6C1VE z{8H_{sE8Hn%FD|O0E&u=#O0c8MMc=v7Q<7@hEe6^Ty-tiv;aK=0}>ApPgq!(e{nIJ z$={DwyeZE%H#ft0QoleAPo6v>AR-D14n_sq>#moA%FD~ky!O}E`aXXcXxaert1m9W z{}f@Omzy_m_*%=CY7KhJC-uf$M9xn%q` zY`~1*p9{{v93EANLkXL|zWuwDUN2xpF9G`XTiKHN`S5=l>5mT-D(t`E{3$sYi>$MG zQaxstiu_`dV*je{3DhaX&g)5VFTn*>5&MAv@uXpy?SPLqR;d?*h-~6j;(j#3NHiD& zG%5b%RDURbLl%iJYB_>i|B?$g3=RFsuIW=xw8WU-v8l);A)!-@{Xw49vXm7SGi)IK zjYo7^X!x<)&#dQ4#;HGSf3Sa~?Mpu6=C*HOe+C+x-{-u!Zv}PW#K*03n_hbZ$sagB zieerkTNxsQ&4e>P0OlT7RHVh`ZmFfJ)(<;kzjLI~&>Ak8R1*;ys!M5TXZW>}T=IOs z59IP-ipVyJykLpCE6;CDt0hu3I@Lzb*L?DC`A+H@Is^`aDut*Ky@Vy{9zWLwc9C&T znLZ@nRxI8x*GR+uWBzAw)1!q(!1fw8-$%&ao!V5>rU#zt!R}(;jEEdZn<3Kd!_RVkY1>$QMSM2GV3t3z`6(1iT05CTWq};&$liO75@+nkOHdH=dYC#H1CM6*uIXOG)jG__d z7U7-XqzXX$^5qLTEv2H{!3+`?7ni1{ru;1Z1i$Fx1luPYgFSA`V7G!FW`~1%H{Y969a-z4izG6`65#zVMH% zpc)1#j3u-~Eg5n6>3}iY564M9RBB+~e)!7kIfYXZQrlS!>Oo5|Et{hMl3x4lT>zE~ zylZEPqd}m6qRTfWdH>P1)$bO`LGs0BG=Shh;p83CZ99fyHPXKEu9}A>H*7@zaIP^8-ag^6(5NIX;HBQWSNzZZixaNMEXWQc@qjgkaeRiJ>-$0OE5n_5{Jvv549bhu*WA8oAjcXNpZ%lY7{sR&i;Nb7V}8b`OE|jz+5kG>C%}n?Hdkev z!MOR~*l`NKhGQ^jYN9@D-tE&OOf6Hz) zef|3N1ln=~@n~sj3yO+NimYmNV$;$}c67%Pba-Mw%+PNCb@?KIIw+Re=~5{Ue_iou zTcu=%ZRwED%4JKwQw1lN( zpbAr-#k+R?PQ2~Fe76AxBA_aX+2e|fA=HKadMN>plzWLF>`{x?+#a9pgxwC3)&$|U zVIGS}zE$*=S15R_cUQLr!M5#V%MozhtIC1E%vp4xLdXI@Z=(yAQ+?E# z&5U8}Is~+A9%!e(lo+GB^NW$vfbLR$7Q-&xYryo6;O)eVjZ(cwXFVClp0>DsWH8yK z{>_J0ZCaaKjCU!eN~BV9@I-N)9!*1>6gvRm8Vc)Oy8ZFn9lS*kZ(G0}Fg3kMsO~zO zAt#14QY_yeQ_XlUk9#=D{>roSdI-FGn(dZB4fB4uX>Sxul-2zfO8eTPT?G1G32cvB z&Etco!K!&Bw6AeQp`vVjsLWO!3rLC%_=6vos?NBg$+cxV8anJNlNyD(UtD`iLSW)a zE7(c_IBx$@4)>}BbK&c$lI+9#Yp_~BZ^X2&VMG@nvd%GK#o7&Oa2?um^8g4Cc%_oN zShgs&uTuKv!^RI#yukEy4#cC+!NEoY2^?!)y1I4rPoGMwXQZV?#y8>{x|0U#h>MES zU}0go(NGsphC|y|&wU#$oMu%28a6&RC9E-@DZqQ1RajWqH6)%}R;E(Vj`<&>m6nzk zl$OR%d1vwp2xQmQY4xKP6c!pMpk+OJk@SYCp{Yrc%4S1{mwuzKZeIrS;~Sj5Blc<; zexTdYLZM*ZQ^<9>?*^s!2kvmA1iJC>#^DnZ5)zP*Jew>}=g~Y>9NvGfGy7oz4iFF% z=ZxTCV}Bche)VAAYFBJbjDLR}9aW3)eR=@<6YRtOe#NIxpBimIVT4U?ZtiM**1qHq zBB4##SsMKvze`IQB5@z(@Yc}5mu~_jQsx1gdO`7F(cFlXx+~PjMtprYdWFD9o`u`%hJd zYoC}Vcu)&$JwuC?hmht>2C{_`h4?%#$n=>FNgz;lZ+k1=ey?O zu2}QOEC4+^-H_IfI9iZYl-*-?Fy-qgT}f{y-#)#_4VgB=6}>YE)&W(y;X#)bcQ*We zl^kzKCCA3vtd6X^E?AUv!B`=<1I^c38~mw)`Mc8WN}zk?wZ<;YWm>of$1>eSSNm%D z9QegzkA#FYhG^UVvdyIuG$JJPD=Ng#kG4aZEewtc?9*p#=ji`GcuFr(VBrgB@-iZEbAOGc(Jn^Lv~a^*G7PV@?gJAyzE) z-8lru+&_H^s;?KA8Y0JbaByg7Y&1Su=@`S$GJxyYdV{_pz84uM0r$77`(0va)6=~e z7+1%MKQk{r<>luyii+w_^8pRu;jRKg6)!EQArd!|R+KWLlFBLZwf_Jx6n=TVjE}qY z_-DgMo|2j6YliN0(TIu)Zg$x*zJ1u_HN)Nd-wzL$@XUOL={=HMZfcd#6)!I-!S%hJ zV?s`hk7q#FYTmyvgB;mIx0dpwo@PUg*~vEa;xaF5u~x#c=;ikbi>rv2QU654s$W^0 z+K!kX;*=u|`07?zzvI#qn!y2N@`hLpWs!$_A$YRbw9WcE*MCl@WWZ@pJU=2`p`dVkB? zA%@HM2ohbyO|}m@ir#&mw{0>MDD5Q7JPE5RsWHIiTw+P}x;&0E@${bF%{^|8&U|L@ z%6_csFIMYlX+utRD=FIhZae_{Gg6|>qGMeC4AI4@SvHGYnN#BwUPzbpp|9NK^q6&T zGv_lD?;e&%AG;-H=K1?vcQwL5>KQofqZMIFc6`9p7Dl?U*GmO=Uycog>OFQCdmHk_ z846HxV%CP)8lB&;gaU1msBBRYj4SMSFcLJu7qh|Z4ah=SlTbYL?3v6d`Nj9|#Hbka zV-8~`<(U*rdNLiZ`-V}EdY#hZE+(%tV&au3nkwIOKXzYXy~s$>3-#HMQ-V}g#}M~xT=1VZrB7Vc1nczK4JmDtZ>CS>Me zrRBDb4YT0SpOug>Adh@<;wYo`saJHeo zK1V4^Cba5OOc=q_+&8IWG#L0aCJe4DGcpFPZ6Uiu^0GtogX#4l z^2%pslSq)d^^lymKb%?#tsE~UAlsq29WIqN9OZsVkx_ph6DqUdx2Ia?&Vc0Y+AvjB-gydiW z+*T5dKi0dgw$~|UCon2RPM@{@H*Kpel{ceOK^wX`-}XG}Jp%;_^CSf2gjf1i2uS+X z9u${Vw^BB3z0NpE2Ke6VD z|5gru`4w4l07(SR=$Sv6{}?_XZn$#R992H9)MgS&H0F+y%~Vg5h_pTKe|C$y^7?0S zYf2`t5e4+8Pd?`+efBHp?!9Ti4uyBJi%ZL6D2PzbQuJ z15VA-GrwPJgg~6FtJkeKRykI?O?VZJup9l07jH+AzC=cLLm9zbiwc)-QDH6QLsNti zcWh~uy!3(yxxc@k%jnlHfiggQv_y?1BRkx()}3zAAQWZ)7EDQ@Y-oZKaKjGB0M-Uj?>Hza^@j8qGGja2m@|5Om%9ZZGt7^&JvcIcq`sDsWhcB7y7CHv@}Pf`9e@&K*9_tMhA zy!g>*3!vyc_!b@2-<*ubLZU({9VsjHqeR8V!EAMs$CTK4z!(h$0soK*e^Gc6czLZV?RqEI@vs zjw+qg^UaUBqvPY~UOE^x6qFKZ=;P9}uwZ@o@S$&Dpes`{h`1cuQ2U04&<7;LpfEh` zZ-rraTWb~)1S>;M!J>e3ZEr6;iQMTP$z4F8+3UJ4{=J~$e)J(-}0 zEz-D{c96>y(7pewNEG^r#`--i0f9f_{z86C06?3HxR5k6?`PU|ee7 z$8&5tK`^ue8Rpe-v{BKr&bzRHRVEQUd|>f}?#5Xy<-KSxQ@jECwPtDCCXwDOkP&-EER++f9u&f+ zpla3Z-n9!zMn`iIVJPc z)6*m|U!hOF@87>4WRVC62&lWN&`z2=*@#m`CYaaTzb)S<#wB5g!}PHwZf^hVK02sKm1z?+0_E{^P`v9d;oN!TvDkpmbhsi-Q= z2S|Y{^^t=ETTQJBZ&IFX*zgrNDZ4Ud9JN2JZ^ncNJa<4nO2CsaBN1ZYt#~IS*5`3S z1ss*V3ib~APIFhG<}^2O6~yuP(m}|wBfM}(!jL{&rSZhfuhd_$LO1M1iz~Gwg?tk= z%77R^HDQ5@j4SNFTe^O-o-9|<$bpjgR2<*0BgnS5)bq_HQoF@p;(1;SuG7b9^JfT* z`7{5$OAJSn)5Eq7*D+=vreAU@C;%@mG1(6v)8q2f-v*hvb-2hg95I(UF;Pp#b?ZvI z?Sp0QgD3zlz}o8KQD_gx=cwV>bGjku_+D7&GO?(nTgy2fU-&wDrB$Il5gf+CzcZM~ zR((1HXZqxMQEU(b-p4hllD*EUI}m2g+o^tXf5m(%nQ1rnc@9)1u{VK(0uL?57dT^; zb0EX1!;47_TSUg$@ur~9wh*v*470|u0ncySgcf*>{A-R-HlcON#>(2cnQ@sKSSVv{ z&AKp$OoxYuH`c07{mL2j$B!TKDk`$(=FcFkWo38w3!~f&+R{dvIBbb?d~Lgqzr3Kp zNDS>I50APRs)e%h*F_>p?X~0M@;?7>F!22R{P0Kk1VvL?BPk)_6T3KORV`{NNp;D9 zocEfVX7gMPt!NHHuNOk`q|9Z|s;aAVHJSfK56`*oC#j<9G~1_3z;+7wYxApqB0Ev> zbJqskwprYQWs-Hu`$>G_+rq{h<^Hj4$kwSkx%V08v&^flS9UFGvj>so*l%u%B<`4r zulDO!y0S?Bf=$Vd;5KZL-Bx_!iB=^Do{onZE*xb3_{2r zUHA6eCbZyA=;No}!3naOcaHvrcx|^Wb~spCv{W4-1d%XPoCYO7Y~O9YLad~8 zbSS^YeMCPN|U(|83f?|%C9_)1U|C_P5@bNVx;*w6_sslq2e7t6J>RxxxMuruSzhSp6leH=R;rrYPy6@>r&!6ah9DeWues;mw;$N37%rsMn_s8NOX zJ72^$_{GX5lFtok$7Ee$pDsdWB%h4nMSIfLasyH4w_Zv6Q(L}Y=L%muX*x;$lMD%j zvzB2a;dFRAK5rX9Ndj`0t{b}TAhi#cY2fBHtg*524pIJj5ge8KguG_TA}S(+izDIT z;qjbSK;asyK~Pecp7={Pr3Z}h4O84|2SzPki}!VCVq)TVEaMzJDE)s69(zrRH*Ohs z{rvfaJ>n}#%@#v-u&ezYMC^OFVx^Lm@o+uld+1_o^_@iBMss1|p-nuZnWrqR|0uw-`1v%Fj{4D}aeTqC~ zt3r+-ST@K0Yx}szY5k}PztC5|x2nF{j|uy1n?Cr=<_i$k`xu|X;&lQ0Ov*pIiVJO7 zMwW&r);6p0F(pKl$R_#eN1|Qqe?H|2hOY<^E0j%f?amy%u>H9c9Fi z75K~{5Cy(kL}~-qYpw;~GS+ z7#l@MPy<%LRNJ98G0qv87V5Mac&~$>JNvs-lA&vZ)9*TAXx5^Ee=>)k94#GOo^@_f za6if4DoA^Fe;Zz}I_XN2)&~?R*l}YY!Kg$>!9`ziauM$AwRTU}E9?HIW!IkS0)cR~ z+9|87e0lnl0*ltV=h}^F-!}r(fP;XjHpeO=`xqpY4>4(*RXFiC98<~ zQKEY~_gARK0mglOeG=N*Q@bLxc?VC>#5B{S6A3ava zHcFR2J)^YJ`TV8$9=R$S%b>$FSion`+8^G(9eeW19uq8YKbL@ArQ9KgWmSKHDE<&= z)?C%pB-GOx!_LB1ZRk*#m-jmc?fK>dp7-k)HE_$UYAH$f6EYA|#BtjQ-mK~WrUF@Y z^dk4c!~B0`A&?T}?<&&&ZyR`AH_eRyFa;W~1Hh?o$y-l|;c(hsV~P1XjN?VIjk%3M z8Z*Vv#xGs`5>tu)aemtI=-H`T?p4#7-82v64Q-x^jZEM4B{<-Cn&naG zGjn7K0RNl31E6O|#==2q^&T?VzN(je@d7w|BurHx2C!dN{e!*!x&xbnTMO6BWeIct zJVY|`)uTSWxWL?mdTY{fp~A z|5riFwfMF8%cgk{Vk4h|7^tZ7n@~3Kpnp+Ry@ZW1Grgs=lbUE1TH)--i&vEI^rdx- zcKDqpmzq2)afw7<)M_xM;ONc_B<*V$xH~ZjFcZG65qb?>cQzh}Y+!9|Vm(}SO8Uab zIA*O`)pPr>USSF(p+5=>NyZ!ats6G5SPS@nrt{NgU9Pnu12T6rnWta_Dj6^Kw|a6C zBe=x+bUwYl0SiasbBYS7GY~b&g`%;sFEN3?KQ0LnM*K=T4t9%*-^3U30C|PkfxqZQ z_`v&t@Z2*o-}~JAvORYp6sZRRNw;+S2DY9^$i;<=RacLO$-l5KYo54Henv=Ez9+BL z_e+U__psDqCPi$Yt+5~zu9gy^GBW+V?ATtpYe)XbZ~KeN>`zO3u+v&=lYOV4(Vvzp zSN4l&lGm%CX^+V(CErGxRm4wP1C&>%!3DiK@9j|N(P>XoX0BEdwstY@h!7b?8ZTULY~a=Xlw~w%rYS% z-;|3vNRfeyNz9Fui*r&EQWHqt5_$t0{VDS{|NLRDM38c8%ZEw*Fcr1R|AO zEUwSnLNmZ6V(vXNIvx4mf93%fAD?lQA<;K6p2tPda75|7+$ADPUY`z5Oi4LuiokhE zWk7AmP#+xH+1uNDB)|^|ti;5`$X_uKb47hT7tMq}KxE%pG%9SSIjvG5QIG6b$`Dtzp@-YjIEIny(>v+GfWvc0$*Rz9q0m z#o@l9Ub1s(>ZJSjI0D% z9NO;d7!JYZ6%Y!mza=F6UH~;e--5r-VDH|MRBE&Tz2};K(GQ*;9R&ly1Tm_RA-^fg z|7sR4EGl~P(3(S7ndVR6Uz0wpLRT@by~lPS|7?w^nt5q4{d;^o&-lA}iQ0{fC zP%>Fv`L&ipvui^Q1t^DuM(jIc=)WX6Pa*DTqnM`f>FJW@S*N9M8;0{eqg<4{u8GOd zHIHk<*`4vj*i^E(<&d(cxJ~hcevzchCvfU3lCl%r>M131nnOyON}~?sDwo~2 zXId^l&4!Pq-hY#`Hz;Yw8}C*TMUu#q8KQs3HoIfmBLLBA1qyZh!F?57L?O zTtD#s#z*=A(^em6@d_`Ei%)q(yk5&&`OA>dEx2a&-Y z*)x*|kpX>r^#;|?dCNPfC#|3Od!J)w=YT|-Uxx#zQ_S7xP*b9vZ0CUVDp;(+0XcJp zDa@BI6%?T(Bsy?*Es|Mq}~W!FPw=o?{#_wYX# zdOr2?w{~s1(kFjhPJbH-~)BgYu3uE;Gc35;60Egk63@1v#-z7%VDtyMhwy^766= z(zT!fkkF128i&m6Ho)=b#JJ_zVJ0On5d#wwIs~hr1Ge7BqL930uPA>L3=KtxG&M#K z*o)Xm^*vVxVP{HM80HZSuW20QYP)+89uXnz@p(VLp@AH#Rza(r0$skA&jQ+m0RQ3J z>-W?sz}qk1v)UEu3cLMGa~yj0=O~uE1A}$gtb4IkhDq0ODbw%E!i`ezK6*rQjvqqnv}D z5;@wgDSRa)Kv$goq4K(a$~XMeMSrl`zI$ldj=L9L7zF5}qM}07Yxn9aD=RA~kM4vJ zQsLXW>A#JiwpZ5Ig9-|s1MLv?Fc!a?RRrI>{nLAE@r`(vr3qg`x(yrunnK?YKf$>*{>xwy=(l z!b}K!GKr^2SMtx;dCf=}&Cb^Q`ujT}DK9rfWoBju6_;iB`vWX1C_s=!6aDo$4*A~8 z(88mdK8oj@oWGODDN-&wxdVAjyH<|5RK9TQ(6#gJ)~6y#R@3c>w?QKTvC1qn)7$OWc0o%c2Pkt0;yHw{`;jKK2Grg4 zj}$ZudceQc^d|$?;)7xhq~LyRNaob>*mZ^zDe6Nbjj!fy2H}Cx(@;05GI!#)rOPB> zH6>bnv~z*55DN>7*T8JnRLp$lH74$Lo9F__A9)3XL_5uh{ERl?J8?U>OV=G2cyF-_ zOYx0aIf_E{{M?$3i|SQI`vG&YwET#zS)hT1#uor!uu5P2oCBHup=D?hyCDqr zPR6|`*&CMFF*)veOlyODcyC7D-9O4V%E|p=rF=H|byD5&ACG9XL2n==L(r^q<%dQ+ zY1ifVBcPz9#O&keru)rohVRf?+Rc+VzG@r2gRM<`-3N(q(N`M5!$$S{VdT=Q{EhAH z`E*d}8WcYMm3<yu|nao(WROofB#?n|Tk(YJY}+A?B!g33P0b%tCic8~ z9ST7~;I8Kdq=QsaR2*q`cL4ko6QMBI{dnm)3ybm3^1PffiP2GrjxqZ=PO&jJ8*icZ zwwDtnNK8Kv9f16Y%)rvJLI;M<&>jnUy04*cMxc61^iGj3fp?WOE2W4>#a7|j*-YHC zu(Bq!=d~b4A;##tdLtVd2WTnFn?nrs=kjQLBGFf^Vq$_7ur`;pxVWHFl9ry~0e|D> zY-9KnEg=;ML50YjiPajNQpn}McTrR}>{g8aJ)zt75;3h|I9O>inm2-@>p%{EHkb*A zE^~_PAfCYE8x0%WO94%*O>*T-_ez%wkK3Z)QMPk)KI=Cyn{zFu3;||l4E52`z`IZV zPQ1u-qps80%M{>#?s3?kIA#=}&S9Bz5moPI6{Aa5g6r-C1vo`FyS+NZPQ8Hi9~clE z`@8n0t!2OI=kR@bPVYZ)R_y5w*rco1n8qExM6#!Zl>=VrRoN}q#I%GV}QHW4rSxnDoWc`OW!_A(G)}WI5>f z`DPL=!_qG%wF5aS%(Mw$79x)MRb}37;F_VyMO(HpRvl0QU6Jvr+;2%V9pgtvMs!RJ zfiRt5lZvWusc*~WB&5_q2Fmmr1OJ_GD{Y2^gpl(%=LiZ}Rqn7@$(flwm5rok8NAMO zgIFjT<7`^n*`{~xQ>8OMS&zSid}Yl{zK-C)t`ovNv;04#<&Q0x%v3^>!dz8qjA6Q-el2Xswb@Dx9S^Y@xXRXNUVk%xs zf>sdWOLr>4iRsXo6Xn=0Vi;>rLqxD)^uACF<}>;{I51ZT zJM&8DE=I=pPr_Cv%YKPn`hEX~B0DBM-L8N})|v69Z8^}Rxr(X>yeI8mXT28JSUdjZ zbWaDf_+`8dgW{x>m6b>D^QPmdI>56ijNF0(Oo)n-S5Po+#WYt`#D+w{yxXY|zfb3V zbzp28fcfBbVCxNDmql4#)^q1zPXt-=Ex6VbvA6~1JSEz?;X^9Ca{UB6eb#97DCLmN zbpj)^WlHi(geBc;UkM-V9tDU$G~z}^L2){}jr*H#oaV!bQhyKUCnhC*(x&!LSP)qP zp|tw92JPNNclwQz5>EfXfVu%^)Kz_59Ws!XCX_Z-rnu<2zT7y+1dH&=iA%c_0wKDh;tLh^}Hi)zsGk3KY{KU z;Ii+ves^!LDa1}g1ZuCo`(g-`{1B6ot?!Ix7Zewp&LI{L!R~J9v{$BWBN`B|JwaR2 zxL?*>;dN;Zb+ak+f+6laOH6Xoua@YX7*3ajz^6R^^}0g9U_xW` z$Gian3bmC2laYVIS0)xlDF-M_y@o7sua*-qw zAkJi#!ygL}SaczRrUsAA6#GgSe)1eQRDhmlgr0Ob+}r2-p_a{j7DBI4chof_*OlYU zNdA%^cTm}tJNeCn3gvesMbOsP$0WV7!`6Bwq_77t;(u6ElcRaaX8v{Y6(7_L-(zGf zweYy?sL8ydx!0>SL3?SZXllw>XZtt~XEHl;c6PR4;wEq>q^(UHqTzFi@1XSa58c0i z|K4JYu{D5=&|mW~2#k!3_(RedWP*&qwYAXAO$>o9JT>7;B*1~j_sfl9CBL0T-M<&y zbKp6XN7sA{nuM6Y&-XmP=uu#W%YO25sU6F0x#RO^KI0oB0pL9#n3WURUS3X5W3j~# zFem+4ziX}MVVnp)4T{fBHo+*FM_EX%8N^h({`S_*CrVw>;mp zGZF>MVb45-U9z4O+&9*h1brmF-Zk}(uEVe}P@>OdgY#dEPggPLv@WS+EcuQ+Q!Ry( z@k!zsD0(J*5+?3eGkBP&V@H}n+u4o|@#Q_p-(4gXbrRy^bL(>g=k1&EH1ghbEV?h_ z0Xx&>bdX&cY3Rg!AQuYpfr0ch9GwdJ(mDD0_270P3M5&8B7)Bu8FXHkd$|RsiwJ-6 z;GZ4n#^fC}@~~#-gtS-b0X(MPqpA6l-%O_=jc)!*{uziI92^W~GpG=bSm%rKql2>E z7^0)p10b%BW%9$)zlX=@vUA<-O7!bhGHGavln)C_3M3$!^^G0${6x&0&)LSGF)?3S zL7V?IA9z22h)M*^NVJdAb#d|t_ztCyds zl5AjZRhk7>wmtQYlQ;bDacd%JIN&SeLFO|_--Z`JDvh%cRr~~&nnF>&ucbE!W`*|r zebYiG#~Tx5|2);FUs294!igz;$eD2L0SQBZ%&fNyejzFED;n1evz~R#8bp7^ZU=PB zJm1Z8{YwdL5n{gZOw|lAC@P7$`kI8DaI*SYN?)I*s;VkyNDNO5QkdZGQ!INUwZrkK zP=!Y1Y70f7C*|aCPG0BnKMXz!i?r{qVi|Mq z{qEuV@tB)@fXz0ku4r{bq9-|_~$H$K?44<7j z3%+_qk(ZGi{|px&@0tH;y6XQT7I_KnzvJ@iFb;~kh-q)3emHQUU;{&tFr~qNM|RZZ7ij0WSi)HAY)AxTPslMtB;P@ zW@A#`722ExtU+ssvt6t_AGd#~93NowCjdsA(xZ;1@@c?70Hy8x<2~a-Y)U_f=KL6 zEew9>@TVMhZ}ULrUQ+R64kU0sgJk#L@RnhqC`9LmsC2}r_HwfV>N+~C%3XkeETdfK z#+uV0Tz|+vld&AgN%a#Vv>_I=W2pcfSsA-3Qn_B0m6ZuTOO58N|H7wLOaiSQZBi;W z$a_;X5s+NBVM0JX%>7@6GsDaA3Rn{{#7h=df6&xp2TV@7!sLvczJJ$m>Azoo{fEWA z{fcNZPz2K$_1;I1r`zyv=bYb99l)OfVZXC&y5Mlq?pJ4JK^B3mrekhPN)CM2;#)OQ z_s>%>ZqKGSue(nR9R&W=`fmwG=fEmG(K&cMf3ptIEL*SSVr%Ls%!62Y|5 zTh$071quH{@Arm=(GX|URl@>VKm3w*gP$S*a`A89USZ3Y-e)r1!_k~GD}KWm^JI`FMIEz4CigE=QT@hXabJyp{HfFl4*1(FnOPU%Z#&^ z? z1VbPE$C>I-3bO+eOnMTm3GJTgmt?y*WM|0XNl^OodNFVo?e6Vit8#HoyzsjSPdl;) zkERkKdfDk8m$IRX>IKYQTT;~KRSa-9*_&zs61A{H1UAML1$-*(QA!<1HP zLoTPe*RM4qR_E}PIUJpx1IrVstSPP}E#>$jkY97)hX)E!4;0wX+p9wv^5}6S&1BIh zZHD@eqAE$>M>yeP_T2)_J-up%g?8WjbwtZokjv!FOA6-fIuYeP6&mkK6<7yuo6tQ4 zS>h}6%%aIwRzt+^ZX@bMH!bpPB=71+ zbK8<2@BZudsF@~#qT`3CHxMQO$Z|@^eSmZ}6>}yGba%_3f?I`bajBA$5}pm@eyA3} zsDa2#W;or*(GH)0z)KivCL>LDO|2~p7a3XCOJ^i0Y<*}uF(TGs| zo_OEqeShbiF}{DkamE1lX5Ag@UTa=+&TBHdQ0OSDOvRR{N7U3FPnBkTE5V=R;wC-e z!F#L2I=!#3k{n1a*ok$Yil%g9Q7D$pdm*OXJ8cn1OBEpK4$ zsc~lKJ5Q>@QDr5X!zmm*iLMg32A z`-LmVCS<(-(7eXC-dy0OTh;p87T{mb`3u&6CjP&8!C=!88J?)RxF!YZw&}oqMB;mI zF?*W9lx-LKJppjc^cbI9(_^OX;^d(n!sApq*G;~jIpUs*_ODlsIRw1lVxXq)aUvCm zh|NYJB#5C0)|r2uD-0dg468jUx^N6F>wnXj!(lASgn?drn_k$nuP~gx$1U;R`>UY3 zl%@D`L@H9rCj@ef<;P#4Pd#Ez)Hb`ftw(TXyzwo-BP1#5CyENapyt@SoYL-A|F6d8 z?O#3<8gl2`IefknX&yaE^h_T-Y4pl!n8uO%(^nswUs#X}m=;7?>r1H|uC^ax_;jd< z1LV(y36R2a?%CBVk$Lbn#WvIZ^M$PddAWq6?z1W6rXNybpZj^5cbg3bl0LD%dN*@o zn2$i|F;_idc!Xe0v8uJ#sjOF=CI@|gLra{LtFvDRTC(PItil-<`3ftzw&GWdoWv4tR z-nH?aLYgJMzb9ZqY>E~Uxy>d2L`17x;$N-BvKWcpDAnvP8Q4F%#l%Y+pC6MB-zS5- zHoGnKv#Q(rBYVutXVx*GG&1JIiODCoA0N^EuB0MaUG~wFV~N)_ZBBNfH%ZhrMJk9! zd#uXVKOEWSg7#5$m->_Y{)3+lP9LEr9&a9!RnPCwk8_0%1t-dcs2$*;$=i&q4}RQ% z6pqYwo=1sVU28k?`&zz5SbpSo=3@j}GrQ=^l=8w!)TUL>YT0~FlbpnzJQ&2zkXksb zkz)CrL_{XB?rUtrB#!9TnWE6|8dI`$m|ubwhm~v7?~UxsO@2{q%x|!x-#Jsk9m*!r zaiv2lQ%FG+o;TV{3uO11m4%kNZ6uBVtd>t?Mf!hMTaY2i{y(d&+3p>pV>QYuszAmQ zfGb7bboN61z(3e|3b{g#XGUcVNnb%!3pn4;kP6p6vN*6+2FiY@WJ&&5753dCwFtT4 z4C}B0%{s-Lrfvkq7SuIVWd2tw^?w!PxaqCGHG^jBg z%u6)YzVCuJ-+|`0SHd^B5x5i+&^e!r;R9n75r7l)-v7pPT)_xDye!cy(Ly>V%rTrQ zvG=Fs^wr-zx`h_|w7&_RTuBD=@M1w!1~Z*#7S*{H1#ogS42xjB8}L$HJPmZsGFT(1 zPJOsjCNcX|uUJXv;I~RmL`UB7ibI#Z+D7-bf~T^*Msc5bDk;T8dd{khk@0M7<)zFnP9%>wo9PL@t6VShk zi2!)7sMNGc;Bw!xjS z>)W|aVH5WQNwU8s~R) z>y!tL-R>PSChpnezCkn2+1GnWkfw$yXSbT6{x@ITDvBU&C$b-`+RyZ~MF>A(f^9-` zx%m7UYu%ly`d-vKQ%B-}rweQf&c(tV6lAYCs-01bn_AL@jz&~6aLT%-eEgFM4;)yX zVT`hWus4S}TlFYv1=tF^S&vE+b z`RU$Z{us%CX?Aj>PZN(QzPjK z)J+^dNbsty0H`^6F@?(llP^q1ya^`> za-l!?R56wh{R%|>)_7Boon^nCY`VZ>9r-O^@WpMX%}}df=vb~wVGbU??(Y(bC({U90fgVLUC!$!t1_Sl_l2Wz6M_uX^6e;QohRFURgSd%oR zN(t!_`IQYu;rF5W;i#f-8J)>o%7z!18tZGB6L^)#j<1Fr4|jtEvX9>yJ1&z6F@S~P zP3ek_(4fQapwb~R=efnYi&r`_<^ybOglw11-V{p~yl*q|$S5S)V6G6g_A4dunROes zMA4q5G0ZKx{nDM;b-8OSQ#V|_JE-67strg}G18qL9v)|%Fhnt#cbsF8+NN3a8=Y=S zz5}kusu{nZE^@Gj&V+v|tuWVU9OPhIF6?!9xOafV4(d|fG@E!R)j)UKY(!nsZ57Nv z4Sb+-$mVEdzxe86?EjQciz-E8mQsW2!@xC3mC^HZE$*hm$bORafA?=4vu2uWK-BB? zw;bj_GM&o1z27PDLor@A9feEW`YmxaPqHk#cp?~z=D zoZDlU3f5ahQbB7>5yi5|#(6nOhp=9txIDcWKm*GH3<96@nOR!;fz_%PJ{o-6SPD9* zH{C}!C3XimmQ!e+>qkP?d-G!L>;*S>kQNZOk0@@_tREo@9aC&57*nUdZ_%ZjK#Pci z{q)7BxNTg6`LA+&K+1k;^9nZi&FnWVme|X=*LXg1A_IzZA94IqZ$0?BT`H>jU@RK# zAwTAT-Tg1_q5@S1?UYEDyCMZQhc1g6y812W3P z?xk)#;k@*6uwDrjx^)82Io@TK9r~YrOV5cg`s6;3UY#sRJP3sAyc_lJ#AntM^zoa9 zz*-OgtC0U+1EN5kNlD|opUJWAFlN1KhpK)8mn*9LAPtm&BzN5uB*yGg)$lkpG{jgi z-|TsRhF#waD?MHu###S@^WIu)j=RXYykLHC>;+R?id4~X;@4Fdz|%7nJd6I@SMyyX z14}i7baSALTE$Or-Y#>FaSUg{Fb6)Kq#Ip|8@tBFm8v6qH&_)>x$8a+#`5IkcSV9; z(Wx9=362H8>JD+-zM?DaVHY9ywWy=&_ zj@^%Pw3P}c9nC#F8i~so-5Aqo6iT#wq&o3TpxjOi$(ddSer>fY2-r@H?JtghTlHs? zVJLGC$}wxHh|d0u^+Zew{GX~_f&Xs`;_zrqiOwR$A>fsc$;lVCW&GDJuu7w7N;^KQ z5SF8F&oj@3GrhJW6~U*dMC;sK%1=)0FQcjLpI%(E5lr$3Z)=UIeR*}u;}$f5NG3!R zvv98dZSV4WXwvVKB>T8+MTBk;qc?6F)RbLvU5spQCAS*B9T;4wkNV7C)Vf0MYPu&| z&uy*hiLS!qkirF^o=VUhL$XVg>a7vWf|l&5$t%tsMIpQ7fY&y6pU-{e+^Hdx)j@V9 zlz!b2iS9*=&i<4^jA$;#$o*TX;t_R0)@>7eW{Q+=!}h=loA7`siXgneEAPLu%_rof zfF(-ezdv3Rd;V8Wyqev$H6vpMAC`v4{TB*GIqS_Unx1X>=~7Akd-cCzmYl#tR*ia* zfVa(`EgV~Bpq*z$jcRl2p3pY|+q?EsHGscEy{LBZs65KZ`$mk|$3v!(M5SF{OgzZP zwRZ@ie5bT4DtR0cAwRNlGYBka!W+4viPGi{Hao-M@dg#}ssd^kFv&XXGx|N_Y>yw( zyoU+vs>WHY-+iocDn@KLob7;AT)OSD!H}r8H2B6%s6;-lsFu>*2)#6~J0ZxlD<;82Fe8^~`;KdWwiZ^v@=AO1+*#Aj&7qKlNI& zd@{$0h_ZfU`vSeqy6df2dkC|-1>du0+bZk*%4bhP%I7OR%<}Gs7O1v|Dj(&EPx`z; zVM_h#9Yr08A;m&XgT{B#MK|&2@Y3Kgp{K7e;8Bm!-Gys6!PSom{aafwA&wUgB1O)P zA}LEM)^_P))1NyI`fKQ(os-1izz9{k=@?ieQ0`&Vl>fkUtC#=qfxss*6oQ(=xvUX% zC|bw7Z+S5zZA0U~nzBDk)ASW%$QsimKlN_U__6WEe5$~SVx?5ROJJ@c;<91mQrx62 z@bl3#FJFvQzoY4_l5ZB`TPF+izl>6%92?vzPThx3{fC@z364Cv4)i+m!vD%sS7Mp8 zXdlxrOtb5D$-i@%y^EE#Pnn*cUKJ0?NcU@zhE86jyi;M&@toKqIOwY^T57PmXiy;C z1)Q1OOY(o_pz{;jjsKsutjd!FI`aLi9y-6G-PZ>b^vfhjb&Uv$h5M|Xf5xO;K@&j2<4{$u$4Bn+ZOrtOK{*?V0S?`COr+n-~rKGdUD&yc! z=K};|qAwJ?z1h_Ms9kv4^_gbbv!8D3!DgwMxhtaa`NRFCBMYV%<~Ox0sOzr}>Ess; zVFf6Y;HeW+G<4x&qmYszK}A%hOX2LRCk}l_W`hgq4bL^_vc@XQ%R?*#A6r`ZbgyU_ z4DXxn0D6sm)5`s&B>^iF#x)xv+FbZb`^TW4)ekB@809}R%AazJs!WUjfKBl=2eiPx zPO_9U=j9u8$SVHo6?VWKvH%hekKiN$$Hk+KVFp&#Ks`|s>yIfO(&G+cFjyNEku+Q`69pke0odt?XL~dQGfnn}G@>E%X~4+i%aPAB&IWA1H* zf;~1;l3m{D(^7CH%CrIM)-2d%qsxn+?DH5@Ai6BPXj=hv2YUbcC~`;Xc^hQrm|| zCJRus+J4}=bPwZm!c)9;%WV$fi&njfEP95y+c^#FsfsOX!$vctK8)!Ixp2xAjfXS~ z7doDw?N66=6U=o4R~0NG5GlQ9v<^6~5?2TvZDrILo9NC2;Ua2Fna}-~o`$ImHHCI#hCNk^dtAuv797(iuLT_8iDs-$9bp2uq4DzJDWvyH zihCj6y&*J7cYJ%JnkSuOMW7uu_Mz)ZGuOuFkYt*>q+h;rJuf;f?haPOy;lP?T662= zR#tgP*Y@5{quL$Ea8{m93?e_tSNn&_ce(Ot@o><`mHO96i`5=ymg)s@yelg|WbzD> zt$HxNs@}dG#gSHgC)V8a-Y>1WG3K~ z#gTVaR&NHrBEaMBU>x>}eWp}@POIXc>TZbFB!HDJc!{mx7^Z=#Z)6y&K+5z+*4_E1 zw_9QkoKrOZ+nDQn(&A4+B7BKprnfnKp;1`=YHD*iX)z4mdnP{Bz@1-*6R*|7PQ`TW-u&k~c z-Z`?~U8b0K(NdR9gxP*6UP8G$$KV+g8DZV?Iu=b#smTrVn=}= zd$O`9t;JM`u8%66h@TdFPTdh@{X9rbXPXNd!wMN4Qe7k3qYU+yjr&RVn&UF8s_;3< zvl5F+79_l1r9wILC}r$aP-S!U9v$#@usS8a`c!$|q&k~ZKfOU#OHuiyckv`|R5?pR zDbW6`bU>KUkMKQSEz(TcXF?>|WJT*+lkvD-Q}gHL1T95ja7tgD18yqf{6j3K$o8h} z?&Ukff;!gPnqv>hnl{V_NW#T@M$QI?-0%##_?f`Uhjz}#)%BvG!me)38n72{Jarx} ztbVIGmX5s`y@ff0T#Vj$nc8B2DJM#Hh-6JB*j@Zq^>B0Me>4+5zJM?az8Tuh>st|nmov1{f0D-=SFO|>L zQ4j%d9A#Pat00pLx=b|Uy&tXaaP@fHFqQ51HJ7sPesL7xPLn9;%;DoRcbjJ1bfpFA z4*GblHs7@B{e0rHQ&s!$9^k=f=~W)d3V3+Mi;zR-pc!|!L_0%(e3NaVJIm0!%H1gV-4o@JK=XR$C5` zg)e1A!OL*;*{h!uTjhnLXJ|cs(t#TdJSqihoyh3O0K?^7wzSPr5{Lc*dXBkLe5^=F<3B<7uy_@+j z%?Z&(on>BWONZlBczg)rHV`Y`_2da;sxv%9TJNBa@gq~VOlu#Doko%*CSln|nQ?DagbE>WS9N@BQ_R?VJmhw)M!9{08yvX~n#@xkn zjU(6tx0W(b`X`e~{S*tC!(U*jR{Pqi%P>pF$1)pI{h7mu^Mfl!N4cSP6p|PoikMwO zGAEUbA~w$xArs-FY+_3#mmz3fmVNr$QRewTqJGuujTeV$JnhyQ>5>y@B%lP|v&sQ} zKXoGpukF0=0)FqUAK@x@?HJdJ5HTYL@As4bAb`VQThv&L^?WEgSswQkL zPYdfS|8^t#i60#`2_h|edn^$i9#KTUqb?M@YvTTVGh&ALi!l`6E~+Ai3?d?4KoQS?;S_qW?Rs;clP%q$lC2AKm0w?NCwl>3A6S0m#&t!Rusp62N;`JllEw{*(hOX0lM_I%09YV1jHh z9<|@(%mMk2+WyYCJZvq4_AaJEtLTEFy;-A_r)^*KOS{A_IE<3sOdWrpdre-)+}Vj`yS-=khdA!2p3Lng;prl$$I& zf3Eo7#T~o6{#_E?N8p|4-zlJlW{Ri(Oq|F0W99#D*g6pVUu}Xf|KFOu8g+^$3czf! znL>T{StwI+>DrC`omf=VQ<{4kR7HD3)t9oNQI1U^rJh#vgsoAx#cpZHC*VD)SfeNo zfe9XG*__qj2ze8ZQ9?hg)EOQbWj0^I3AFi7o)=-A2mbhYGJ|T#{%)>Jp$_qr#6;f} zo@Q>7l+(b8qcfI9Kd?B7-1J37=RR;Pg62z75Sk+{mj#t5Q1R5ZYK0qLCGqdNi|wbBS9ieTP0b zzmq?Fr%K>zsLxXB(rKN8BA_m*5+gk`&V5*14C~Ohy@|7&|CFn!;Ym*d2O7j?Jug~! zeKHjfNIQiu)*lL3awsWaG5D_A-Qc3-M_Cl-{d`gOmedbq-3OfeYLw4mCRZHTWpXbWR=uaP$>G@^VgPkp_(B@7B>|(KVQxqXW@D{ zBA$CFVjM*Bm_Yo#z%pb#*5VXti&1`D6!7K3c3Cp?NPTZWQQT#waa`d$aiThdJ-nAA zOuA26aVrX0bn-A-@E7gK??zJ7&F+t6%tL0)67m=u_Wkf};r8(nAA2~Enu-m3Ng+{S zlXk-iW4$15Lt*WBb#vW(;%TI9u-Rw|hY=3&gJ@&I(kUJTt1QLk{uo#brJonuEJ-qH z)!ZYXdnGC=3MuESB7F{TiUxzrS1q{(XoTVc8!~Wp3kfIVxdqKSpK1XwtPhdie-8Bw zKE#YHuI_-;)ap0iPDCbS12=b_JWQoAyxROM;v(c7=Mdz)$=Hm&5X$_wEr6oVW6H-v zZ_sDE%FB4yw&r$x-E$PDx%=4`2Zn64<>#{~^ph`S_C{1fq(aK>`S92>&#q|#OIP5F zY9qwPh6fCo0ksj~SQag@3I}G5grOnb$?n|Tf*JVB+VL|H80|mcrQhM5^@y`hnx)(X;`DoS1-o|i4w-f406fKKxX=LC{@DipOHSYF>3TUM18?;pBmXl zDcM5)-5eWH3qdLFCkdV0Q;7C}H*bI7#T>aO;N@S5%DU_DV;iDilj^Smm=!BGc_ggr zi`ej6)e|JxyiBJSRJSWKm2y4h{{0;d!^Y)P8r5^}FBc7V#69S2{cN^Bh4=iGqob%ZbK#+Ys}+8nLFwz)2> z-MKqvmB>d>uADbS^Zkuk`C>)IKFcz@w86u_j!s&o!~jK$n>Uzpb4?@@dPl%wo#c}A z<>E~Y|FtPN?-i|lR9@vPc6Z#5a@Q1hVP6`WTd&WO1e0d z3S%Q*h7?~6_nuW{N=GlbBsSayr*8WzEECCq&)I%Tilm`}5-aL_o^U}rxvxQoYyFHn zr?E&juv>QS{uCO<2Ck-AQw7xcD58bI4}SKan=B>MdCb8&p$9g ze=LFm@&Z19Zdd!AkXJAPy*})B!Spf4AN>#7<$=%eN%N0qx{=Cp@g>5Pwwk;D3;FU5 zh=0oixzPwY>L^BkZ>FMfyL)W-hsSFEn_yOn~ViuV(F?dS?{gldO zk(9y2ln>7k_zEsAEmdRlPT+HKaWOD6AFG#%TM9x#iUDbvx%bHadiqOm*rK-KCYLUC zZJb&^v8>kb-Bl3GlF^kxp(I1mcyTWPmnuT9H9+rZda$dPA^-$GSQ^PyM9=?z%Q_?v z?iKYIkhtAs+Bq)W8^6IF6wcy|iz)!_P!)jNS!79qdUZ{tdF*N5O=ZJ>$Z4J<_jt@L zav{ziFg7!!V}`U{iZ~u=ns@cy-}Q{ux$hLw*$5J{iDiX%5!#Izn!xY>A&mKt3bE&S z$Xh>0NKCRSvG{(nG2Y;pGwP zcuWLrB0#6kCi-;A&n*$0{`Z}>%g5>_4GauQ>|x3&w2w{iQc*>|%~MVT+dYm|M>))& z$fl%3+}fJW$JbYnleE22C}%kM;=*NQY%F8z;JxL9l&yP!@&!*;COR;Z)!t^xzR#$v zJ9~AmSz5&HahA3hC~_qxsKckHr+3D}8u=1?wZRb!^-%OI@$Nj;H15xbbTo)%Va_p~ zXQdg$EUx%laTT@#U|}T~ucP3nXXGQl`|-R-5?J;7buMk{5sC;{dQ|Dsn6drnnOpdF zOJh~rz^-MqE~T;8<7TSn>nnEsH&5kux}~n$4S7Qn^;m5e7M0N|5944QWkXcfkrQjz zJkQSbRzq{0N~z|yx;t6r@ExxB(F(sPrxZOtk4t)qT`Ehbm)h)w;^}#Gc-on{{BEne zzq5VS@E%~{=vrwZL~Dexju{!}?wZY2rBVwD>Z4rjthgdrWfLCMIUYQUD2w%Y(hMW* zIp2@;&&+)Eh>lLb$qT9K__xM>FV9?RW+n=7>0w}C5M334H*a69TwpUF$4(x*2n`Jn z@2_V>J`jB11G_FN$i)X9!IAm-Ol4(d3=P?gW2xP!Z7K+}jx99Gjw&SplK?=ZtKtv_ zaYgV&zT}O3Sd2+u}{wr_uTPg_k4(T#J@_;bBZA{0rSE~_t9dQ`;KoD@TaoG~ESwtbnLF2Jd zo^9rDJUCp@f;Z2mB;eu%BGW}*c(DM|&6msbdd)bRtvCUw)T3GZf zrA*Whn+t-#ZVRlPjnG-6hDYc^UfW?nA)kL$YQ z72HHrY+^5PW#>XBj7o$O_^m=-$FQ*vZdbUkAJWp^1{ZGF6Pta}iZ-rmG<`m*okUr7 z)9)w}os%|Vi`i3JEk_}@F4&>2JE>#N@b+u2 z#4#~^Hq~JGlT3eN0&ZPrqqM8Xrz#*vIGdaK+mXsJ=QLeq7!>V*oe^0=n7QgZ^oqhX z8i*AX9Q>JUy*+5NOFAGlNpR>8w^axx7Cs3{Fz^pmQc($oJ^#_ii#w}YDYs_LD;S28 zdtQ7{y;e1ci0v23F`)3=XiDsHb26CWFJv!8H5M?8PLi@%YV)7kfCg?6<9hmYTVLppGBdN0C8hk85sWtsMFNx|(mNgOP3 z`U0#KyyP{~^^`Xyr(m%Ct5`;WyC13)u2)pPZ@9xnOdT0$go+LU*ZJp~z=un)qFnTQ zbX;7{cwcCb=amEz1;w3>mY%?V5d^us&^0Hp=^q)EhY2IDK0uPv|G?Kkd<6zZMhOp(hN{B*CI+1kF4tcJ?|BfH2#`FzqY?@!E4h-9 z&txOGH8AU@`&YApt=>TX8{c+_iHrNtTeEI)F@)3bd)1c{H5Vfd=$bSuIKHvY;KUWA zZm%WeQQ0M}zm!ES=mj|L8v^mi+{xp8RSGrrlodV|DR&>vyNtzs!Db>5V>}ciMdqMU z#XcB!vh7%DIk|ATS9TpkiZoUWzx;h-<|b8qIcZf?bZR{I0M$^un0UEl{}C%IZi*+I z4@6P8nY8Iv^s3q8IhRX|eNqH?T%iDbDsx-Ct?3myp|4;?-_W)g15*FpFwRm3WQAKh z^gBj~+0TZIslg!Q5*>9-oS`Qr7J~)AzTI$~>g@r_m>e`Wnhw^I|auh5=~u;i2(Mfy*JBB4s+! z8!)8*^fj<=vX*)M<&N(_z<*;{q@<*}m8a8lDZeLsdwaDFLvKJ9)|{-Y=j5Jg^v0&9 zLw1v+$|`qA^Gb^*9qKo`Z6^Af-ZQS_TU0hwOoFFt5j!xFFH~{otKeW6$8;I+8c?mx zF26q!9sBJBnb7mh2mP~Dr*SqpyTiBOqQ8^G0}d) zd@QrCXbKu4QU9y~P`Q{6qIscJQL7;%V>QdcM12KP9k0`P#wWS$8m7R^QP~)Con^#;<97y+_%?I@H8@X2hxTO; z2SG0{LnQK=sj{vHOH@whXz|JfPXSFWu&2^2-*y>|vt4Y%_{wW@3rLcxmlv=va|oW_ z1;awuBZ@aMPap^g#_EB8p;d0UgC+uY)c*j*cpi*#Vxj)y!ZRc4{}*wv|AOD(LKM)y zIz4!K){Yy9DX}QA*Iij^f8cIL^^&0P^WLQeKkvSV_1eSywh^ayp?Mu0o%J`^F@NB{ zf1*B4dw{&XMfSR79$1Fxp+Gx0)r~1smYYNYM9M{kZuNnr7d*#Utx;k$UBBudut=c# zdu=ae^*g=W*Qe3#(yAinzimbsi9cShTIz(YqV@O{j7Wt1Nxqt(GmkN4|`t~}Qy zF(?EJ1;Un)%PHzDw_em_-a2OK?^w!R+)S;4#$j5#HiZ>0cVGSkQTD#s3^%XAI6D(> z$mp^(*d7Cxb6&f3Jg6!5QUskzGq5y^8`|k}wzWOrGNS1^Zmd-eRP?uJD6n;@D=hmJ z48EW3=qG)@kSR7th6WO6mY6%#1E_yLMFD}ZOuL<5Yimaw3{X83{%jn%y+Od8)6&s=W zGG)yssoAtVWVHk1()gL*S5!!|kQXb1{bOkMy^O)2fNVlYR6-F;Zd?j@Q$5B0Jeu0} zZP}PN-(E{t4)Y(YjWX-LD^!#-k=6lib$`d}W`lHfly5)i@&0D&`k=_}tNH~Lm0~1e zSLcfDXKF_9*= zdPiMX1Z&T9SB4NJR`=hE0AUO+)SxWl9Jw)?7V>Yo9vOMJ zi9%uRS%ahL3EUi15O9AukH4qh1k`3;M&{~lPxvmr%w@bJ!HZs^y2sS<$PZPO?a4b% z%MjwoT~nMz4Gorj+56wD3Fl!$jW#wZF-Iioo0pSB`avxOkBb&hSna2ekmkFmZZ90y ztrS;(cWVe3;|hulB>?glfJHvW#Q4?jHjrslT0R#OLy~#<64+gM5B+#*x%P*QTQt(A zf3d>q89cRH<-2=5*Px|Z>rmj-AhTD4O0&x6(;OA%<@J#*p~K);jPBNq25#UI^_MSl zO)I|wdy{|uOSn~gRcd$*?bcJZ9>YcIzG;qEY%}h=#m?K`5nqkJE%5^h=^?T%sZ~oz z(ET%sUaEQCbg}C8|j@>?twZpz*VTG85zRda}zTIX9T?g1Ny%Za(tqK7b4jywS-`YCrN-E7f&I zxEG!_>JL6x$g`MgJACUi#^rSMQA$wQ6AhO#46uheyTJ=R*C_rm5nuQ|&;?*q{5poG z2z`(QCyrEL3Zkx1EWkNpU@R)k&+DT!MzYtDQOn2UOZDYZDp8wZ3{BgWCA`jl9RO(j zIRsw>2UdnBW#2J;t>G=>)i%#xjd$fnw5&Aowzai2>6gsIa}`UBB5wnL1{e}aso9fw zaR_E2LFadn@rb!G0e&F;>ebO13E)O3y<=3p321|tl-_2lxGE{#dtmy2&8hfQxST}L zi4E?|eG8yo-@YI0AWJ^qCqw5blZP;0Qb>n6dY<6x%$jV=7#{4K7%Zo!%b~i@$`RqBZ8u?XSn${TeKr+e~vK zY52{)At9I`P#QH44^cuw!WUEIrpy=7b(5byeTs^S$$TNW)g7ReSmLm)4lJzzG4$g3 ztsPdKu!x43Z~on}xN(eBIGuEECnPG5pFem&d1%U!(9!yiG%_S)W%@W_f_l`@eCp)B zqOSDh*ucp)+@F1zZ{!OetNIWd)BW!6C_+1H6*q2F{#72-+d0>LEbj> zRZ84Xv}p7`waTfvGMut%JG?!;ik0zDQJlGtn|twQcT8;qXC2$oH;Xp@_lAQdAJUPA zt17Gg)JjRX^Twh>WvXJq=<9LgWQDAtPLo9g8~;<<5%G)jIfA3regp^?p^I*G4L*+6 z*ATQS!YtJXHccfMyC#TTs>(pbbRILU)2%l?^z-$<-v2d{n^k91-=MyKK4n!AyoOcP zOC%|k?MDi9O9UW9+@b?`DBV02Dz2{F=9`do0(Cfmnzgy0ayG^_xX|_G>1h=z1n9Y;RCi^(G&ZQs z$PiO7xyez|v+pb4^wCOJzXl@*9oQX!9$R-zd?OScSG?x~O6bblNbbO;R4FuaNF4I+ zBsl9^*I+8L9gce_V#VBp3t97WH!qB%I55YAp;P+xuw#8zVWzZ*@WqM5;T>>5@CkbF zhBd6b#o}@2J2?E^as@%1bZF#>9yjl&y*NN8S{f3;B*9I=|s zD&;ZTb2SevtShEUCM?lv31uWva4FrFKgzkoMKIC-+5c(d6a>jCUrXztnc(EXCa#lR z6B0Etp3_bHaB#6|qx)k@CD1@Zyi}J#%ga8W3h=alKi1wuUU}|qF&>0(yZpayzt|9@7{q} zmtveW@#n?+8Ie^TcqI5Vd9m2I^za*-(&1dlC_3ILHoX+fu zl*#p}tpxr!#<{$!jC6fI?0{vQ2qhw4nh98)Z1(>2O9f)EWT!uV(iEBnFQp>i?`E7I zA30Hc=&q5iwf4)=Io4B&smP0FVxalsroJ?{Q&Oc#U9c;#HfCPuY6 zVNui5nzD^P4i-uv-#^Ko)f5eK~U{j;iZ^Gc8*ZOXjTb$eKxYL6V2 z3L5NnsLftQHjvg$y~%aOp*%UU9o+9(a2&f>{ZSZ^W!MTfH2DvsO`I}!xS8IwF0Ra^ z?c}H8U@A>ah1o7hKRrkOM&H%n-+A+rsQyk!`URjkGdE{~=5bjY^O3zk_~D`-=*i&u z76b#-Ad6*R)%DBO0kDxu98G9GtL*pI^Vguotg@Z#?r_#!?8LlZW<5w*+}cNF4PRTi zT=gs#bsRUb%oMY->HNxeqV3@?yMNj3d-XT-716r~2+n+RoXH~3rF{8w1TY6f+ew~@ zLW)G`gU7%GCZKNG=d=pTHq#~lkpx!!1XSh-w@7f<-tokRaV)P8)^%z{JsdTlB~fqc zK~1ecZ2Y+}Fq89VQMY`I*(H{)kDDc*u$iMg`ilDy7l5zsob>Cy%dpY(w-f~0BOu!! zdUhq}b`PxY7Udk19N1zdFR?Jt{842IfW(S!4szLFtdMS83o$Mci)NEQ77^!Q+z?RE z1xic>QoeC{qrq(V1-^3kZ-WrLIjp}Vw(qJQC8o!wGgx^lSm5Ch6dKwJT=k2=CCm2^ zW3q>OypU^!vD4MUN}T=8zq-hJmJ>go_k_&<{6U{`Z*g%^mpjo0xB?Mlqt;!{x_keRNLshA!oR!8gDR7N1NbaUpQ7j_5UR)dKwdwWDY0bKG1KmYWgdVX12Usx zvlt{aNX7I^U5CfFLW^g`C9dzk{nI)|`_GsDr@!wte541uIuRc0x&suC&Sy3Yo*5|rWH=B#RlQ6C0 zb{;P_sDD{<7`u4U*w8RgAR3f+*k_9#n77-0amwSWwS-30LqMm&z4%e3dHaInn$T~t zUZjDwLgZ>LG&S&k<zjB;t;oxIs6Uyo^>4w-i^)9EUU%Fu0i zZZG)Wrq$-hy>|CfIMG6GxYD{^Nt`WA_85NMdHqP$ob@taTXXJk=>E>>yXkad8s15- zdRCpS`=_42hOhlDWQZc_bo#iG@lU0&pkljCtbao$JSX{p_w1_dlLq!Hox-KOB!#$h zJ$w+{%WcE6eg^?JN z2=WDo>jYs4n{wI%(Vt}2h!8xsva|c}8iZf)29*kG=$PO+Q% z9sJYOaolE{XN{71WHsWBaaupy%sKGX`W@*`P?{o)@j+TT@~Usbf?Kb<`{CaDU?)=3 zQu1D^m0KOq_ta8=m$OcA$G4>zmV)r1xn(h6| zS6qDUc=ojld^VrFkj11#5ppSNBHXyfbve?$nLz!Ep?D{g>_{?tz*rkJg@s0ok!V#f zq00O18V)Ww#iN+QG?)lgnFs;P-Vz9iz6ccWxD}B%_FEOwyCPOv&e)=t*Kr+fFBN%= z3cN~0e8q|+?B3np;!bS(yxxULe8jK2)jwUdlrORv@iPeQN*fZJ&UZT(*oMN8b?3p^ zlYRBQk=T|aNx_C+?z5OBx#6_@>ekhoL1AHj6Xt}nXeS(iD}W^q>$9=&Tw~@1fc1+f z%om5Ir>8BhOU+u7lk(1+mC`MYK!sZ-mi%y);Bx$ z+hgbmD1tJ5-V z>V=H(5t3IkmA(`rX$21(?j_t*kN6muT7!|Ai6~8h6mx1k4}Kd7@{K)edv?CC(CM?+ zg198@ySNKfwu?Wj=@t^kEclsU11Rva-Zo!hs-66V{sQuvzGk+!vvtoYa34Cz2ir03GB{ozi{VeM? zwTbqlmdgZuw-4wKtZ>@*oL^7B!ZQ?pB#6h%lE2h=x)OTR{A2l3f|CZf*JH1lOwE4v z2A<=xwEaLh%wMx6fpD)lJ)YKSRgr-h)T6lA_A1-#!!-KVsZs*+1o|V_>^_fsyv~#e z78PaV52qjXI9uLz*q(koEs(EC@JD(}ee16hvo$$y06M?YLuFy_>J7Y&wYG2;EVA@w zmXKUz--t<-SAM#))h~XEUYXbmy4WBc?3Wjf7sgvcz7@5+8@P{3-6Ov?n`74Igj|(? zhnpZPUZn#)#rE!ELs@Je8FXT|=e%ju&7fL^fMAiP^u<|+E$ht{Hg`gKkTs5YdA0Sb z8h3%UD5dT5Ox#}Fn7lrGI&e~_r`a#a-TJeFu$dqW_C_d{#Kof9n_J&4Def%oJyM$C zCtZua+vdJf+VO#d#)qJuak|MpVtMq9gvxj0FcuT?yj3DT*%&J1kG$Lbztzk)oBKM^mcatA_fl5 z>Rn{mRbaj+*~1|p1?P4j{K#4kN-1#L)F%=8MIBpxU`JX8_B@`j*2P<1dBVQ-dkKYC z>VhAL5WAkQBwS{)#=HYDn)#0h2M50u7D}3#F{Wo^-~(dv^>t$q#wfj}h7=@G7OiFN z?(X9HHecfn0Aqu>xyGpr6)vD@pT~;pTN&*b_LC0!kmE50o2da0fUEOL+@-D36#edc zA}48=;+0t}-pj3=vqLK?N&UK?4+#kqzc6Y2c;;khe0kDvoiq3yt9|+BP6T}Ur)VC_ zJv3Z*`i9lPw4EiVO=PdfJ=^f|P4N;dgbB-qZL*e`L=Rkse0D|d{AX7eU`8=|sqQT8 zVqKB>mQ(yG2!R3xI&wWU^rQtj6}4E`ca~Zrt^^~w6~Djcq*=7Y^m#nGUg9a`LFuz2 zT=?r)WyrDO{H4!pz9|`5_s0{*8oGH6UbvodcRJYx8ZKYvN_93?e0yQ>g4Hzii(pvP zF8mE9ND;o$;x->8iqdL){#K~^98aLbZyy);SMVERp-q)*5u@7Z4t)(9-x7 zXF;G*8G**4QQmzr)7BlHElc%%)&ML|Ik@paW`QzM0F-JD;wcZJ)DXZQ`gh$KNgDF3`U;Asz47I0R-I7GLJc_DPAc(?39fPT`aFa%;`oR355&VsIp`DP4y;esE{w@BS2+P#TM z`Nrd|6e~Lxnm}<#L614Z5 z+yYRi%(PWU5%;6}B&CN5;~ED~N+nbb%nt9ftXIp^#)n{yi9|8=3LblA@KE*a@_aNc zTwL8#{6^Tf#OS_KcB`Wc68r#0k1{sQ3vBU*dFmIwp3TXE(<`2b%V16cFUi23pq)E{ zePUSiL}CfGdzp6z%6l&|8y#1J$M7^6`o;^tjIKALW-}5TJ{;f6_TiQ=heqgisNrRB zS`O&g1RP>3;44;ryr7SCzariIOy9{di{m5388jL^>k<(W(Gy)xqOe8kC?Y6Grd0T( zr>Ez;H8~FY8=qIrr(XeDQ5+x+BcG{~s=ue~JTMVn_5KgOm?2@bBLr^0tn= z-H5Hbz~mF`LxPCPdXmT_dBgm~DsdlL{4cYV3sL_Z`=`C6cA+OD=C(FQha(!xtLGI+ z?)uneu?B8L*c{1KAGEX{m5ei&EBI-bsq40SPtiT`FKkWU-*&SQuiVAp>o*1Q@pDgN zGQCXYRC2wtN_dmQ(wCdS%kH1rc3Mz*22lUyz@3F}fN%GYU?AjQw<}w74MjjDre?MC zBL>A}h(^gH<@;^ghbZ1kqBFoY)2<{s$|@`O#kYB4ma79GdNPb&AxT`*c`qMIxy9jY zispM9pJjMN#}XSC*YU<6jO`z0Le?ilz>Jl`VgF#3u*|bvJsgHdia>STDI&r z44TTUN0uEmT+2sXmq(PpzROn~5o#8;7L?_Z13ONDk7_i$CmrcdgUR~Zf3MB^FKzT_ z`|AZ_s~wh(YFq#eG9KQWS2h_p17{6;Zz|frJ8vs7X{QXKZ-Z~^3!{Mhj(O#YcU|yT zx*zV;{_^?ced%ZP=j1r>bhM6Y>f~aTiRnlMHnz%oJ|s!6`nV4e_PTA=iEU9tAiJ*? zlyycNi<|bk;E)TEcltJkEfqf_Y)^ZLErrgoJKI%lY1QLm@K!s4}VkY}1 zKfK*(%M=a)ry=W zanpj9kBlQnCH1q55V~`(??rpn55-zvS zO^3Z>`yBI??wtPJ@W)!|hIpK8>5a$aLB+TcjMd-pg!%1FTF6aGZ&xga>! ze0Abd-0RYR!%uxTD0)W$$mE0O>|{V)#;&UnyIx}`*qI*Dny!X6V0?uJX+D`?>3?-i z4G~{xy={YWMy2N>I)v<7p4C&&k4LJZZTljjL3UIb3nJ6~KbP_EO!Cn&F!ZjtK!z&M z%;pl}xP|o#3w)hEvhY#2VnPn_9T9W(qTU1pU(0k)*WPEibUK#aMd(}m4B|Gjjk{9R zfBi$XKqv!m6g&G>N1dR=U=igPO=co`y9#nrLD{^)EL4oRj_xc{!g>c>zxX=gr{KrO%S*e{PoO6*4%^Of{5)rO;cj1V z$3u2xE_P4q@SpPoh4Gs7^iZ%I+}3xZq${TA?a~OIvA+xYYp}f?B|V<``_GwE_3VbX z=WyC3&6ZKR{wYJ=9vJ#PbO)O?JDdl;qA5S#tCxX+Eg-DpU6a&h5>WPcmEYhh+( z#Q`+r=PChrrhB_CyA9U)pog-tvFTsK%wL7-0_1PG+QGuo57d^dNAyW^Vod?raJQX? ze}*nR9orU<;dEWo12ENJ!|iP+AK(cunO~8uC6xfEOHXGmj)~WB%cTCQz8`AZ@DIP2 zW`mhg>FE@altM%x34_-;Itw;@xdjF2AZl}WgTMH#LdxR< z%kPp|`0Q*0rI^n$i>bMJZbO6S@K<$mFed?gLtb=7G~iahUDy$WEV4gRC71cgjm07& zHYPfo8ZqXx?^k<)e=Q<<7w_f$IX#sObva;gWo%^O)A0*d&(6_JozoT5X2i7`=I)|E zT~UQ|PTq*^>Gjpt|Wo9B)s%Y9Nv)Q4|FqN$(wZ~yu5?a`72cZSDT zqg9qMP43>{&z)K&w_fmJ$Bg_QgOGQ%5Z}E8A040Pb#f07jELz8hB5gG6Z#d-*~f$+ z&3i4XiDvhRJEyd{aW2Th1+n0kWaPlqW2l9TwOJVb#_8-UJ2hNO(ivG2FH1^;apK(m ztZ&hd0#2%Jwe6oO>8MA%VP{`f*CpV~T6uo39U;#dO^t0ng*F^yQS7KJ!IsXx>Ubff zc%TgO+*4a0a#?9WAr!D;#u;wr!&}Y(@yq>CfdIJWbZ!akV^%{8G^5PxB{fcUw6&X0 zk$!*@z^8eah{F2%dH|~=gQj>LKNXV%zAg!lXL|+V0DJqI)z+9JTpoD30CVGbDDwiu zQ(6Z$Zq`sBtpgR^*$wB|EKxlgHgg|G*9WNJM;Jt(PzJ{f{XU19dAd8X z+0qdGmyq%bU=GX~f}GPrTGJVG^}DP;C@)tO@2&iit9aw_mRo<7mepvbkT*2!kht#5 zlX4=)#oS-m^VCt8^eoj%o0vmy`%q9?N-Dc*_@+Z9WBhwyOcmMK5Iz>xV{VQ~SGTjK zIUPYYo3qPeLU~GWbu2DstvgkVHBQ|8$4__%FzBz(m8G?>og@Dw?+=TzukhvNE6Xh0 zdn>3s9ME0x2PI-qki7@pst5R<&;@&%u8HE+tr{1BT%117L7zXXQg5F zOqR?&z45IkmxUDPdJte>^)&P+d*r1y_iY$L$!_f6m~H-tZGi z{tT#`tbp%E%cZI#@&f4GP>Iz^76%T>(|-AKDF!nnlc#3@$6Jf)nyAk|r=4N)?+}o# z)JCS8wlsBuMj<-_%;(uf{P4}jGIRVV;= zOZAbUS@pL&5K}pDy;4o`WY1ahH7=I0XrTW0R7Ygyx=0K+C86^jhH+w=ammS{ff)GK-~7I9+vy74=WBR5JM%o$7y;Q16l$MtF670ljjXiIB3s>m1W|;3@>VqGDaX;)bBB-Yx3zFbukR_+-hMR@-OHr556Ve!|h=OeKt^(Q;M} z3G{NT7f9}I9cNC@Sp!!X|2Uq6o*VR*>bBBD8^yB^XfDJSd>!}wn$MJo|0m6xj(dyX z5=h%wq9*y@gm6IAzF#BppIPdA!ou$jmK>Uukl^5bo|?{1Xj`MfXPL4AbMYC>#GnNY6^Ud~ zUv#>S@?goQ{8~)=6XP=^0Y|dymA4M_-ehrztQKy3`|sND%chxv*MiDhQZFd8--w5c zFJUpMNc13~$p~z##?Tb$2IcC%@_ck5Kp_$!;4eU37y6pzW$|Ck_ZDx$71^8%0B3~U zOzqog7sRAqlaM9W)AQ*w_lX0KV`uZdyo00+Q}YTppB){DAX2HpiHMpH#6p?1y}jfv zwrU^mZz=*8BJTAS&Frc1R#IBKD>_r<>COzni33wDq_Zj9Xhc(<`z>VU15@q+PT$Xp zp3{iKG)a}ZI&~|Kxqth!D~bzM8FjvCKoG;({M9A?siaN~Zfl^h1K$7){mIRVUtm63 z<~>4-dQLAvA@hr}*0LGpJ`b#irM9}my{BH29fUq8pg!5X63Go{;}(T3EsEa!-3 zqxl-`Cky?h?vZ9`o@?T`mM5Qy{V;{hsf){5V1y~J6pFkwj-qPD8aw^gunjArux{r< z6v~c;DdXtu zn~R>fe%avR>_??z^=C-4-<8Y)tQS8y^)xCU9UU=kHqL|6)lQ(!nQYb6)MNs93r2kS z`S~xeu4tKQYEbO6CE7jPF4dhnqWotB$zGxJtZae0jU1LfY20 zOfMq>l+zT9iWhVfw=XnlHcx&>uI6jTV1r3O(1VeqrtxUvQ-s06#ot5wgPL**7{;}F z8*L--d*aivgY>IW}DO6 z8f>+Bo%U+ac7lI8t;aSu3;znrUhmo$38~yZgQv71O7#8oGy@pJavwM9m=?2+sN1|=e2CAFE4vIyM@SoX`POGpLxB9L1c^sd zbU(J}$Qq|YYiUQT#-HRi#Em}NlX5iKzjHZGaHz)_x!})1xL`Hc$RO9xXOQ@$;zTH{s%^GQ4Xb`{W-A# zL}irO&>KvoYKGq>ykV19!tZ-p??*m!4|Iw^VUF zhO z@8UN|86i>N)6j`hn0N82S z)ns)GRIU8em!vYwTEG*agwT3z6d${jq*)Mm+w0_LImyy$H)6Z7A zh~kgzDjwZV!B6;5(Z;?z?}S;Xq_NaX-iridUPsBlDnc8OVJi}zW40{`?)`)IHEl;V znL*uvL$T!b+PbGj^Vk-I^5!>9E&r2tAxW1L|LTMBmpQ8nM@V~+@!;5UcKPI!`DD#IHdRgM0C&6i441<`jANuIevpvl5@Qt*< zHMZ|5_{SuQwtN(<#6s;k+Qh39KT60@AkI7`I)2y?WXW3hr zy5K-xpEKm-e}~x3FBdf(+0P5KvVmku!sx=rl922N^yI4_fT~L z>d(N#dZAe|j8d^$1U-X1h8w>|LsJ;sz*&f4dt^K7^e23gYKT^;2|9bY)oYA| zO7cn=XCGzXZsFHs zKQ9-ZPmZcQSts?`y}cDv&RRLp-8!&==~4{G3KnXv+%J0L5JJrGCRlP~582KCj>0=y zw#(j2^{7im60{%2UCxdJ?PKwEXTBQ=9~Li8tFz5ty!%13?I&nHnA!7#oFB`4u$uhH z`7==5y1l&}nxBuR_PtfLu(t=&b6HlTBouLKJ!S4oHC7S>(fp7|`J*p?(WjT9vBoDq z8W-V;5Ls=V^*Lg|0-RiA!wGBf{eFuEPMqVV|K`Ae{7p@a3~*{;{Z*QMUwr$iTRLP} z_XEmtI5Pn`W%%T#ilv{y&s!q}Vj#EYBoMv2R+Vva>NUO|y8hZJ@LCKtVg0kZ(360! zC5QjW?x=o=g|Jzq1Of#Tn;AdtB3lb-{Wwh=pD~sClFC=3h!;11KW>%8^A8wBXImXF z9E2P@dC*u5h{Z`@N?g6N6F+4fz%3JKL_8fD#xJbGBc_=1`)+^>{U4Q|f7Dqlk3C(F zpO}oN-1kei4Q^rgDV-@^mGal;%ul-hlF-F+!QK0AEtoq$$v~K68r5Ogp7U3cBUmn5hq+}ZpHIzyzdx-wpTKKqzpx?1hjiU^LHp8DyTu(@PN)5g<$$H@2AJ)6FAYK~4%Pv@S$27rYVdQLx% z>!&qSI5jDI)osM&A>Q;j6Q}A25@mwWyRwCa)PE)_2Q>z|X6@NXf@6F<7ZwP&v4hdC z@#2E92D3G}OQlh~UVi)RjX7pW@;}#oe)PoO8pm5zAjXR00W(UTp3c@!EC`{1Pxun@ zp&rPA$^U`9lm9pVZB>_TXWVU9!1Gjt;%m#Sh}T8&{r$mIlXCLQEA3;TO zhqBFBakfHbN2Y)3T@vok0gL{R&G#DzQd#e+TfACxrhBN1*ZXDAp(b|Nkw3S~un%mC z2jY2&(o0o0j7!_jUd%)^3Q=1T`{kvcNMFX!Ub_NgX>j=n%Sdp>srb*t^vl|b#Nu!E zFZO?qy|cC@&Hf^qe=c`CAmCh~@!Gqs}uYRB^ z6vK0nb}?urk$r|ntagT{K-b3s8~1EyXlL>8SO2#p)oo#iwfKL>&;JY~BRu~9SH_An zgdB)g{Xe=?xS0R-J>tl7C%_Cl|limTnz7ua;o zat$FY_dh02n=XfM+9Z7QzL%j`GpD8W)<{+`g77b@NK6$3+M*w`<|$G`qP}^C3OV)k ziSen8$`^eDyL{#BN^y-+xBMz#cr`Of8qz*>>n&&PAc^ego!8!kS!vc3Wa2v7Q9uaq&Y!H03Zf2qPTH=>xRG)I`GR8js>=yFo>e12m|0UG zzgI@uRONfdUOC|w*)`?3i9aTAF7DRX2Bh^wMMd8=-HQIPR{41Zg+giSK9TkGq=45PZ=~8X{I*Cd)Ftn$Q0wi7MT-G2>G4fq)Ei?DWaWNxp63HDc=)%|5nx zu%h$+D|Ti5nqS^Zv-l1EOUo_o-TRxz-Y|rjE8w+3l=>=K`7!TO7Ud{wW#3^S!Q>R+ z%M*pl?S1fzFT6LxXs>;bA7Nw1+gYs?l?_{@3wFsn$}shh4#T|Q^(&%o5M`N**}|t4 z^svZrWRtq~NcUmq>>s2@#y6T}Epi>mR-zE&K0l)%{+tsB#z#^+FR9%{bT8-rrY^6mZ-V4Oq8w@0z|F?TE-im0H3pwAL#Pv0olnYFFHRp0Em zokW?-*e^lCw6?DnLsYbc>EhD-+;J>Dn`5NUfFp^RMkdNfu;CJ`MoyzgYVl1ybA4pCn5sDYL^vO`d z$WRIatSx}YLg5E!hkQy;*Bpm*?x$*=BX+eUXSB8jdm)hb22@X22HF;JUm{&dt}tiw zjKLUcQigOai;&1Pke)bj+z0R{chkU?DSUA=vAkp&>G9e={}c^Q#fM}&5;|NQu8mYR zBp~30IGCQtv_XJN>rJCT4_6wq`YimY;+Nu+QdrVha^Q@>h*jV*lJOJE6XqWk=p^fwuGYS8K z9LAEY|Cku&FX&K+UsyB1Xdpo@M9AZ@)l?+ZUJ#Ph1gT8#W4Q;JSxENimP3s%Hx=o4 z*hNgEVZ=QVsM3J60~Oh$>z#@fXS;G^E`jY)Y?a($iys5>S&~ARHRgl8rAfY0z12H$ znVHd`ll^^b)7f${|3?_bJXl}36+~<0M!AR};pUQ<*b=c!*8M1ExQEicab|zX_M#%I z%>?!ttrKpjRPI)mjQb4SM{yv@lNA0a^Isv5>V9IzR;$iX=5Gz6^tWaP%S4-4gO;uD zbawE#dvWWYt;lkJt3_hE`P+YbN9|w$d123GJYiu^AzHRY5K)$c@7jxmTSmHv_)R37s6=ne z;>PWRC`ON3OI#MeJsh)m;5f>7$0~2NE&2KvfQ0@B5671V@=(LWNE#ZBoV^1BZ?{9U zM7)STr;_!6?w&TV?6v@h6Pwj&T`SCJZmJ=pAcq1SRp1rp!L6z^A)%z0L=kVk?)X^= zKq@1;Oke&--dOtMpv0$>96;yQUSczJEBFkYE@1fV36!+_{}Zqa+6Z+fTWVVPz6$GvoACDk?vxtZ4s`S>Rh3FbU& zZDlnyGV;wGr}o5Psfny+!hCU{2@yG>g3>Bnh3tlJ5be(^$a;PJ#Pn}Uu8C?5U*z={|VUTF0YMTlW3YbhVrz? zwzTu*Xq8yd7%w;ea=oFR7c!_)423@y-=E{6UKa|c`caP-m{GsbWFi``7)o*X7{_~! z>ghmed(!K`D$WrM6oa1_A2`HSWW zEEhB~ZBnWt9_xY4@f?GqKysY3rNWdUfZNBM6k2*p8MjlWS@rFP1S*;S7FU(5MW16` zc&IdlkY!iDX=Lc1-^Y*i_4W&RkcR!nox|Zy#|A)Rdi2ol3mye{gV1zQX=!)7vS?V2 zoLo5SiXt^+c5ZI(zIw!Mb>8dX4G?#TE=>zLJ#_|!o8Qjb$z}hXbPyYOcSw%lS&7zC zxuXEszyq8s&gBI95M?Soz}!1*TCL03Vxbc*yjniA#O>#Y)m6s_=TT1lR*JQ!Nx^?>K)Un= zZbqE;MF5yWsT$fQ$-hDU<&}Uipnd0@6iP*w-+xpHK2qoe$gnjx@9mG?J$DgqCN6yG zfhfKj^5DTp^On!~c_QfjiktjlOfi+4(^@J!ip)}zD72=h;0|QKjpCJG2*#{W_7ps? zJ+ZISd>#)U7{Il&v)kO=O{hm2rU2<65WcT8PQmf_^+AKlht92bc}bR9huiQ;*O z522!>8nWQ|u7|MZA#-|S`vRy4my>SR7bp5@FV|XMJ&=*qYM0HK zB#=cN40vaQA11#eBsqX_eKoq}tXXeEnu%DF5ndtvD>)KvE*yAti!Ww8RsC^j%h|PR zXfh$l^&Uur6IklwKxDyefj+VM{Dju=k{1F4!-1z@l_fQ7QL&9*a}!)Mr1z=gbj+=0 z1KQawtA3~`ITXkbKd7w#GX0_}D~Sn)`r_8s)CS}_{J+cLynmmibNzprO1irX0E*A2 zfK$6uu%Vps(&1Q;BDsyYeCLra{E4ElOyz1J#lvO~FXhi0Ae(cnhPS>e5CBeW0GkgdzbH4oWA5R#G$-Hu$K%jEJV>_( zMZ}#_ngAtmFs*sE%(J7{;b6+V^&rP)W?=!a_&n?ZpiCm4f&r%d$)8Szr<#EsFc5Vq zxZVg1Zsk@l(+(aRdk^aE3}@St~}=!%wec$#>PmmICNNW>Ijf=H}*>c6Lgp&)O;~ zDomR}pMC$~gWj0^%9_f%cOxqe_TL5QY(oG$pmCL~7Lxoo;Gu2{b;>W0f|>*EG9rC_ zeb5&lO5W#=40{T~xxq_3XF$}_A_fF#A zKO~e<_o}E+m@hw>->=mnM5+CJV|}GeXpftc!rp%F73oY?T8xl$fbl2Youq(=>@xqhX%m}Et* zE`VJCN}cf*tice^%gcZ3FS^~MA+LqI{<~h2+(3~)X>4csHiAlh}w2p zQO&P`0zF^az&}XUl+B22!YysOUpmP{6N7(X_KfJq6JH=Gwoy8p5ba5f& z9B{#f_4I>v=t35^j+rg7Aae%q-hGo5K~KFCk5DATLDytWq|(B7zQ%500F;kLiD*lI zQF9o&%i>-qB<^&8=K0Bzv2haxaJ~Bv6RO^s-@LE7yqf>nHM_#Fkma__h@(vEHKm2w zvSom{eGR%RF65!llF|Tk-8DSxAdK#lKZuT+VU6bOcX*9`g)waU^2I$;p0^sxQW_cN zs6pjmKrASOT8JQs*~;%@E=It;G5rQY7B9vGottZkU)N8Wi{ng54;_u@Uy9Tzd6s^; ze%iMi(4f(p_!3|9Beg(;L^)(>Wj@;SMw>1<6$>-r^Oqc1=8s2yEvqdmoq3( zztbP~3w9c6OWvf=LMNwSK>nt1M#i3G(ieR;R4711XOiPb3nF$vpqYEyOSIm0rq?@9 z8BYsE!cR9Hogn_B|6u{?^@=B^eJa@K2xUgTbL6Wd_8iSRZLF}mPDmVaEzU)>zAEiI zGK^Z`@>^h4YI6Q%{aWEg6Ap#;s6-~((RScYzU_3m=^h5ef#tCbq2*hQ_%bqEyXF3x zMMk9#3#ZZSn(~f)$5Rja(KrKZ_^_MpKA+EOUm)Qp+@G!+!xYY|aOQFi0}dsYIQaX+ z<6}u39dcn|VUU2nB}5)631Fy+leKXpIr z9ozG-hNge{m%x2=W^pSpPOA5tro|J18}W0zG{30{Yp6Asll2}9&(b0;N`5L-9&WJ7 zhOT|`u<2#0$3z)uf&te$_pcdt%NOjuD?4DNGI!y;7D5RKCN-*=+TCVX`Im%5>qo_= zUQjDK5RiS%b0cBtWA1%1=jIOn_NoWQ`lTJD%8SRXj`o`lmI3{d+WXfPPa=d8XBqVm zb#2h4e);I#aEzw4#roQlLglxFR^r_0{xutR1aO&69&2aY!+^n$x=r38hv?{I6GajL zA<`*mxP_1NQ*vUPp5B;f!MTN*P(*L}#+H}Ie9!Uew%(=9FkG|E6OKkbv$|m0T6*9) zKT3Sm+*)n3W+z;;$l`rhVN**fghU)Kusz|yBLik{D_BFa_ORqfq9@Cry91lJK%yApwpr)n< zmSasJdxQiyGDDM_-eKE+mb|y_0PZ{Kv^k=us|y9#pm!}15pSSD3ZC;lVBPVor9Lr{ zsCdq}iUzQkIEu&s7J=PXKOXeJ4nyLY$2{3spA)5dvc0Sj9AZN7*dIb(neVPCDWzVL zGs)DjZf??S_+)-jaq8j%kU!-TL!9t1TEG#&?1>Ue><2)cz~ITq$vyi1y(A^NJt!m? zK$S?q)JrQMFuDKQoG&eB*dqDEvP=Cj^2dc%pUEaSj!^=O@6?2Z!9hW&mV}XDWe$=` z+*(MI|5{tTyu5Wa%kP(P%vrvihFTt*g5ZpX|0Zr?iMXz8*7!CtaS48<&s}?P(v7JH z&SwVtxCa{V?oa|(ViLg&yuKLfzF+Z-DW#%IMfjm;ZYapeyEvE=*MRkUwU^x9xse0# zlW%Qpg;$6#$-XmwmLlTiS}}#c;D->wiUiofU`yw#txAbmH_Gv+oHRQ-%)p5rzA zEbQi0Kn`YIWLy4X(Y+3lGT_QK{{Il`!=FocGORc+rV7wodQH5Y z)R4-$Gb^*UmINQKi!W)y+(?jA`5U~Ash(^Kf?u^ir}@P?%&qYY!ocGc1FXJ*{n{t(nkoTg+pLl@)XYU=pyI<$Kd*g z6c-(3^aD+isA1NbBnFx0&Vu*o+ipY7(|*q+>X??Bb1ommLsZ+5HApU}%66*ps~pbY z9I^D{+&5}{lVi56XqOG0;~(0Km(`mONt*`SbQi|!bP93q?t#*eo;6$_&g6Ul zo!rJ};=pN*=;sw+{(~2D2w2@*U%$)*lIhS1eyghi=^NyVM<4o% zw1l33(!Xu>=gWbHZ~JJpk6&w@jE+$<#%EObXCpn~>FEk-7-Pi1-BGD^e8nutD_~;N z^K(1%#Mf*3^>4@4S0OCwr4SNxBwdv(t`?VD^@@FF@!rcbH55<|zd`7qFF@kBJ6WY) z$Y04G^ybX#HSQhYk)5(^GLdIhaNVDMC?nFlED82S z$>=`1Co4FHG#2Uz`)rzM_Qo`}=T3>g#i(=Sp@s}&R!U#4Y{hIWa+=%~ie;j(x;KYh z(e${|q!s&`n-?b7(i}v(xmFt>p~GrV8TPzK+m2Zu)m4Egc}>h((W|)?@9y5-mvT34 zB!KP*3iy)&T=hd?htTLZX`Fp$&Z!J)*HTOuAi%(*h&_J`UO+0-qiXY% zg%&}avadVrNy_#pA){wtohW4MGK&K*k*fg!k0y)NATW&xSYcB&r?S3dFf(yZ?y*;e zgSYUDu;TirCZWgC=krG%b(rD@TE*dqUHBd&TyDMgVbRvc%zfv38Y`Dan2{uL(Np=z zi5v!DPYifz?|3?nR%%qWw8GX5-R>7!@2nsx$x-U1msK;N=_2pNuPp=iW-83S+n4Qj zw;$QLL-ip_i)r?s-AEyfc`HaF+#Zlhq4j@?(4CXr)#%zk5b|qDND17g_LQPNOc>Ziim`&!rw7w@7>%^Ry;i{uEc*EcaNTbQ2q zoVUbdeRrSX*gC$i*~?kmidQ&1H(XX+99IwsR$@416($95b5fFch^~nZ#V{RmEa_Q^ zkR0+VD=Qb!TP~h<(@9Ps(sm~iC8enC

    tIn-s1OL_ibnl!F99%)g4`RU6zmu04^4 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¥Rxx&adgjtjoC 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 diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 38d97e0440b41a7bde43b7e5564fb7eeb46a0324..96f67cf7f58fe8267f8f345668521eb55bb46787 100644 GIT binary patch delta 12612 zcmbWdWmH^2w>H>lNC*}nct~(b(BRSp4<6jz-5m}=LkN&SaCdii4eoBi-CeqA`s=)N zzdLKzotd>}`bVGICHtJJUA60}XV=&@N_PnAPZ}~;Z&giKaWfYaXDdfnD+hZJ$TKxA zX*g|D$3sQTLderr0T!XPwZydr_j z=2vRy-o{qN8H-}d!eQ9nMgvX){rIM@&=W%(6V7-~idx=wFJ$-9RATsCu(d;QROVOo zT1Q~$oJ>sfia2Rev{t!o@k*ntKI7-nPGq5RJ%(yRF(3=9Ino(ii@q%_Lo6G+w1aFX zaKwwof%$@2$9H88e3EG_}rHq<>#7zL-Ks;Pg%F2 z)XGHldVu)f%R<%Z*mCB`dqJNZP4aLdWUM~b#)Y?Gx)ONrWsb#Y*MgxbT&cx_RUOM- zuTjLsX;sX|nlj$1ysh~yLD0IpSu^)!rI^M3jo(axwH!17Hn8y6-54I!0y9*tc9@yWJnrKR0mpV4$^w=NHC?l)h1X4~#aZVx`^r}lq z&;%e)7Z))k8p_qMfgI&rRT;O`8p-vObr-K6LXya$P=PnkPjUi9jkiC`OSUOzFJo)h z<(Jc9PW9Dj5#N4|6R|jOF(6F4v`0G1t>-T5)YD5+X8$UK7t~c1Co^coc6;5zkypJJ zzmnR6yj_tn#7sMKZn#b`@Sa$k@oQ$ci9V1NpmDfqg(rezEL?R^rR)ql4XCDg==&T) zMzLx4;`0E%akp0S(9r8#>dzgrj(Ie=g(31PMSgj+InLL7ID-3rEU1ZtTt77nKREyV zS;nU{QB1Jqf~`<%z|@{K5ZEzU*ae9mml?d#I91&xv9x5*{(|Q3EP^9t7V-5@?5GZa zE8;RQLi@^?<>j9r6c9Wn;)r0OR9nMxd3iK8c3%TA^=tID5fL*DeaTpp+?nW`;?^Ij zx*Ps!WkbWni?64Npoom{vzwW9#NWyk{@PIymlHo9N`Z^dx~u&sz>QtD`JOz0=sHIL zd8fjJG5zN}wc2``U9xEON(yRW63~%A`Fm$eu^Kr$DrPM~Scbd*VrlaQ-_|JRgtzOE z-=!}V_TT8R|#^XW|#i6y@j@rk3~@>Iu}JmEh>Jcd#`$L;0kJBfY1A@#la9#9pX zPbMNP%=g6l=zf2_W9Iqr=>0$x!ez%qNNw9&6NcJ237i)ew?qT>uQ?W_2V?>;szY&+ zKK+(|jVGa``Wj8_PhQy!mgTI5pB91d2e*dVxuw^=f$sxVQN>kgKB=4Fehm($z{k+S zc&=qGYVN!WK3x&;c-4t|Dz7b+v6p0Vs%75p;y`zmw#K*Tf$nKSIOOnfOa*DucQeNU z2Q^ne`~ea!$y}ch5=!f~Gh@v$mJgiE{GNoA1PSvF^@>ZQL`(>8(k>|@W6K^TVOZkJ zBHxk_w3Zfo;dHU!pQOu@;Lo+Yw}*@Ockak7Tv8#J2h~o0o)~7$Q#Q6RZaep66wuAm z$vi;*{WVq#vE=!0VN*MS5)5hQH94JtStUTFjtQ$ME8kj;R9Q@Zw)kUiXmYZemB?t> zn$mw2nX8d1xg7D#sFulySr-;*$A!)yiaugljW?tae$g4uNGK-VnC|-pKYstGU&=`9 zTQ^lo#A}bg(yM_QADS?{F!j~6SKO#0Y+2$%81C;Gw!s3j&oj8O1Hi0mxIkUq@q>Gf zSw!dS(#v$rxn2JcDR3@FdB*Lh9n?omu4lZX`3-5j?*fqGJ3=Eyue62WB~Ddd`Xze+ z7Yp~e&CO#)-=AHtvUK=t{SOTQOaJO_mjq!@l~t(INVy-Hhuo^!65Q~HumAW z>Hr)`A}Rxy4gL%s@#8|yE!Csm2X|FdXQ(MbXx=t#pRXgmjZGHrnZNmiIzj1e#iR|pr8?vt}Ei2dxAc>=} zxrcFiHTFHOHk;eL*GYO-N-@u+W3o6TXb7A%mM@YHtM4M&^t+ADY1VV#XbP0u)b~}# zd37#1>D6$>myMvzMI9xVRoR-osdU$!w~aJoz6z+@`X9Rf4^{EINCsfX+HcbBX=NVK zSKrxW0XPx{hUIi}%w}z$pji$h;~0JRC~k3x&iv>hAkfbY%9-<}DhIo1`_}jc(SE5U zJwVs1ENdeSv=@!`>%Wiz+{pzbJ*6?!q@vgg_dxC5m&{By%telBN=d{bjx$=a*V9u| z4Da95eE1NVm`KcRx6~V}C_LEeb%n^BabRa>7rfn4oVVoQoV7a1&ZhD^b(<;ta=hBM zEV~BC*f&0*8yg#6FXw)a)ok}|DyJYM{8R4W4!g(K!!~QN@{s3p^6w9ijHG2R4gH0m zADb8>s=oaG#ful`9ZVUmen@kNXLHy1Bz%7SjEsz?X{tANuMd|SPV+T_BO7Zh{xy8M z$5R8GUU-Rw+Xz)CMHEPa;6YhE}V8ISs{4h;~asy zpGA?sNL=ySpSXd61M1J8Kj%u$k2lD{x2uRRk@-38eidhU>I%U1Gd&26Q>uno~^8=r@OS2BH{<(H|Hd&dJOK1?=xzX6NL%<0N{$P8-; zlMO>b z)@OyaP>uPfewH8BtX=^4G*NA#%I2XZn`5Y za#{DqhV;9Y<*sPzA_e4t5`xC!Nb4DOC)qjo+O;G`bZxtk%}CrJ?-q3FIys6^vg$XN zUyol4Z)a5G5l+0229XK?c=PM;_Lt`XI?--wr#V%8PG{bRAAXuIiJc3S2yPgAn`Eq~ zYcT9d6iNyxcjxX_dE6M*5f7rWbpOQl_>Gx-i+5v1p#==W|5`Mf9rsX~Z#$-P%?1Zc zIWI#XCATAn3w4vOmiWDh(TB}t$>a8vN7jpuiLfh;WgVFsYvuWBYpG4rW=Alt#r~@eSG?p&Fc;+NraL`OK4L-B*CdBQt0R5j`Ih6G z!5!U0b*h+t>hELKMwc|h?V*wS^|}m`Wei%)$?-ktTl0+RoF&5Vj7Nxd(f*{eGQ4GD z|BBTRS+&ij3oNtfc9^d1#4))It6N&Xmz8;?VIYL}4HfxYIN4yw)m4#GLj}M4k5TAZ z%`w*sr&BgDziXlX>ED(HjZ+70ZBl0N(*g&~NG$BdhZpE>XBH->4(8@`MOIevPsBl0 zD@7&+-guRH;67Y_UEJM=%;=NlS%JF-TORtMGMxZT4FHT7KkvOK?NZ8^2`NVmc3WxC7R8N;H$Jfk^e=4>(x5g~Pi=lC;>#sM zJ;USR^}RT#&!y%|W{wvhrYW(F6OE#Sq@=v|o)9jnu|}p zltzjFrzn@?CqfbM|3lMbG8FAUpVIHerwelzK>nBAz^skXtlL(9-x89$Nu)nvLu)}1pGKvk!X1G1CSPY`4uWC>)ufYq^6Nv z3soYl>EuNDO+QNoY5xK!xrU6u(?FefI}r~waHQeuvlB9E{`wlE36G&8Z@<2nH6+K6 z<6Yl>h|1pdzl=nEYuPE-)^6QT4w@@St5OB?XV*HgVi1ADuT){1PTkPyyG%f zh5ZAkt8LDK`}?f!16Qix^$MGYBmU?g6bzt87|hGUE%_0*K43lbEsS(NFFzkWV5pc$ zwj4IR@!eB+#V=%T{a%n1wVo!QMlf?ko6p@;jfJAHoLujM zdB}6JQ638m^eniy{yb~Pk=YMB^~B0a-wsxTk-!-Msrjj<$KBAjraL%t*9Xy+$LRLC z8;dm$>OO8}xe3emqv^4kX`XtmEJ}(=?Q3Z{P-bOjVm9ZW^!fn?W8)mqz{n8y-(Z7h zlZ$@jXqH3I7abwBte`TT7Eqn8ZmFhm_rE^T!7e{jWt(VS+%=F0USdb>nks8KMcF{G zfw!e<%v0_6Kk&m`T1OV&=SO|R-+ES0r9qXRUAMI=nqm^vO$7t#Jz;Px5#5xp`A5&5p@mmgvJDLlVPImG%$Lt5 z#Kk39clQ78$>;7V>B34=?P#ph?3?1cpeX120 z&th`>pG%k11;$UVpZALraLmqj_J17@PuZ!W`pO%|c;n(w($P5s>hbpN+RH|_x?@L{ zxbLV@koF}FoKL-z(h(!hV^9{E7C$)c?;7e|X~Z;+ts<|$*1;flBX#&M`;81B+7`qtt4foW@{Om{rV#pI07+~rN-GRp5G<3LWA#B6J zd!$rY@)z1~i3bz{vbyu`K72rPtTG9s#PmO-Pxl)W#P>Hn7P;7Wf%nr#z(*R3qAw># z_)2wdJ?t|cWyx=4Kyx1q0P%)5LPhVv{nRGUUU15L?xdD)u2*vqV<0`G6ot3{!g)Fe zL+YyH;*6n2oV`5(ELEE&v>y1LJwEyV#Jd?wEZE2J_`pD2Y|1AdG_-*7Dm35@vERUNlmlvagY7?AgY`#-rsEr1N*#V1UvX76#Z8$1t8Cd z`wdAe9!tEr_XY-llgB)x_d{|g4S)Y#xkWq3!y~Qxy}?>2`WzNj4pep0V~}}v+-2&TVO{*x*of1+;3KrR;O~mwCR#AZX%J9#N5{@`ilTB8IZ0nAxl)x@ zmi~bJgM@St;iKi|GoB1}+E$u!A`xaiN?~P#b=Bt|(gW_FUr~qR&~h@je1dV-RFkm# zGKA~J$a!IX?YJ|sH_~y>k!&|WhJ#-G?U#^vQKA8@GW<%3hE{1FNjWaO*ZY(@{nCp9 z0DyX1-BE;ztL+!TydJkN8x)^tGl15gX$E$t(@SyJl-z;t8Xm^`Weo<7iPz3mXUTM{ zy6Tesz(Tz3xH_0)iNBq0ecOUpG51UJ8RsMH5!ZfDy$fmOqgkXC1mx4M^A7alg)<5F zracH@@vjFzqd*{vy3gXDRO5}PPj@??9FT|+g@`(B5Cg{K2M7dm=$1CV?Q_E(@8{>I zhVPD}VZhjc-remiT@fm@H_M-cICl7q0VS~4@g>omvG=Pz;?kNl?k#EmQf>8}uWO_1 z)hb5iylHON)1TitXBv}nL8%d@&M^m2pE1=tjR*T2{95Q?vPwUj(0chC+g#d_ZCWOx zb;Lv43Qs%5dx$C^$;^uIc*w4q*ST37Vt?B!Lg|Ad} z`hj9tHE4ALN7)&nuvNXJ<#>+%NB#52rwPf)(Vh zQS$2~{p!$8H8YzMFw$6tq7}lpYPf^`nPsg0#?gjeK_?Z+pIHbm$$PQ~*xtl<>zLj!Z6T|-}mg?38j+Dy%tF$jR z3z%mmoyE)C2(8Y|Cs^f4ARO&r?G)8gGkjHtiJ8o zX@0h1*`9kXfweu?|F3&ZkwB}i#@f(^h0>k}Yo0;F-kM+HJ- zFZCa!kc2cICSBqv!(2$417dJ zU-Nx-u*{85KKDK4EOn$_{^(m&%Xfzc``rk|cx5ds3kL|dia}3PvGwtu-okjxf=}V^ zp1c=H1u}g4hdoiH%1p!K=T?#-tNlgylkFyZl)xr>wNa1GzpV>|@Q}TIeba!@0lzX& zSyqb=20u6V8>PK49$U}hk9Lv8#Y};LfrS|M&pY92g><@jD>0dwZ;OkI<>qxY(9V8i znpsyVDKyOt)O%oFH?4j7`l3yz@TNfb@NnN_D5QEUH{lh+hiXD6!2^6w$*K4SNcXe7 zDPGona?LNvsS!qt#R9y)&jDp7i5G`q+o`;xOVLk8&Ce~&&8DcUo(a8*J(OtfgCH!$ zX?8FVG!E=fhQ+cF4g0}(50nd1mmrW=B!p!t6?51>Cv$LM5FCez2cCUqC<0w^9IeNA zD-x5DVQQ^@nNJRql`{yQz3VilH4!G7s}SpZEX!x@h9JB zxnukNeE%WS{;U=7I1bAxzZY{9NzlY2Bo)z8!{RE}4h%xRz`%wc^8=wYUxkv2m8P$ny7_nDHe}bKqf)Gt_1b>pVfvI0 z2aV;--+T;)>|1-wylI@hKiAI1N3RfDf2E_JB#gd%5O&}VCNC%cvzz8K$ohV_y^1G^ zv5eDc3YAVFQQCaYzxyC_zCt&TrPa%5RaZapD!V9|T5&H1k7U$mW0Gc{%;1ZSj|cri%YF!>L;nSwR#>BSA+k5ifGQoTX^W| z&1X{I$9K5@e&bR@Y#O&Nu~2FJZn^!DKu76ql8^hvYyop4G>g8l-UlFg>IoyOxYz#C zX!jCF-sktbhLyf3F*F&oxU^(z0R@W>05WfCfwg(A#amQfYu(4Q5oG&08v}?%H=}vg};q z7o^^Eq1ll|(&jNO^lD9KJmVn8^L-~!bDhKJF+JsaM#|M7Q&Q)~_d!8Hldr4(z?wt) zJCA5DY9*cN1_p;VSg3xxMR%L);WT!Dg5T1=P3ES)Vb#BwE zHK~{$j31JzS5}-eLP?KO z0`bWp-v3fv5F5vJ>AZR1Kjpl>GaFoIHl^^UbGJFGW2n9%o)$N zIRT|X`)61n=dIvrDulP3lpf02&aNjLp?_Aca#l=;f%Me=qFnpNCBL~(BC_OlK$#X; za}%S(cU$l2NkdVKER?%mv0ii`avJt&xj8@C*Vj@{1#96N@GhBrtvf3Zu8u*mDj}Rw z=d_zkK{lKogSB3b5ZE{Qp^mG;LP~0~jyi~t&kt)ll=bV@xoqXvvT58-XhkTZ>hZ=h z;#o5*?`!8PYm%5V@A%W!9V_P#w)Zc3Wcn4J8^;U}>KDYO`}^y|yde)&EA!DgQq^(G z%Wk;Dau3SD$Ay4M=9Hsk#EArPTzgS+`Hxwov;DY+IG}~7{fC3Z=VoaqCA#}s$@Cv? zvRm@1t-;~P|0&hUtns2^5oKUTMOoTuznJ>d$X>-IELM|P(#eW-vsX&shEGoZExLlT z>qAfDfx=A+ydYvNYiT3%Y<&Z;mDid_tq@I%#zofczRaw66D{=M0lP1$D8FLT3Ge6t zBM?bvr^u64*q%+vLqT*TLO6DBDPkUHl@trhEHhlAcW}Df1JEj*T86XokMRg#)yCVy`7akAI?*)WQ&95P}S~B=^X%r0JKBL%5}j{8nm02Diwg2)ZLBZ=j~K#1PvMBTkJmoxu9=BhSkxp zKxjDpnu{}LQ6Z$@`d7`26IAO4E!681bUy<0%C#?}%v~;fo&HVEIu`mIy4C2Mp)sNo zc=#~ISM5IoUm9NF&BbJjknIhPRoOtfQwa}W7+K&a0-(-fLRJo^DNKx@2j=hH{lf<9 zQ7!3hz0?)tb_i6E7^$Xh6H=ZP&Ze7A>7x zGa&{k(^j!xWZ?+5;MrT${cesZoqS54App82^Tyox_2s(df{q(_D#}}8 zBQr9*J^s^I-;-+#Q_QX=CV>w@D2qy3VvWt8g3YMe4o*d;6ZfDYe^nf4=YOPh zC2pWt5$$P#ytYPT|G|s(`ah*>w({qBc#=Gz?Ccq@`+-7?F@gk;(s4U$X$`}S?TaP7 zvOT!+Z-a^zO;Vv}rFH{VyX&unPJn-W;!-F%$yLLll~f;p$t3r-CIStl|6?6Vx8kG! zLo!M(|J*u}pm!5OkbW;rL{^LAi;y^>n??G-_dXvC;Qa-7LJ3-J{-3N;9FrP7(z zGGX|S$Fd5Eu=^_$Iw3i)1Cn;_4$=UloYUT&YVMb1PP5MS%2*x9!1%MvgC)0nhC|2e z$_=sm$Klad(*tIugGHD3b%@x|T1QlF?()UOh0)n+UA!g9Xv5_S-!bx%>YUR0^$Ik- zBr65e8Kb&4m=Z^=A=j5)dE0%qk}_PQ+Ly>U2^G<#Fu^Ut_%*mUy~r$ zgZO)*0)U0AksXX1?@jLPd`~Azw>DFgUJTe|Md$7PCM8m}i>)UEnXmwx%*) z1{gTIoA39v9EWYSs#}dpUegcpFrR#?G%nVkXLe;mfZ@4Fo*ZL#M7B;gTu;Bq`NIZs z(4f1m#g=8d7*BT)+TH_8#f-9F&R`VcND8UtY`)MgascEcIFjuqNzVMT$`aven46#9 zlJTOf1oAJbV7R)FRVZG6?o7y~DL7bGA}uN-bd@~SEqv4Br>(5-iGLEV&!0$Gqp+YrtppPP+vs&bs?I8F$72&}l5;&_2wp zHo&R+@nokX!2jJHPgeVEL_Q_7ydmn-DZTj|t#_E{Db;Dp>-M>xD&}!KLDp>=R zLZGQL2wg}T0TZYA7^H2N>jyaS%S(%u1A_ul%bDK14EVsp;@uJRR@NWybIR6V7kvtU zZppR=bno5ZGDNs?M1A-{@4QzCaaNX)mSzi!-a&+|bm^WA^Dyew%(h`*>lr65mOiXC zo1!fwZaY_dOnW!~AnwT`AJACLmN&Ry9n@H}AIbee8NRC(;Hb)rdUU1)!dV zR0s>pc{D)L(+fR}nhH9&d2A&J9#>^K{A-KccV8ODNGPbNtOiV?Eg|)|F#2-sJ z<|%Vb3Q+M#D5NBFNny8g&_FzHGAV_xN9K)XHhjT@Va*ol-9)<&!YFJ5GGUgLsc2Z^iI#ah@A7Xjm_>(aD zS@aaV%lpT74+3nG_=upgMTpOm0h8KUowQbRg`4Z~?@TyNR{g$=0MMSgh8q7LMjgJf zUy}K^uQ-lXm45WDJkO-F+g)vDQ5VaL-{v44^S}tE2I!FUwL}>lk!@JHa^AegDI2uLNUsnX*^@0)WBslws09Y#dDd1SZ+iovNzg-n=2OnXx{@ zuIeS(wM>TGc)HL*oN$uLpabres8j4d5l;BKgA!9^@4RV52mtYjy;kG+BW9c|z6PHW ze{-V*OvA;JfB8dlA0q|4A0cR(R7|KyPzxv_~;T9rBF0|8&`fZFvZZbr

    #4!aA(mgid*vUFXISCa(A&=ppS_{TJ1n@nWI`E9Z~XPZ zX}5bwztDSpSABCi1*Ql66mCh-AThl4SsYPh(*QdT307TX;2iFJ@yJJ-I682x;OOiF zgr(OBVkDJFv@G93jQ1LN)9`lkx7 zs4aR0hQH13aSqLNh8uxt#!oe{wsQERL{3}?ru+A>!x{MR{hv_cN=lHFvv`|(2hk7M zNP+Edi!p~(>Lz`tdq>g@B8%9AFCi9+d!e+g}%maQcVSA7L{P)#41$I~Mrh4!-SlI(q);}2$>FVj} z7WZ`HN?zP07c3-maC76@Ffz)nEgezDPkeZ~g8&OD9jAFSA9RYa*gVv7zgZs*3-|+s>>$UQ3{K$jUP_DckV9Y9CWYMiuAs=Qmx(y=hMRf0j9~RlBpLi)$Z~9KN zEXJuW8pPn(y}zP8TpQirAuAr`t=nDdeZo#~1Y2@!Ie-|EZ5d^H`#M6=_+PSLw+y;^ zZAQ$A?mO)CQGC3Xd#nFp`_$B_a!+yx*a_z@5f zB3QEV+)TmWRGe>U7(q?p-`I7^9jTtgK__AP75FYBtyw*sip9Ks8^Uu>|)6Bnl6BKAZt8J@ijOgOx` zFd+rm?XE@nDTEYNY*6=;@3g1jo&un6jE~(`&|D_)8UP-cDjC_}6yLOA(!k#LF z%=c!;Yh}F3#odyuWb0HQKvt^LJf))VU!PNXX0AF^QElrV4iVklk+9o1rKK{g8P(`% zH;uaFuR+u0N9JDkzxJ#SbTe6Yx^5UbVrA0+WRnpTd zlWaeAm(|Zpxemc$Q1o>Xb>$K7%9QLFt9BIb@UP5+FzbH+G*12aRRgTMNs}MSJ?mDK zVY3F~Dt&9bQkHb3M=hfsH}hBTXMq}V22N@M_PukGUAL&*Q&I#i66|(&c7D6PR=Lz2sK&mhEqxqnyr)FY1GXLARA{7;BUwFJz20Z^gq zuivb5{HN!DY(u3SgMdwyu+Ikf0gvd`c%0NT4YH}MG>d`>UL9illNE$?rDfLc&BB@I zA%zjQ5nfru;I(HU7iuFrwJXoPjBiWIo|FCv53hN0hiYg~gQ%R&!|*$qo6?{*16~w9 zvY7wGnn?28rX;yW-?{qz;bx9pY=l58uPm1_CpGX-OYTm%ppr|E1k?}V@podY5z03n z>RAH0o5=nC3}zRWS(^pYBP&FxX_yj1;ekAll57~Bd0zqG!RY2{w__-vj?XYtAN6Hr z#Yj|~ODEXFT#|umjN*Qt%TOsSbCi3%)9YPel-^DC)x^~yZ2iJJZB5+`t=J$TK?uMR z^qwHVZy)DYeA!*IU00`~cOtlY5Pq)?Ei$<%fUV9P)jQ1);HQJ9>8K#yL!7pUM2dT! z-|+ype>?G|1K;yhpzvF4fb$>vmVTm&~?WG;da+Uh(IIS!jNHU*AQJ7qJU; z@r~bP)OMkZ#7tk^t(_G-!4jgmfzmO1uYdX-j;Q!!FdGVYEKW7Xp)>a(-WgC>5D4Q+ z<;EfN+Zm(7&*#H9B^f+$HJvZkE}f1S7z;88U(vdHUL!eZ#f4hyj2B2&2f4JC<@S>mJJ`jX?8u?ZYpZ{vJL4Caibi^u>3wHMWOa z)lJSTyCr#V{McZkX|1dQClks)^8ILC#pRi0PB(?&HnWhTm5RHEbB{wGcn-L5M|)Z4 zy8G&Z=9lgdI1|b#7_j3d`X117gy$&uzI9zpKI=R5>?euTT&bO&E@`7J|KltPJ!-eK5+>Q|u z*l}oXKp^*n2@BcGTw-s%f?I={8S~_J^Y&%`^YUnnYx0BzAgl33xlPWkL9$tTd-|PE z^%zhYfm2tT=Aj2b?7xM>*lQ4yKMTF*$hc4B*+9OUzSO<7K=e2cwbGk$3< zIiL06V9FAO<->=(Qw2@!w%Ly!s4rKUv$&Ft(P~4TXlu*YP?OA2rXvWS>WC4x%~5*4o{_zv5MI zdy2}$J{>at_pV3P|1=OFA5u<{cf{aFZ5oFI?^PQDtmWH#WAS24WX%{QXavlMCd~$; zrwaKDsl~!xPEsbL~1JWrJTa-zH$qKtn* Ph~H-k1@UrG!@&Oqx0Yb` delta 10431 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 nZQniQU#87X`~NkC7VwB+P Date: Wed, 1 Aug 2018 01:53:54 -0500 Subject: [PATCH 250/403] Fix link to rust-g repo erroneous github URL since merging #36858 . --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0596aae25c..bb572af92f 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ where the admin rank must be properly capitalised. This codebase also depends on a native library called rust-g. A precompiled Windows DLL is included in this repository, but Linux users will need to build and install it themselves. Directions can be found at the [rust-g -repo](https://github.com/tgstation13/rust-g). +repo](https://github.com/tgstation/rust-g). Finally, to start the server, run Dream Daemon and enter the path to your compiled tgstation.dmb file. Make sure to set the port to the one you From 20264eab4acf3d01f7ec5b00431b2eeaf4dc5b82 Mon Sep 17 00:00:00 2001 From: Grandmother of 50 <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Wed, 1 Aug 2018 03:00:06 -0400 Subject: [PATCH 251/403] Correct PENLITEs not being techweb spawnable (#39478) PENLITEs are now actually spawnable in techwebs. Reminder to make sure everything is committed before PRing haha! --- code/modules/research/techweb/all_nodes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index ef003bab63..b796f42d61 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -58,7 +58,7 @@ display_name = "Advanced Biotechnology" description = "Advanced Biotechnology" prereq_ids = list("biotech") - design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "defibrillator", "meta_beaker", "healthanalyzer_advanced","harvester") + design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "defibrillator", "meta_beaker", "healthanalyzer_advanced","harvester","holobarrier_med") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 From 8ad18cc8df736172c094a070602e3dfe0f10c4a1 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 00:00:09 -0700 Subject: [PATCH 252/403] Automatic changelog generation for PR #39478 [ci skip] --- html/changelogs/AutoChangeLog-pr-39478.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39478.yml diff --git a/html/changelogs/AutoChangeLog-pr-39478.yml b/html/changelogs/AutoChangeLog-pr-39478.yml new file mode 100644 index 0000000000..9915d3624c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39478.yml @@ -0,0 +1,4 @@ +author: "Cobby" +delete-after: True +changes: + - bugfix: "PENLITEs are now actually spawnable in techwebs. Reminder to make sure everything is committed before PRing haha!" From d42b94edcff93ea21ea5646a86b6a92797f01398 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Wed, 1 Aug 2018 09:04:23 +0200 Subject: [PATCH 253/403] Fixes exo reactor rads, changes SSU desc (#39479) Nuclear mech reactors were outputting about one tenth of their pre refactor rad amount; now they should properly irradiate their environment again. I've also noticed that most people don't know that SSUs can hold a variety of items and decontaminate them. Maybe changing the desc helps? --- code/game/machinery/suit_storage_unit.dm | 2 +- code/game/mecha/equipment/tools/other_tools.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 82ccadf5cc..2263e1c4d6 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -1,7 +1,7 @@ // SUIT STORAGE UNIT ///////////////// /obj/machinery/suit_storage_unit name = "suit storage unit" - desc = "An industrial unit made to hold space suits. It comes with a built-in UV cauterization mechanism. A small warning label advises that organic matter should not be placed into the unit." + desc = "An industrial unit made to hold and decontaminate irradiated equipment. It comes with a built-in UV cauterization mechanism. A small warning label advises that organic matter should not be placed into the unit." icon = 'icons/obj/machines/suit_storage.dmi' icon_state = "close" density = TRUE diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index b7796849f1..1a3886c3df 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -468,7 +468,7 @@ fuel_per_cycle_idle = 10 fuel_per_cycle_active = 30 power_per_cycle = 50 - var/rad_per_cycle = 3 + var/rad_per_cycle = 30 /obj/item/mecha_parts/mecha_equipment/generator/nuclear/generator_init() fuel = new /obj/item/stack/sheet/mineral/uranium(src, 0) From 47f5cf87fddfaf0a53dd69e91d8523c686f24381 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 00:04:25 -0700 Subject: [PATCH 254/403] Automatic changelog generation for PR #39479 [ci skip] --- html/changelogs/AutoChangeLog-pr-39479.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39479.yml diff --git a/html/changelogs/AutoChangeLog-pr-39479.yml b/html/changelogs/AutoChangeLog-pr-39479.yml new file mode 100644 index 0000000000..17e6f253bc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39479.yml @@ -0,0 +1,5 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "ExoNuclear mech reactors now noticably irradiate their environment." + - spellcheck: "Adjusted suit storage unit descriptions to mention that they can decontaminate irradiated equipment." From 3f8dbf2b0bc7469c0686ab51e5f2c49f520487ad Mon Sep 17 00:00:00 2001 From: Time-Green Date: Wed, 1 Aug 2018 09:12:45 +0200 Subject: [PATCH 255/403] Emitter gun mounts (#39367) * different guns can be inserted into emitters * fixes portal gun runtime * You can now switch type through wires * makes one line more readable * Fixes being able to grab nodrop guns from emitters --- code/datums/wires/emitter.dm | 10 +++-- code/modules/power/singularity/emitter.dm | 44 +++++++++++++++++-- .../projectile/special/wormhole.dm | 2 + 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/code/datums/wires/emitter.dm b/code/datums/wires/emitter.dm index df1cf05a9c..d0e1352c0e 100644 --- a/code/datums/wires/emitter.dm +++ b/code/datums/wires/emitter.dm @@ -1,13 +1,17 @@ /datum/wires/emitter - randomize = 1 //Only one wire don't need blueprints holder_type = /obj/machinery/power/emitter /datum/wires/emitter/New(atom/holder) - wires = list(WIRE_ZAP) + wires = list(WIRE_ZAP,WIRE_HACK) ..() /datum/wires/emitter/on_pulse(wire) var/obj/machinery/power/emitter/E = holder - E.fire_beam_pulse() + switch(wire) + if(WIRE_ZAP) + E.fire_beam_pulse() + if(WIRE_HACK) + E.mode = !E.mode + E.set_projectile() ..() diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index e3b2bf59ca..d0becf53f7 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -31,16 +31,19 @@ var/allow_switch_interact = TRUE var/projectile_type = /obj/item/projectile/beam/emitter - var/projectile_sound = 'sound/weapons/emitter.ogg' - var/datum/effect_system/spark_spread/sparks + var/obj/item/gun/energy/gun + var/list/gun_properties + var/mode = 0 + // The following 3 vars are mostly for the prototype var/manual = FALSE var/charge = 0 var/last_projectile_params + /obj/machinery/power/emitter/anchored anchored = TRUE @@ -269,6 +272,8 @@ return TRUE /obj/machinery/power/emitter/crowbar_act(mob/living/user, obj/item/I) + if(panel_open && gun) + return remove_gun(user) default_deconstruction_crowbar(I) return TRUE @@ -295,9 +300,42 @@ else if(is_wire_tool(I) && panel_open) wires.interact(user) return - + else if(panel_open && !gun && istype(I,/obj/item/gun/energy)) + if(integrate(I,user)) + return return ..() +/obj/machinery/power/emitter/proc/integrate(obj/item/gun/energy/E,mob/user) + if(istype(E, /obj/item/gun/energy)) + if(!user.transferItemToLoc(E, src)) + return + gun = E + gun_properties = gun.get_turret_properties() + set_projectile() + return TRUE + +/obj/machinery/power/emitter/proc/remove_gun(mob/user) + if(!gun) + return + user.put_in_hands(gun) + gun = null + playsound(src, 'sound/items/deconstruct.ogg', 50, 1) + gun_properties = list() + set_projectile() + return TRUE + +/obj/machinery/power/emitter/proc/set_projectile() + if(LAZYLEN(gun_properties)) + if(mode || !gun_properties["lethal_projectile"]) + projectile_type = gun_properties["stun_projectile"] + projectile_sound = gun_properties["stun_projectile_sound"] + else + projectile_type = gun_properties["lethal_projectile"] + projectile_sound = gun_properties["lethal_projectile_sound"] + return + projectile_type = initial(projectile_type) + projectile_sound = initial(projectile_sound) + /obj/machinery/power/emitter/emag_act(mob/user) if(obj_flags & EMAGGED) return diff --git a/code/modules/projectiles/projectile/special/wormhole.dm b/code/modules/projectiles/projectile/special/wormhole.dm index e95ff24ae5..07b56a133f 100644 --- a/code/modules/projectiles/projectile/special/wormhole.dm +++ b/code/modules/projectiles/projectile/special/wormhole.dm @@ -21,7 +21,9 @@ if(casing) gun = casing.gun + /obj/item/projectile/beam/wormhole/on_hit(atom/target) if(!gun) qdel(src) + return gun.create_portal(src, get_turf(src)) From aea2b5a177229ca39aed24bd969d7991e8ecb106 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 00:12:48 -0700 Subject: [PATCH 256/403] Automatic changelog generation for PR #39367 [ci skip] --- html/changelogs/AutoChangeLog-pr-39367.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39367.yml diff --git a/html/changelogs/AutoChangeLog-pr-39367.yml b/html/changelogs/AutoChangeLog-pr-39367.yml new file mode 100644 index 0000000000..905d4f0bd1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39367.yml @@ -0,0 +1,5 @@ +author: "Time-Green" +delete-after: True +changes: + - rscadd: "You can now mount energy guns into emitters" + - bugfix: "portal guns no longer runtime when fired by turrets" From a93dfb49db474fd559466c2dc5509580e1f182b6 Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 1 Aug 2018 14:39:28 +0200 Subject: [PATCH 257/403] Fixes sentient disease IsSame check. --- code/modules/antagonists/disease/disease_disease.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/disease/disease_disease.dm b/code/modules/antagonists/disease/disease_disease.dm index 8ee36e8829..21d0381982 100644 --- a/code/modules/antagonists/disease/disease_disease.dm +++ b/code/modules/antagonists/disease/disease_disease.dm @@ -27,7 +27,7 @@ /datum/disease/advance/sentient_disease/IsSame(datum/disease/D) - if(istype(src, D.type)) + if(istype(D, /datum/disease/advance/sentient_disease)) var/datum/disease/advance/sentient_disease/V = D if(V.overmind == overmind) return TRUE From 5b5e1ee57714ae0fae9cbddb5f49cfef963753fe Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 1 Aug 2018 05:52:41 -0700 Subject: [PATCH 258/403] Third time's the charm - Photography update: 7x7 cameras, photo logging with full metadata, persistent albums and wall frames! (#38944) * Photography Update * Pictures logged in their own /data/picture_logs folder rather than normal logs * Pictures logged in their own /data/picture_logs folder rather than normal logs * Photos broke, retrying * Persistence stuff * I'm almost done I promise! * Persistence mostly working, compile, etc etc * Persistence mostly working, compile, etc etc * Remove something really not needed from the PR * Prevents duplication * default to off * removes check tick * increase slots in albums to 21 * Allows for singular loading * Update camera_image_capturing.dm * Addresses review * Anturk * Update camera.dm * Update misc.dm * Update datum.dm * Update camera.dm --- code/__DEFINES/misc.dm | 5 +- code/__HELPERS/priority_announce.dm | 4 +- code/__HELPERS/qdel.dm | 10 + code/__HELPERS/unsorted.dm | 13 - code/_globalvars/logging.dm | 10 + code/_onclick/hud/ai.dm | 8 +- .../configuration/entries/general.dm | 4 + code/controllers/subsystem/pathfinder.dm | 2 +- code/controllers/subsystem/persistence.dm | 75 +- code/datums/datacore.dm | 17 +- code/datums/datum.dm | 64 ++ code/game/gamemodes/objective_items.dm | 8 +- code/game/machinery/computer/medical.dm | 4 +- code/game/machinery/computer/security.dm | 21 +- code/game/machinery/newscaster.dm | 66 +- .../machinery/telecomms/computers/message.dm | 2 +- .../telecomms/machines/message_server.dm | 8 +- code/game/objects/items/devices/PDA/PDA.dm | 16 +- .../crates_lockers/closets/secure/cargo.dm | 1 + .../closets/secure/engineering.dm | 1 + .../crates_lockers/closets/secure/medical.dm | 1 + .../closets/secure/scientist.dm | 1 + .../crates_lockers/closets/secure/security.dm | 3 + code/game/world.dm | 15 +- code/modules/admin/verbs/mapping.dm | 2 +- .../abductor/machinery/experiment.dm | 5 +- .../space_management/space_reservation.dm | 4 + code/modules/mob/dead/observer/observer.dm | 4 + code/modules/mob/living/carbon/examine.dm | 1 - code/modules/mob/living/living.dm | 16 + code/modules/mob/living/silicon/robot/laws.dm | 3 +- .../modules/mob/living/silicon/robot/robot.dm | 8 + code/modules/mob/living/silicon/silicon.dm | 4 +- code/modules/mob/mob.dm | 3 + code/modules/paperwork/photocopier.dm | 59 +- code/modules/paperwork/photography.dm | 662 ------------------ code/modules/photography/_pictures.dm | 171 +++++ code/modules/photography/camera/camera.dm | 202 ++++++ .../camera/camera_image_capturing.dm | 88 +++ code/modules/photography/camera/film.dm | 14 + code/modules/photography/camera/other.dm | 14 + .../photography/camera/silicon_camera.dm | 98 +++ code/modules/photography/photos/album.dm | 75 ++ code/modules/photography/photos/frame.dm | 163 +++++ code/modules/photography/photos/photo.dm | 93 +++ config/config.txt | 6 + tgstation.dme | 11 +- 47 files changed, 1240 insertions(+), 825 deletions(-) create mode 100644 code/__HELPERS/qdel.dm delete mode 100644 code/modules/paperwork/photography.dm create mode 100644 code/modules/photography/_pictures.dm create mode 100644 code/modules/photography/camera/camera.dm create mode 100644 code/modules/photography/camera/camera_image_capturing.dm create mode 100644 code/modules/photography/camera/film.dm create mode 100644 code/modules/photography/camera/other.dm create mode 100644 code/modules/photography/camera/silicon_camera.dm create mode 100644 code/modules/photography/photos/album.dm create mode 100644 code/modules/photography/photos/frame.dm create mode 100644 code/modules/photography/photos/photo.dm diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 72420e5ac8..8f274fcde4 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -451,6 +451,9 @@ GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE)) //Filters #define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, border=4, color="#04080FAA") - #define STANDARD_GRAVITY 1 //Anything above this is high gravity, anything below no grav #define GRAVITY_DAMAGE_TRESHOLD 3 //Starting with this value gravity will start to damage mobs + +#define CAMERA_NO_GHOSTS 0 +#define CAMERA_SEE_GHOSTS_BASIC 1 +#define CAMERA_SEE_GHOSTS_ORBIT 2 diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm index bbaf7b275d..8819eb4d04 100644 --- a/code/__HELPERS/priority_announce.dm +++ b/code/__HELPERS/priority_announce.dm @@ -19,7 +19,7 @@ announcement += "

    [sender_override]

    " if (title && length(title) > 0) announcement += "

    [html_encode(title)]

    " - + if(!sender_override) if(title == "") GLOB.news_network.SubmitArticle(text, "Central Command Update", "Station Announcements", null) @@ -46,7 +46,7 @@ var/datum/comm_message/M = new M.title = title M.content = text - + SScommunications.send_message(M) /proc/minor_announce(message, title = "Attention:", alert) diff --git a/code/__HELPERS/qdel.dm b/code/__HELPERS/qdel.dm new file mode 100644 index 0000000000..9bd0d4c95f --- /dev/null +++ b/code/__HELPERS/qdel.dm @@ -0,0 +1,10 @@ +#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE) +#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) +#define QDEL_NULL(item) qdel(item); item = null +#define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); } +#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE) +#define QDEL_LIST_ASSOC(L) if(L) { for(var/I in L) { qdel(L[I]); qdel(I); } L.Cut(); } +#define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/I in L) qdel(L[I]); L.Cut(); } + +/proc/______qdel_list_wrapper(list/L) //the underscores are to encourage people not to use this directly. + QDEL_LIST(L) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 273e1cf1b7..f7aac6123e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1293,19 +1293,6 @@ GLOBAL_REAL_VAR(list/stack_trace_storage) #define RANDOM_COLOUR (rgb(rand(0,255),rand(0,255),rand(0,255))) -#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE) -#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) -#define QDEL_NULL(item) qdel(item); item = null -#define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); } -#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE) -#define QDEL_LIST_ASSOC(L) if(L) { for(var/I in L) { qdel(L[I]); qdel(I); } L.Cut(); } -#define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/I in L) qdel(L[I]); L.Cut(); } - -/proc/______qdel_list_wrapper(list/L) //the underscores are to encourage people not to use this directly. - QDEL_LIST(L) - - - /proc/random_nukecode() var/val = rand(0, 99999) var/str = "[val]" diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 7ca2d0d6f0..bd7f4afe62 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -46,3 +46,13 @@ GLOBAL_LIST_EMPTY(adminlog) GLOBAL_PROTECT(adminlog) GLOBAL_LIST_EMPTY(active_turfs_startlist) + +/////Picture logging +GLOBAL_VAR(picture_log_directory) +GLOBAL_PROTECT(picture_log_directory) + +GLOBAL_VAR_INIT(picture_logging_id, 1) +GLOBAL_PROTECT(picture_logging_id) +GLOBAL_VAR(picture_logging_prefix) +GLOBAL_PROTECT(picture_logging_prefix) +///// diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 045d038888..49bdd3f3c0 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -135,10 +135,10 @@ return if(isAI(usr)) var/mob/living/silicon/ai/AI = usr - AI.aicamera.toggle_camera_mode() + AI.aicamera.toggle_camera_mode(usr) else if(iscyborg(usr)) var/mob/living/silicon/robot/R = usr - R.aicamera.toggle_camera_mode() + R.aicamera.toggle_camera_mode(usr) /obj/screen/ai/image_view name = "View Images" @@ -149,10 +149,10 @@ return if(isAI(usr)) var/mob/living/silicon/ai/AI = usr - AI.aicamera.viewpictures() + AI.aicamera.viewpictures(usr) else if(iscyborg(usr)) var/mob/living/silicon/robot/R = usr - R.aicamera.viewpictures() + R.aicamera.viewpictures(usr) /obj/screen/ai/sensors name = "Sensor Augmentation" diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 4521aab14e..0eb81fa225 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -412,3 +412,7 @@ /datum/config_entry/string/default_view config_entry_value = "15x15" + +/datum/config_entry/flag/log_pictures + +/datum/config_entry/flag/picture_logging_camera diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm index 871eba49ad..fee93d14b2 100644 --- a/code/controllers/subsystem/pathfinder.dm +++ b/code/controllers/subsystem/pathfinder.dm @@ -9,7 +9,7 @@ SUBSYSTEM_DEF(pathfinder) /datum/controller/subsystem/pathfinder/Initialize() space_type_cache = typecacheof(/turf/open/space) mobs = new(10) - circuits = new(3) + circuits = new(3) return ..() /datum/flowcache diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 14db2f1607..0e92d56240 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -15,6 +15,9 @@ SUBSYSTEM_DEF(persistence) var/list/spawned_objects = list() var/list/antag_rep = list() var/list/antag_rep_change = list() + var/list/picture_logging_information = list() + var/list/obj/structure/sign/picture_frame/photo_frames + var/list/obj/item/storage/photo_album/photo_albums /datum/controller/subsystem/persistence/Initialize() LoadSatchels() @@ -22,6 +25,7 @@ SUBSYSTEM_DEF(persistence) LoadChiselMessages() LoadTrophies() LoadRecentModes() + LoadPhotoPersistence() if(CONFIG_GET(flag/use_antag_rep)) LoadAntagReputation() ..() @@ -194,15 +198,84 @@ SUBSYSTEM_DEF(persistence) T.placer_key = chosen_trophy["placer_key"] T.update_icon() - /datum/controller/subsystem/persistence/proc/CollectData() CollectChiselMessages() CollectSecretSatchels() CollectTrophies() CollectRoundtype() + SavePhotoPersistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION. if(CONFIG_GET(flag/use_antag_rep)) CollectAntagReputation() +/datum/controller/subsystem/persistence/proc/GetPhotoAlbums() + var/album_path = file("data/photo_albums.json") + if(fexists(album_path)) + return json_decode(file2text(album_path)) + +/datum/controller/subsystem/persistence/proc/GetPhotoFrames() + var/frame_path = file("data/photo_frames.json") + if(fexists(frame_path)) + return json_decode(file2text(frame_path)) + +/datum/controller/subsystem/persistence/proc/LoadPhotoPersistence() + var/album_path = file("data/photo_albums.json") + var/frame_path = file("data/photo_frames.json") + if(fexists(album_path)) + var/list/json = json_decode(file2text(album_path)) + if(json.len) + for(var/i in photo_albums) + var/obj/item/storage/photo_album/A = i + if(!A.persistence_id) + continue + if(json[A.persistence_id]) + A.populate_from_id_list(json[A.persistence_id]) + + if(fexists(frame_path)) + var/list/json = json_decode(file2text(frame_path)) + if(json.len) + for(var/i in photo_frames) + var/obj/structure/sign/picture_frame/PF = i + if(!PF.persistence_id) + continue + if(json[PF.persistence_id]) + PF.load_from_id(json[PF.persistence_id]) + +/datum/controller/subsystem/persistence/proc/SavePhotoPersistence() + var/album_path = file("data/photo_albums.json") + var/frame_path = file("data/photo_frames.json") + + var/list/frame_json = list() + var/list/album_json = list() + + if(fexists(album_path)) + album_json = json_decode(file2text(album_path)) + fdel(album_path) + + for(var/i in photo_albums) + var/obj/item/storage/photo_album/A = i + if(!istype(A) || !A.persistence_id) + continue + var/list/L = A.get_picture_id_list() + album_json[A.persistence_id] = L + + album_json = json_encode(album_json) + + WRITE_FILE(album_path, album_json) + + if(fexists(frame_path)) + frame_json = json_decode(file2text(frame_path)) + fdel(frame_path) + + for(var/i in photo_frames) + var/obj/structure/sign/picture_frame/F = i + if(!istype(F) || !F.persistence_id) + continue + frame_json[F.persistence_id] = F.get_photo_id() + + frame_json = json_encode(frame_json) + + WRITE_FILE(frame_path, frame_json) + /datum/controller/subsystem/persistence/proc/CollectSecretSatchels() satchel_blacklist = typecacheof(list(/obj/item/stack/tile/plasteel, /obj/item/crowbar)) var/list/satchels_to_add = list() diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index c88a86c092..60bb24c8c2 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -214,13 +214,16 @@ if(!C) C = H.client var/image = get_id_photo(H, C, show_directions) - var/obj/item/photo/photo_front = new() - var/obj/item/photo/photo_side = new() - for(var/D in show_directions) - if(D == SOUTH) - photo_front.photocreate(null, icon(image, dir = D)) - if(D == WEST || D == EAST) - photo_side.photocreate(null, icon(image, dir = D)) + var/datum/picture/pf = new + var/datum/picture/ps = new + pf.picture_name = "[H]" + ps.picture_name = "[H]" + pf.picture_desc = "This is [H]." + ps.picture_desc = "This is [H]." + pf.picture_image = icon(image, dir = SOUTH) + ps.picture_image = icon(image, dir = WEST) + var/obj/item/photo/photo_front = new(null, pf) + var/obj/item/photo/photo_side = new(null, ps) //These records should ~really~ be merged or something //General Record diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 376bb20707..88608d21ba 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -84,3 +84,67 @@ /datum/proc/to_chat_check_changed_vars(target = world) to_chat(target, txt_changed_vars()) #endif + +//Return a LIST for serialize_datum to encode! Not the actual json! +/datum/proc/serialize_list(list/options) + CRASH("Attempted to serialize datum [src] of type [type] without serialize_list being implemented!") + +//Accepts a LIST from deserialize_datum. Should return src or another datum. +/datum/proc/deserialize_list(json, list/options) + CRASH("Attempted to deserialize datum [src] of type [type] without deserialize_list being implemented!") + +//Serializes into JSON. Does not encode type. +/datum/proc/serialize_json(list/options) + . = serialize_list(options) + if(!islist(.)) + . = null + else + . = json_encode(.) + +//Deserializes from JSON. Does not parse type. +/datum/proc/deserialize_json(list/input, list/options) + var/list/jsonlist = json_decode(input) + . = deserialize_list(jsonlist) + if(!istype(., /datum)) + . = null + +/proc/json_serialize_datum(datum/D, list/options) + if(!istype(D)) + return + var/list/jsonlist = D.serialize_list(options) + if(islist(jsonlist)) + jsonlist["DATUM_TYPE"] = D.type + return json_encode(jsonlist) + +/proc/json_deserialize_datum(list/jsonlist, list/options, target_type, strict_target_type = FALSE) + if(!islist(jsonlist)) + if(!istext(jsonlist)) + CRASH("Invalid JSON") + return + jsonlist = json_decode(jsonlist) + if(!islist(jsonlist)) + CRASH("Invalid JSON") + return + if(!jsonlist["DATUM_TYPE"]) + return + if(!ispath(jsonlist["DATUM_TYPE"])) + if(!istext(jsonlist["DATUM_TYPE"])) + return + jsonlist["DATUM_TYPE"] = text2path(jsonlist["DATUM_TYPE"]) + if(!ispath(jsonlist["DATUM_TYPE"])) + return + if(target_type) + if(!ispath(target_type)) + return + if(strict_target_type) + if(target_type != jsonlist["DATUM_TYPE"]) + return + else if(!ispath(jsonlist["DATUM_TYPE"], target_type)) + return + var/typeofdatum = jsonlist["DATUM_TYPE"] //BYOND won't directly read if this is just put in the line below, and will instead runtime because it thinks you're trying to make a new list? + var/datum/D = new typeofdatum + var/datum/returned = D.deserialize_list(jsonlist, options) + if(!istype(returned, /datum)) + qdel(D) + else + return returned diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 0553064e55..86c7b70c00 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -148,12 +148,12 @@ /datum/objective_item/steal/blueprints/check_special_completion(obj/item/I) if(istype(I, /obj/item/areaeditor/blueprints)) - return 1 + return TRUE if(istype(I, /obj/item/photo)) var/obj/item/photo/P = I - if(P.blueprints) //if the blueprints are in frame - return 1 - return 0 + if(P.picture.has_blueprints) //if the blueprints are in frame + return TRUE + return FALSE /datum/objective_item/steal/slime name = "an unused sample of slime extract." diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 660ad4763f..d65fb49161 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -108,10 +108,10 @@ if(active1 in GLOB.data_core.general) if(istype(active1.fields["photo_front"], /obj/item/photo)) var/obj/item/photo/P1 = active1.fields["photo_front"] - user << browse_rsc(P1.img, "photo_front") + user << browse_rsc(P1.picture.picture_image, "photo_front") if(istype(active1.fields["photo_side"], /obj/item/photo)) var/obj/item/photo/P2 = active1.fields["photo_side"] - user << browse_rsc(P2.img, "photo_side") + user << browse_rsc(P2.picture.picture_image, "photo_side") dat += "Name:[active1.fields["name"]]" dat += "
    " dat += "" diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index f3f4c5e523..bacedad6c0 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -183,10 +183,10 @@ if(istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)) if(istype(active1.fields["photo_front"], /obj/item/photo)) var/obj/item/photo/P1 = active1.fields["photo_front"] - user << browse_rsc(P1.img, "photo_front") + user << browse_rsc(P1.picture.picture_image, "photo_front") if(istype(active1.fields["photo_side"], /obj/item/photo)) var/obj/item/photo/P2 = active1.fields["photo_side"] - user << browse_rsc(P2.img, "photo_side") + user << browse_rsc(P2.picture.picture_image, "photo_side") dat += {"
    @@ -447,7 +447,7 @@ What a mess.*/ sleep(30) if((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)))//make sure the record still exists. var/obj/item/photo/photo = active1.fields["photo_front"] - new /obj/item/poster/wanted(src.loc, photo.img, wanted_name, info) + new /obj/item/poster/wanted(loc, photo.picture.picture_image, wanted_name, info) printing = 0 //RECORD DELETE @@ -612,7 +612,7 @@ What a mess.*/ if(photo) qdel(active1.fields["photo_front"]) //Lets center it to a 32x32. - var/icon/I = photo.img + var/icon/I = photo.picture.picture_image var/w = I.Width() var/h = I.Height() var/dw = w - 32 @@ -623,7 +623,7 @@ What a mess.*/ if(active1.fields["photo_front"]) if(istype(active1.fields["photo_front"], /obj/item/photo)) var/obj/item/photo/P = active1.fields["photo_front"] - print_photo(P.img, active1.fields["name"]) + print_photo(P.picture.picture_image, active1.fields["name"]) if("show_photo_side") if(active1.fields["photo_side"]) if(istype(active1.fields["photo_side"], /obj/item/photo)) @@ -634,7 +634,7 @@ What a mess.*/ if(photo) qdel(active1.fields["photo_side"]) //Lets center it to a 32x32. - var/icon/I = photo.img + var/icon/I = photo.picture.picture_image var/w = I.Width() var/h = I.Height() var/dw = w - 32 @@ -645,7 +645,7 @@ What a mess.*/ if(active1.fields["photo_side"]) if(istype(active1.fields["photo_side"], /obj/item/photo)) var/obj/item/photo/P = active1.fields["photo_side"] - print_photo(P.img, active1.fields["name"]) + print_photo(P.picture.picture_image, active1.fields["name"]) if("mi_crim_add") if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) @@ -760,10 +760,9 @@ What a mess.*/ var/obj/item/photo/P = null if(issilicon(user)) var/mob/living/silicon/tempAI = user - var/datum/picture/selection = tempAI.GetPhoto() + var/datum/picture/selection = tempAI.GetPhoto(user) if(selection) - P = new() - P.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"]) + P = new(null, selection) else if(istype(user.get_active_held_item(), /obj/item/photo)) P = user.get_active_held_item() return P @@ -779,7 +778,7 @@ What a mess.*/ small_img.Scale(8, 8) ic.Blend(small_img,ICON_OVERLAY, 13, 13) P.icon = ic - P.img = temp + P.picture.picture_image = temp P.desc = "The photo on file for [name]." P.pixel_x = rand(-10, 10) P.pixel_y = rand(-10, 10) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 887eba8047..9cf3a9aaa0 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -118,17 +118,17 @@ GLOBAL_LIST_EMPTY(allCasters) newChannel.is_admin_channel = adminChannel network_channels += newChannel -/datum/newscaster/feed_network/proc/SubmitArticle(msg, author, channel_name, obj/item/photo/photo, adminMessage = 0, allow_comments = 1) +/datum/newscaster/feed_network/proc/SubmitArticle(msg, author, channel_name, datum/picture/picture, adminMessage = 0, allow_comments = 1) var/datum/newscaster/feed_message/newMsg = new /datum/newscaster/feed_message newMsg.author = author newMsg.body = msg newMsg.time_stamp = "[station_time_timestamp()]" newMsg.is_admin_message = adminMessage newMsg.locked = !allow_comments - if(photo) - newMsg.img = photo.img - newMsg.caption = photo.scribble - newMsg.photo_file = save_photo(photo.img) + if(picture) + newMsg.img = picture.picture_image + newMsg.caption = picture.caption + newMsg.photo_file = save_photo(picture.picture_image) for(var/datum/newscaster/feed_channel/FC in network_channels) if(FC.channel_name == channel_name) FC.messages += newMsg @@ -138,15 +138,15 @@ GLOBAL_LIST_EMPTY(allCasters) lastAction ++ newMsg.creationTime = lastAction -/datum/newscaster/feed_network/proc/submitWanted(criminal, body, scanned_user, obj/item/photo/photo, adminMsg = 0, newMessage = 0) +/datum/newscaster/feed_network/proc/submitWanted(criminal, body, scanned_user, datum/picture/picture, adminMsg = 0, newMessage = 0) wanted_issue.active = 1 wanted_issue.criminal = criminal wanted_issue.body = body wanted_issue.scannedUser = scanned_user wanted_issue.isAdminMsg = adminMsg - if(photo) - wanted_issue.img = photo.img - wanted_issue.photo_file = save_photo(photo.img) + if(picture) + wanted_issue.img = picture.picture_image + wanted_issue.photo_file = save_photo(picture.picture_image) if(newMessage) for(var/obj/machinery/newscaster/N in GLOB.allCasters) N.newsAlert() @@ -197,7 +197,7 @@ GLOBAL_LIST_EMPTY(allCasters) var/alert = FALSE var/scanned_user = "Unknown" var/msg = "" - var/obj/item/photo/photo = null + var/datum/picture/picture var/channel_name = "" var/c_locked=0 var/datum/newscaster/feed_channel/viewing_channel = null @@ -221,7 +221,7 @@ GLOBAL_LIST_EMPTY(allCasters) /obj/machinery/newscaster/Destroy() GLOB.allCasters -= src viewing_channel = null - photo = null + picture = null return ..() /obj/machinery/newscaster/update_icon() @@ -312,7 +312,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="
    Receiving Channel: [channel_name]
    " dat+="Message Author:[scanned_user]
    " dat+="Message Body:
    [parsemarkdown(msg, user)]
    " - dat+="Attach Photo: [(photo ? "Photo Attached" : "No Photo")]
    " + dat+="Attach Photo: [(picture ? "Photo Attached" : "No Photo")]
    " dat+="Comments [allow_comments ? "Enabled" : "Disabled"]
    " dat+="
    Submit

    Cancel
    " if(4) @@ -454,7 +454,7 @@ GLOBAL_LIST_EMPTY(allCasters) dat+="
    " dat+="Criminal Name: [channel_name]
    " dat+="Description: [msg]
    " - dat+="Attach Photo: [(photo ? "Photo Attached" : "No Photo")]
    " + dat+="Attach Photo: [(picture ? "Photo Attached" : "No Photo")]
    " if(wanted_already) dat+="Wanted Issue created by:[GLOB.news_network.wanted_issue.scannedUser]
    " else @@ -561,7 +561,7 @@ GLOBAL_LIST_EMPTY(allCasters) if(msg =="" || msg=="\[REDACTED\]" || scanned_user == "Unknown" || channel_name == "" ) screen=6 else - GLOB.news_network.SubmitArticle("[parsemarkdown(msg, usr)]", scanned_user, channel_name, photo, 0, allow_comments) + GLOB.news_network.SubmitArticle("[parsemarkdown(msg, usr)]", scanned_user, channel_name, picture, 0, allow_comments) SSblackbox.record_feedback("amount", "newscaster_stories", 1) screen=4 msg = "" @@ -612,13 +612,13 @@ GLOBAL_LIST_EMPTY(allCasters) if(choice=="Confirm") scan_user(usr) if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. - GLOB.news_network.submitWanted(channel_name, msg, scanned_user, photo, 0 , 1) + GLOB.news_network.submitWanted(channel_name, msg, scanned_user, picture, 0 , 1) screen = 15 else if(GLOB.news_network.wanted_issue.isAdminMsg) alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot edit it.","Ok") return - GLOB.news_network.submitWanted(channel_name, msg, scanned_user, photo) + GLOB.news_network.submitWanted(channel_name, msg, scanned_user, picture) screen = 19 updateUsrDialog() else if(href_list["cancel_wanted"]) @@ -783,22 +783,11 @@ GLOBAL_LIST_EMPTY(allCasters) take_damage(5, BRUTE, "melee") /obj/machinery/newscaster/proc/AttachPhoto(mob/user) + var/obj/item/photo/photo = user.is_holding_item_of_type(/obj/item/photo) if(photo) - if(!photo.sillynewscastervar) - photo.forceMove(drop_location()) - if(!issilicon(user)) - user.put_in_inactive_hand(photo) - else - qdel(photo) - photo = null - photo = user.is_holding_item_of_type(/obj/item/photo) - if(photo && !user.transferItemToLoc(photo, src)) - photo = null + picture = photo.picture if(issilicon(user)) - var/list/nametemp = list() - var/find - var/datum/picture/selection - var/obj/item/camera/siliconcam/targetcam = null + var/obj/item/camera/siliconcam/targetcam if(isAI(user)) var/mob/living/silicon/ai/R = user targetcam = R.aicamera @@ -810,21 +799,12 @@ GLOBAL_LIST_EMPTY(allCasters) targetcam = R.aicamera else to_chat(user, "You cannot interface with silicon photo uploading!") - if(targetcam.aipictures.len == 0) + if(!targetcam.stored.len) to_chat(usr, "No images saved") return - for(var/datum/picture/t in targetcam.aipictures) - nametemp += t.fields["name"] - find = input("Select image (numbered in order taken)") in nametemp - var/obj/item/photo/P = new/obj/item/photo() - for(var/datum/picture/q in targetcam.aipictures) - if(q.fields["name"] == find) - selection = q - break - P.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"]) - P.sillynewscastervar = 1 - photo = P - qdel(P) + var/datum/picture/selection = targetcam.selectpicture(user) + if(selection) + picture = selection /obj/machinery/newscaster/proc/scan_user(mob/living/user) if(ishuman(user)) diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 74881cb064..5996bcea6b 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -141,7 +141,7 @@ break // Del - Sender - Recepient - Message // X - Al Green - Your Mom - WHAT UP!? - dat += "" + dat += "" dat += "
    Name: [active1.fields["name"]] 
    ID: [active1.fields["id"]] 
    X
    [pda.sender][pda.recipient][pda.message][pda.photo ? " (Photo)":""]
    X
    [pda.sender][pda.recipient][pda.message][pda.picture ? " (Photo)":""]
    " //Hacking screen. if(2) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 45661add0d..3b2dbed96f 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -124,7 +124,7 @@ var/sender = "Unspecified" var/recipient = "Unspecified" var/message = "Blank" // transferred message - var/icon/photo // attached photo + var/datum/picture/picture // attached photo /datum/data_pda_msg/New(param_rec, param_sender, param_message, param_photo) if(param_rec) @@ -134,17 +134,17 @@ if(param_message) message = param_message if(param_photo) - photo = param_photo + picture = param_photo /datum/data_pda_msg/Topic(href,href_list) ..() if(href_list["photo"]) var/mob/M = usr - M << browse_rsc(photo, "pda_photo.png") + M << browse_rsc(picture.picture_image, "pda_photo.png") M << browse("PDA Photo" \ + "" \ + "" \ - + "", "window=pdaphoto;size=192x192") + + "", "window=pdaphoto;size=[picture.psize_x]x[picture.psize_y]") onclose(M, "pdaphoto") /datum/data_rc_msg diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index e314972012..de912f4ca4 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -72,7 +72,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/obj/item/paicard/pai = null // A slot for a personal AI device - var/icon/photo //Scanned photo + var/datum/picture/picture //Scanned photo var/list/contained_item = list(/obj/item/pen, /obj/item/toy/crayon, /obj/item/lipstick, /obj/item/flashlight/pen, /obj/item/clothing/mask/cigarette) var/obj/item/inserted_item //Used for pen, crayon, and lipstick insertion or removal. Same as above. @@ -631,8 +631,8 @@ GLOBAL_LIST_EMPTY(PDAs) "message" = message, "targets" = string_targets )) - if (photo) - signal.data["photo"] = photo + if (picture) + signal.data["photo"] = picture signal.send_to_receivers() // If it didn't reach, note that fact @@ -652,7 +652,7 @@ GLOBAL_LIST_EMPTY(PDAs) log_talk(user, "[key_name(user)] (PDA: [initial(name)]) sent \"[message]\" to [target_text]", LOGPDA) to_chat(user, "Message sent to [target_text]: \"[message]\"") // Reset the photo - photo = null + picture = null last_text = world.time if (everyone) last_everyone = world.time @@ -821,7 +821,7 @@ GLOBAL_LIST_EMPTY(PDAs) update_icon() else if(istype(C, /obj/item/photo)) var/obj/item/photo/P = C - photo = P.img + picture = P.picture to_chat(user, "You scan \the [C].") else return ..() @@ -936,11 +936,11 @@ GLOBAL_LIST_EMPTY(PDAs) var/selected = plist[c] - if(aicamera.aipictures.len>0) + if(aicamera.stored.len) var/add_photo = input(user,"Do you want to attach a photo?","Photo","No") as null|anything in list("Yes","No") if(add_photo=="Yes") - var/datum/picture/Pic = aicamera.selectpicture(aicamera) - aiPDA.photo = Pic.fields["img"] + var/datum/picture/Pic = aicamera.selectpicture(user) + aiPDA.picture = Pic if(incapacitated()) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 23ac589a88..a062be0964 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -19,4 +19,5 @@ new /obj/item/export_scanner(src) new /obj/item/door_remote/quartermaster(src) new /obj/item/circuitboard/machine/techfab/department/cargo(src) + new /obj/item/storage/photo_album/QM(src) new /obj/item/circuitboard/machine/ore_silo(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 97a157e0be..45216a6d95 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -29,6 +29,7 @@ new /obj/item/inducer(src) new /obj/item/circuitboard/machine/techfab/department/engineering(src) new /obj/item/extinguisher/advanced(src) + new /obj/item/storage/photo_album/CE(src) /obj/structure/closet/secure_closet/engineering_electrical name = "electrical supplies locker" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index d3d2e13786..14d6e5f4e7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -76,6 +76,7 @@ new /obj/item/pet_carrier(src) new /obj/item/wallframe/defib_mount(src) new /obj/item/circuitboard/machine/techfab/department/medical(src) + new /obj/item/storage/photo_album/CMO(src) /obj/structure/closet/secure_closet/animal name = "animal control" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 6e5c425b2b..eb10b97bc3 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -25,3 +25,4 @@ new /obj/item/laser_pointer(src) new /obj/item/door_remote/research_director(src) new /obj/item/circuitboard/machine/techfab/department/science(src) + new /obj/item/storage/photo_album/RD(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index faf5574374..52bf73fdc8 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -32,6 +32,7 @@ new /obj/item/gun/energy/e_gun(src) new /obj/item/door_remote/captain(src) new /obj/item/card/id/captains_spare(src) + new /obj/item/storage/photo_album/Captain(src) /obj/structure/closet/secure_closet/hop name = "\proper head of personnel's locker" @@ -58,6 +59,7 @@ new /obj/item/pet_carrier(src) new /obj/item/door_remote/civillian(src) new /obj/item/circuitboard/machine/techfab/department/service(src) + new /obj/item/storage/photo_album/HoP(src) /obj/structure/closet/secure_closet/hos name = "\proper head of security's locker" @@ -90,6 +92,7 @@ new /obj/item/flashlight/seclite(src) new /obj/item/pinpointer/nuke(src) new /obj/item/circuitboard/machine/techfab/department/security(src) + new /obj/item/storage/photo_album/HoS(src) /obj/structure/closet/secure_closet/warden name = "\proper warden's locker" diff --git a/code/game/world.dm b/code/game/world.dm index 9f6b709395..0e68bba2cc 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -76,13 +76,24 @@ GLOBAL_PROTECT(security_mode) /world/proc/SetupLogs() var/override_dir = params[OVERRIDE_LOG_DIRECTORY_PARAMETER] if(!override_dir) - GLOB.log_directory = "data/logs/[time2text(world.realtime, "YYYY/MM/DD")]/round-" + var/realtime = world.realtime + var/texttime = time2text(realtime, "YYYY/MM/DD") + GLOB.log_directory = "data/logs/[texttime]/round-" + GLOB.picture_logging_prefix = "L_[time2text(realtime, "YYYYMMDD")]_" + GLOB.picture_log_directory = "data/picture_logs/[texttime]/round-" if(GLOB.round_id) GLOB.log_directory += "[GLOB.round_id]" + GLOB.picture_logging_prefix += "R_[GLOB.round_id]_" + GLOB.picture_log_directory += "[GLOB.round_id]" else - GLOB.log_directory += "[replacetext(time_stamp(), ":", ".")]" + var/timestamp = replacetext(time_stamp(), ":", ".") + GLOB.log_directory += "[timestamp]" + GLOB.picture_log_directory += "[timestamp]" + GLOB.picture_logging_prefix += "T_[timestamp]_" else GLOB.log_directory = "data/logs/[override_dir]" + GLOB.picture_logging_prefix = "O_[override_dir]_" + GLOB.picture_log_directory = "data/picture_logs/[override_dir]" GLOB.world_game_log = "[GLOB.log_directory]/game.log" GLOB.world_attack_log = "[GLOB.log_directory]/attack.log" diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index e5ee73d27f..899c0a3933 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -48,7 +48,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( /client/proc/show_line_profiling, /client/proc/create_mapping_job_icons, /client/proc/debug_z_levels, - /client/proc/place_ruin, + /client/proc/place_ruin )) /obj/effect/debugging/mapfix_marker diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm index 5614fc9105..10581e7bbb 100644 --- a/code/modules/antagonists/abductor/machinery/experiment.dm +++ b/code/modules/antagonists/abductor/machinery/experiment.dm @@ -99,8 +99,9 @@ dat += "

    Experiment

    " if(occupant) var/obj/item/photo/P = new - P.photocreate(null, icon(dissection_icon(occupant), dir = SOUTH)) - user << browse_rsc(P.img, "dissection_img") + P.picture = new + P.picture.picture_image = icon(dissection_icon(occupant), dir = SOUTH) + user << browse_rsc(P.picture.picture_image, "dissection_img") dat += "" mutant_category = 0 - if(CONFIG_GET(flag/join_with_mutant_humans)) + if("tail_human" in pref_species.default_features) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN - if("tail_human" in pref_species.default_features) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN + dat += "

    Tail

    " - dat += "

    Tail

    " + dat += "[features["tail_human"]]
    " - dat += "[features["tail_human"]]
    " + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 + if("ears" in pref_species.default_features) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN - if("ears" in pref_species.default_features) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN + dat += "

    Ears

    " - dat += "

    Ears

    " + dat += "[features["ears"]]
    " - dat += "[features["ears"]]
    " + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 + if(CONFIG_GET(flag/join_with_mutant_humans)) if("wings" in pref_species.default_features && GLOB.r_wings_list.len >1) if(!mutant_category) @@ -1515,7 +1515,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) chosen_species = /datum/species/human pref_species = new /datum/species/human save_character() - character.set_species(chosen_species, icon_update=0) + character.set_species(chosen_species, icon_update = FALSE, pref_load = TRUE) if(icon_updates) character.update_body() @@ -1540,7 +1540,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/namedata = GLOB.preferences_custom_names[name_id] if(!namedata) return - + var/raw_name = input(user, "Choose your character's [namedata["qdesc"]]:","Character Preference") as text|null if(!raw_name) if(namedata["allow_null"]) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 36e8c36f08..7d853e5453 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -204,7 +204,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["species"] >> species_id if(species_id) var/newtype = GLOB.species_list[species_id] - pref_species = new newtype() + if(newtype) + pref_species = new newtype if(!S["features["mcolor"]"] || S["features["mcolor"]"] == "#000") WRITE_FILE(S["features["mcolor"]"] , "#FFF") @@ -241,12 +242,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else S["feature_human_tail"] >> features["tail_human"] S["feature_human_ears"] >> features["ears"] - + //Custom names for(var/custom_name_id in GLOB.preferences_custom_names) var/savefile_slot_name = custom_name_id + "_name" //TODO remove this - S[savefile_slot_name] >> custom_names[custom_name_id] - + S[savefile_slot_name] >> custom_names[custom_name_id] + S["prefered_security_department"] >> prefered_security_department //Jobs @@ -289,7 +290,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name)) be_random_body = sanitize_integer(be_random_body, 0, 1, initial(be_random_body)) - + if(gender == MALE) hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_male_list) facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_male_list) @@ -382,7 +383,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car for(var/custom_name_id in GLOB.preferences_custom_names) var/savefile_slot_name = custom_name_id + "_name" //TODO remove this WRITE_FILE(S[savefile_slot_name],custom_names[custom_name_id]) - + WRITE_FILE(S["prefered_security_department"] , prefered_security_department) //Jobs diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index 5d4802f93a..2f4daed279 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -82,7 +82,6 @@ if(H.dna.species.id != "human") H.set_species(/datum/species/human) H.apply_pref_name("human", H.client) - purrbation_remove(H, silent=TRUE) //Equip the rest of the gear H.dna.species.before_equip_job(src, H, visualsOnly) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 786ddec5dd..0db3d82777 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -77,53 +77,26 @@ if(!.) return var/mob/living/carbon/human/H = user - if(!H.is_wagging_tail()) - H.startTailWag() + if(!istype(H) || !H.dna || !H.dna.species || !H.dna.species.can_wag_tail(H)) + return + if(!H.dna.species.is_wagging_tail()) + H.dna.species.start_wagging_tail(H) else - H.endTailWag() - -/mob/living/carbon/human/proc/is_wagging_tail() - return (dna && dna.species && (("waggingtail_lizard" in dna.species.mutant_bodyparts) || ("waggingtail_human" in dna.species.mutant_bodyparts))) + H.dna.species.stop_wagging_tail(H) /datum/emote/living/carbon/human/wag/can_run_emote(mob/user, status_check = TRUE) if(!..()) return FALSE var/mob/living/carbon/human/H = user - if(H.dna && H.dna.species && (("tail_lizard" in H.dna.species.mutant_bodyparts) || ("waggingtail_lizard" in H.dna.species.mutant_bodyparts) || ("tail_human" in H.dna.species.mutant_bodyparts) || ("waggingtail_human" in H.dna.species.mutant_bodyparts))) - return TRUE + return H.dna && H.dna.species && H.dna.species.can_wag_tail(user) /datum/emote/living/carbon/human/wag/select_message_type(mob/user) . = ..() var/mob/living/carbon/human/H = user - if(H.is_wagging_tail()) - . = null - -//Don't know where else to put this, it's basically an emote -/mob/living/carbon/human/proc/startTailWag() - if(!dna || !dna.species) + if(!H.dna || !H.dna.species) return - if("tail_lizard" in dna.species.mutant_bodyparts) - dna.species.mutant_bodyparts -= "tail_lizard" - dna.species.mutant_bodyparts -= "spines" - dna.species.mutant_bodyparts |= "waggingtail_lizard" - dna.species.mutant_bodyparts |= "waggingspines" - if("tail_human" in dna.species.mutant_bodyparts) - dna.species.mutant_bodyparts -= "tail_human" - dna.species.mutant_bodyparts |= "waggingtail_human" - update_body() - -/mob/living/carbon/human/proc/endTailWag() - if(!dna || !dna.species) - return - if("waggingtail_lizard" in dna.species.mutant_bodyparts) - dna.species.mutant_bodyparts -= "waggingtail_lizard" - dna.species.mutant_bodyparts -= "waggingspines" - dna.species.mutant_bodyparts |= "tail_lizard" - dna.species.mutant_bodyparts |= "spines" - if("waggingtail_human" in dna.species.mutant_bodyparts) - dna.species.mutant_bodyparts -= "waggingtail_human" - dna.species.mutant_bodyparts |= "tail_human" - update_body() + if(H.dna.species.is_wagging_tail()) + . = null /datum/emote/living/carbon/human/wing key = "wing" diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 0d3fdd9cc1..2f08f22db1 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -241,7 +241,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/obj/item/organ/I = new path() I.Insert(C) -/datum/species/proc/on_species_gain(mob/living/carbon/C, datum/species/old_species) +/datum/species/proc/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) // Drop the items the new species can't wear for(var/slot_id in no_equip) var/obj/item/thing = C.get_item_by_slot(slot_id) @@ -286,7 +286,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) A.cure(FALSE) -/datum/species/proc/on_species_loss(mob/living/carbon/C) +/datum/species/proc/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) if(C.dna.species.exotic_bloodtype) C.dna.blood_type = random_blood_type() if(DIGITIGRADE in species_traits) @@ -1664,3 +1664,17 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/negates_gravity(mob/living/carbon/human/H) return 0 + +//////////////// +//Tail Wagging// +//////////////// + +/datum/species/proc/can_wag_tail(mob/living/carbon/human/H) + return FALSE + +/datum/species/proc/is_wagging_tail(mob/living/carbon/human/H) + return FALSE + +/datum/species/proc/start_wagging_tail(mob/living/carbon/human/H) + +/datum/species/proc/stop_wagging_tail(mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm new file mode 100644 index 0000000000..1d82614fb1 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -0,0 +1,130 @@ +//Subtype of human +/datum/species/human/felinid + name = "Felinid" + id = "felinid" + limbs_id = "human" + + mutant_bodyparts = list("ears", "tail_human") + default_features = list("mcolor" = "FFF", "tail_human" = "Cat", "ears" = "Cat", "wings" = "None") + + mutantears = /obj/item/organ/ears/cat + mutanttail = /obj/item/organ/tail/cat + +/datum/species/human/felinid/qualifies_for_rank(rank, list/features) + return TRUE + +//Curiosity killed the cat's wagging tail. +/datum/species/human/felinid/spec_death(gibbed, mob/living/carbon/human/H) + if(H) + stop_wagging_tail(H) + +/datum/species/human/felinid/spec_stun(mob/living/carbon/human/H,amount) + if(H) + stop_wagging_tail(H) + . = ..() + +/datum/species/human/felinid/can_wag_tail(mob/living/carbon/human/H) + return ("tail_human" in mutant_bodyparts) || ("waggingtail_human" in mutant_bodyparts) + +/datum/species/human/felinid/is_wagging_tail(mob/living/carbon/human/H) + return ("waggingtail_human" in mutant_bodyparts) + +/datum/species/human/felinid/start_wagging_tail(mob/living/carbon/human/H) + if("tail_human" in mutant_bodyparts) + mutant_bodyparts -= "tail_human" + mutant_bodyparts |= "waggingtail_human" + H.update_body() + +/datum/species/human/felinid/stop_wagging_tail(mob/living/carbon/human/H) + if("waggingtail_human" in mutant_bodyparts) + mutant_bodyparts -= "waggingtail_human" + mutant_bodyparts |= "tail_human" + H.update_body() + +/datum/species/human/felinid/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!pref_load) //Hah! They got forcefully purrbation'd. Force default felinid parts on them if they have no mutant parts in those areas! + if(H.dna.features["tail_human"] == "None") + H.dna.features["tail_human"] = "Cat" + if(H.dna.features["ears"] == "None") + H.dna.features["ears"] = "Cat" + if(H.dna.features["ears"] == "Cat") + var/obj/item/organ/ears/cat/ears = new + ears.Insert(H, drop_if_replaced = FALSE) + else + mutantears = /obj/item/organ/ears + if(H.dna.features["tail_human"] == "Cat") + var/obj/item/organ/tail/cat/tail = new + tail.Insert(H, drop_if_replaced = FALSE) + else + mutanttail = null + return ..() + +/datum/species/human/felinid/on_species_loss(mob/living/carbon/H, datum/species/new_species, pref_load) + var/obj/item/organ/ears/cat/ears = H.getorgan(/obj/item/organ/ears/cat) + var/obj/item/organ/tail/cat/tail = H.getorgan(/obj/item/organ/tail/cat) + + if(ears) + var/obj/item/organ/ears/NE + if(new_species && new_species.mutantears) + // Roundstart cat ears override new_species.mutantears, reset it here. + new_species.mutantears = initial(new_species.mutantears) + if(new_species.mutantears) + NE = new new_species.mutantears + if(!NE) + // Go with default ears + NE = new /obj/item/organ/ears + NE.Insert(H, drop_if_replaced = FALSE) + + if(tail) + var/obj/item/organ/tail/NT + if(new_species && new_species.mutanttail) + // Roundstart cat tail overrides new_species.mutanttail, reset it here. + new_species.mutanttail = initial(new_species.mutanttail) + if(new_species.mutanttail) + NT = new new_species.mutanttail + if(NT) + NT.Insert(H, drop_if_replaced = FALSE) + else + tail.Remove(H) + +/proc/mass_purrbation() + for(var/M in GLOB.mob_list) + if(ishumanbasic(M)) + purrbation_apply(M) + CHECK_TICK + +/proc/mass_remove_purrbation() + for(var/M in GLOB.mob_list) + if(ishumanbasic(M)) + purrbation_remove(M) + CHECK_TICK + +/proc/purrbation_toggle(mob/living/carbon/human/H, silent = FALSE) + if(!ishumanbasic(H)) + return + if(!iscatperson(H)) + purrbation_apply(H, silent) + . = TRUE + else + purrbation_remove(H, silent) + . = FALSE + +/proc/purrbation_apply(mob/living/carbon/human/H, silent = FALSE) + if(!ishuman(H) || iscatperson(H)) + return + H.set_species(/datum/species/human/felinid) + + if(!silent) + to_chat(H, "Something is nya~t right.") + playsound(get_turf(H), 'sound/effects/meow1.ogg', 50, 1, -1) + +/proc/purrbation_remove(mob/living/carbon/human/H, silent = FALSE) + if(!ishuman(H) || !iscatperson(H)) + return + + H.set_species(/datum/species/human) + + if(!silent) + to_chat(H, "You are no longer a cat.") diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 2751b8b7a7..0f947b7293 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -3,29 +3,11 @@ id = "human" default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) - default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") + default_features = list("mcolor" = "FFF", "wings" = "None") use_skintones = 1 skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW liked_food = JUNKFOOD | FRIED - /datum/species/human/qualifies_for_rank(rank, list/features) return TRUE //Pure humans are always allowed in all roles. - -//Curiosity killed the cat's wagging tail. -/datum/species/human/spec_death(gibbed, mob/living/carbon/human/H) - if(H) - H.endTailWag() - -/datum/species/human/spec_stun(mob/living/carbon/human/H,amount) - if(H) - H.endTailWag() - . = ..() - -/datum/species/human/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) - if(H.dna.features["ears"] == "Cat") - mutantears = /obj/item/organ/ears/cat - if(H.dna.features["tail_human"] == "Cat") - mutanttail = /obj/item/organ/tail/cat - ..() diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 39db4d7097..5bf752436f 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -38,13 +38,35 @@ //I wag in death /datum/species/lizard/spec_death(gibbed, mob/living/carbon/human/H) if(H) - H.endTailWag() + stop_wagging_tail(H) /datum/species/lizard/spec_stun(mob/living/carbon/human/H,amount) if(H) - H.endTailWag() + stop_wagging_tail(H) . = ..() +/datum/species/lizard/can_wag_tail(mob/living/carbon/human/H) + return ("tail_lizard" in mutant_bodyparts) || ("waggingtail_lizard" in mutant_bodyparts) + +/datum/species/lizard/is_wagging_tail(mob/living/carbon/human/H) + return ("waggingtail_lizard" in mutant_bodyparts) + +/datum/species/lizard/start_wagging_tail(mob/living/carbon/human/H) + if("tail_lizard" in mutant_bodyparts) + mutant_bodyparts -= "tail_lizard" + mutant_bodyparts -= "spines" + mutant_bodyparts |= "waggingtail_lizard" + mutant_bodyparts |= "waggingspines" + H.update_body() + +/datum/species/lizard/stop_wagging_tail(mob/living/carbon/human/H) + if("waggingtail_lizard" in mutant_bodyparts) + mutant_bodyparts -= "waggingtail_lizard" + mutant_bodyparts -= "waggingspines" + mutant_bodyparts |= "tail_lizard" + mutant_bodyparts |= "spines" + H.update_body() + /* Lizard subspecies: ASHWALKERS */ diff --git a/code/modules/surgery/organs/tails.dm b/code/modules/surgery/organs/tails.dm index 8b05cbef08..b6701643a9 100644 --- a/code/modules/surgery/organs/tails.dm +++ b/code/modules/surgery/organs/tails.dm @@ -10,9 +10,8 @@ /obj/item/organ/tail/Remove(mob/living/carbon/human/H, special = 0) ..() - if(istype(H)) - H.endTailWag() - + if(H && H.dna && H.dna.species) + H.dna.species.stop_wagging_tail(H) /obj/item/organ/tail/cat name = "cat tail" diff --git a/tgstation.dme b/tgstation.dme index 0c1b869d42..b6e12e0498 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1901,6 +1901,7 @@ #include "code\modules\mob\living\carbon\human\species_types\angel.dm" #include "code\modules\mob\living\carbon\human\species_types\corporate.dm" #include "code\modules\mob\living\carbon\human\species_types\dullahan.dm" +#include "code\modules\mob\living\carbon\human\species_types\felinid.dm" #include "code\modules\mob\living\carbon\human\species_types\flypeople.dm" #include "code\modules\mob\living\carbon\human\species_types\golems.dm" #include "code\modules\mob\living\carbon\human\species_types\humans.dm" From fa5fc6093b6b508f79b5b6727d429fe8ad922d49 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 8 Aug 2018 10:56:49 -0700 Subject: [PATCH 354/403] Automatic changelog generation for PR #39513 [ci skip] --- html/changelogs/AutoChangeLog-pr-39513.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39513.yml diff --git a/html/changelogs/AutoChangeLog-pr-39513.yml b/html/changelogs/AutoChangeLog-pr-39513.yml new file mode 100644 index 0000000000..6e23aaa8bd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39513.yml @@ -0,0 +1,5 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "Catpeople are now a subspecies of human. Switch your character's species to \"Felinid\" to be one." + - rscadd: "Oh yeah and they show up as felinids on health analyzers." From 05fb1c7b7ff6afe4f9017d82395418c889766553 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Wed, 8 Aug 2018 19:58:40 +0200 Subject: [PATCH 355/403] Adds five new cargo packs (#39569) * Adds four new cargo packs * god dang it bobby * adds wrapping paper crate * reduces carpet crate price, since it's a bunch of useless carpet * adjusts festive crate price to 1000 bucks --- .../objects/items/stacks/tiles/tile_types.dm | 3 + code/modules/cargo/packs.dm | 67 +++++++++++++++++-- 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 2231207556..907b26c75c 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -100,6 +100,9 @@ turf_type = /turf/open/floor/carpet resistance_flags = FLAMMABLE +/obj/item/stack/tile/carpet/fifty + amount = 50 + /obj/item/stack/tile/carpet/black name = "black carpet" icon_state = "tile-carpet-black" diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 3c2844ca47..aae783ac33 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1052,6 +1052,15 @@ /obj/item/storage/firstaid/o2) crate_name = "oxygen deprivation kit crate" +/datum/supply_pack/medical/surgery + name = "Surgical Supplies Crate" + desc = "Do you want to perform surgery, but don't have one of those fancy shmancy degrees? Just get started with this crate containing a medical duffelbag, Sterilizine spray and collapsible roller bed." + cost = 3000 + contains = list(/obj/item/storage/backpack/duffelbag/med/surgery, + /obj/item/reagent_containers/medspray/sterilizine, + /obj/item/roller) + crate_name = "surgical supplies crate" + /datum/supply_pack/medical/firstaidtoxins name = "Toxin Treatment Kit Crate" desc = "Contains three first aid kits focused on healing damage dealt by heavy toxins." @@ -1072,7 +1081,8 @@ /obj/item/reagent_containers/blood/BPlus, /obj/item/reagent_containers/blood/BMinus, /obj/item/reagent_containers/blood/OPlus, - /obj/item/reagent_containers/blood/OMinus) + /obj/item/reagent_containers/blood/OMinus, + /obj/item/reagent_containers/blood/lizard) crate_name = "blood freezer" crate_type = /obj/structure/closet/crate/freezer @@ -1181,6 +1191,16 @@ crate_name = "\improper APLU Ripley circuit crate" crate_type = /obj/structure/closet/crate/secure/science +/datum/supply_pack/science/circuitry + name = "Circuitry Starter Pack Crate" + desc = "Journey into the mysterious world of Circuitry with this starter pack. Contains a circuit printer, analyzer, debugger and wirer. Power cells not included." + cost = 1000 + contains = list(/obj/item/integrated_electronics/analyzer, + /obj/item/integrated_circuit_printer, + /obj/item/integrated_electronics/debugger, + /obj/item/integrated_electronics/wirer) + crate_name = "circuitry starter pack crate" + /datum/supply_pack/science/plasma name = "Plasma Assembly Crate" desc = "Everything you need to burn something to the ground, this contains three plasma assembly sets. Each set contains a plasma tank, igniter, proximity sensor, and timer! Warranty void if exposed to high temperatures. Requires Toxins access to open." @@ -1257,6 +1277,18 @@ /datum/supply_pack/service group = "Service" +/datum/supply_pack/service/cargo_supples + name = "Cargo Supplies Crate" + desc = "Sold everything that wasn't bolted down? You can get right back to work with this crate containing stamps, an export scanner, destination tagger, hand labeler and some package wrapping." + cost = 1000 + contains = list(/obj/item/stamp, + /obj/item/stamp/denied, + /obj/item/export_scanner, + /obj/item/destTagger, + /obj/item/hand_labeler, + /obj/item/stack/packageWrap) + crate_name = "cargo supplies crate" + /datum/supply_pack/service/noslipfloor name = "High-traction Floor Tiles" desc = "Make slipping a thing of the past with thirty industrial-grade anti-slip floortiles!" @@ -1332,6 +1364,16 @@ /obj/item/flashlight/glowstick/pink) crate_name = "party equipment crate" +/datum/supply_pack/service/carpet + name = "Premium Carpet Crate" + desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together." + cost = 1000 + contains = list(/obj/item/stack/tile/carpet/fifty, + /obj/item/stack/tile/carpet/fifty, + /obj/item/stack/tile/carpet/black/fifty, + /obj/item/stack/tile/carpet/black/fifty) + crate_name = "premium carpet crate" + /datum/supply_pack/service/lightbulbs name = "Replacement Lights" desc = "May the light of Aether shine upon this station! Or at least, the light of forty two light tubes and twenty one light bulbs." @@ -1753,7 +1795,8 @@ /obj/item/storage/fancy/cigarettes/cigpack_syndicate, /obj/item/storage/fancy/cigarettes/cigpack_shadyjims, /obj/item/clothing/mask/gas/syndicate, - /obj/item/clothing/neck/necklace/dope) + /obj/item/clothing/neck/necklace/dope, + /obj/item/vending_refill/donksoft) crate_name = "crate" /datum/supply_pack/costumes_toys/foamforce @@ -1950,14 +1993,14 @@ crate_name = "autodrobe supply crate" /datum/supply_pack/costumes_toys/wardrobes/cargo - name = "Cargo Department Supply Crate" + name = "Cargo Wardrobe Supply Crate" desc = "This crate contains a refill for the CargoDrobe." cost = 750 contains = list(/obj/item/vending_refill/wardrobe/cargo_wardrobe) crate_name = "cargo department supply crate" /datum/supply_pack/costumes_toys/wardrobes/engineering - name = "Engineering Department Wardrobe Supply Crate" + name = "Engineering Wardrobe Supply Crate" desc = "This crate contains refills for the EngiDrobe and AtmosDrobe." cost = 1500 contains = list(/obj/item/vending_refill/wardrobe/engi_wardrobe, @@ -1983,7 +2026,7 @@ crate_name = "hydrobe supply crate" /datum/supply_pack/costumes_toys/wardrobes/medical - name = "Medical Department Wardrobe Supply Crate" + name = "Medical Wardrobe Supply Crate" desc = "This crate contains refills for the MediDrobe, ChemDrobe, GeneDrobe, and ViroDrobe." cost = 3000 contains = list(/obj/item/vending_refill/wardrobe/medi_wardrobe, @@ -1993,7 +2036,7 @@ crate_name = "medical department wardrobe supply crate" /datum/supply_pack/costumes_toys/wardrobes/science - name = "Science Department Wardrobe Supply Crate" + name = "Science Wardrobe Supply Crate" desc = "This crate contains refills for the SciDrobe and RoboDrobe." cost = 1500 contains = list(/obj/item/vending_refill/wardrobe/robo_wardrobe, @@ -2001,7 +2044,7 @@ crate_name = "science department wardrobe supply crate" /datum/supply_pack/costumes_toys/wardrobes/security - name = "Security Department Supply Crate" + name = "Security Wardrobe Supply Crate" desc = "This crate contains refills for the SecDrobe and LawDrobe." cost = 1500 contains = list(/obj/item/vending_refill/wardrobe/sec_wardrobe, @@ -2098,6 +2141,16 @@ cost = 700 contains = list(/obj/item/storage/box/fountainpens) crate_type = /obj/structure/closet/crate/wooden + crate_name = "calligraphy crate" + +/datum/supply_pack/misc/wrapping_paper + name = "Festive Wrapping Paper Crate" + desc = "Want to mail your loved ones gift-wrapped chocolates, stuffed animals, the Clown's severed head? You can do all that, with this crate full of wrapping paper." + cost = 1000 + contains = list(/obj/item/stack/wrapping_paper) + crate_type = /obj/structure/closet/crate/wooden + crate_name = "festive wrapping paper crate" + /datum/supply_pack/misc/funeral name = "Funeral Supply crate" From 7a1323e2dcb900618a8e588c321112cde9ac15dc Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 8 Aug 2018 10:58:44 -0700 Subject: [PATCH 356/403] Automatic changelog generation for PR #39569 [ci skip] --- html/changelogs/AutoChangeLog-pr-39569.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39569.yml diff --git a/html/changelogs/AutoChangeLog-pr-39569.yml b/html/changelogs/AutoChangeLog-pr-39569.yml new file mode 100644 index 0000000000..00b8af0b36 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39569.yml @@ -0,0 +1,5 @@ +author: "Denton" +delete-after: True +changes: + - rscadd: "Added five new cargo packs: cargo supplies, circuitry starter pack, premium carpet, surgical supplies and wrapping paper." + - tweak: "Added one bag of L type blood to the blood pack crate. Added a chance for contraband crates to contain DonkSoft refill packs." From b62562ffc8574a7f2b8d0e672ebf593753ee6d70 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Wed, 8 Aug 2018 10:59:00 -0700 Subject: [PATCH 357/403] Improve VV performance further by avoiding redundant work (#39579) --- code/datums/datumvars.dm | 205 +++++++++++++++++++++------------------ 1 file changed, 108 insertions(+), 97 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 6f1471d806..de360a3361 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -167,134 +167,145 @@ } - +
    " dat += "" //Avert your eyes dat += "" diff --git a/code/modules/mapping/space_management/space_reservation.dm b/code/modules/mapping/space_management/space_reservation.dm index 83147d5df7..f1b3b1ccdc 100644 --- a/code/modules/mapping/space_management/space_reservation.dm +++ b/code/modules/mapping/space_management/space_reservation.dm @@ -3,6 +3,8 @@ //Yes, I'm sorry. /datum/turf_reservation var/list/reserved_turfs = list() + var/width = 0 + var/height = 0 var/bottom_left_coords[3] var/top_right_coords[3] var/wipe_reservation_on_release = TRUE @@ -59,6 +61,8 @@ SSmapping.unused_turfs["[T.z]"] -= T SSmapping.used_turfs[T] = src T.ChangeTurf(turf_type, turf_type) + src.width = width + src.height = height return TRUE /datum/turf_reservation/New() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 950f9e916b..9f8463477f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -136,6 +136,10 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) grant_all_languages() +/mob/dead/observer/get_photo_description(obj/item/camera/camera) + if(!invisibility || camera.see_ghosts) + return "You can also see a g-g-g-g-ghooooost!" + /mob/dead/observer/narsie_act() var/old_color = color color = "#960000" diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 7d6d5afca2..36d26f0faa 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -104,7 +104,6 @@ msg += "[t_He] look[p_s()] very happy.\n" if(MOOD_LEVEL_HAPPY4 to INFINITY) msg += "[t_He] look[p_s()] ecstatic.\n" - msg += "*---------*" to_chat(user, msg) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e1f321f0fa..44cbf58808 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -150,6 +150,22 @@ if(prob(I.block_chance*2)) return 1 +/mob/living/get_photo_description(obj/item/camera/camera) + var/list/mob_details = list() + var/list/holding = list() + var/len = length(held_items) + if(len) + for(var/obj/item/I in held_items) + if(!holding.len) + holding += "They are holding \a [I]" + else if(held_items.Find(I) == len) + holding += ", and \a [I]." + else + holding += ", \a [I]" + holding += "." + mob_details += "You can also see [src] on the photo[health < (maxHealth * 0.75) ? ", looking a bit hurt":""][holding ? ". [holding.Join("")]":"."]." + return mob_details.Join("") + //Called when we bump onto an obj /mob/living/proc/ObjBump(obj/O) return diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index c03f68a648..f6143e9039 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -78,4 +78,5 @@ temp = master.supplied[index] if (length(temp) > 0) laws.supplied[index] = temp - return + + picturesync() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 61ef88e744..546f1b9db9 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1170,4 +1170,12 @@ lawsync() lawupdate = 1 return TRUE + picturesync() return FALSE + +/mob/living/silicon/robot/proc/picturesync() + if(connected_ai && connected_ai.aicamera && aicamera) + for(var/i in aicamera.stored) + connected_ai.aicamera.stored[i] = TRUE + for(var/i in connected_ai.aicamera.stored) + aicamera.stored[i] = TRUE diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 3fadd0d6c8..0e69db8f51 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -385,9 +385,9 @@ add_sensors() to_chat(src, "Sensor overlay activated.") -/mob/living/silicon/proc/GetPhoto() +/mob/living/silicon/proc/GetPhoto(mob/user) if (aicamera) - return aicamera.selectpicture(aicamera) + return aicamera.selectpicture(user) /mob/living/silicon/update_transform() var/matrix/ntransform = matrix(transform) //aka transform.Copy() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 11dece55aa..a285b5de42 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -69,6 +69,9 @@ to_chat(usr, t) +/mob/proc/get_photo_description(obj/item/camera/camera) + return "a ... thing?" + /mob/proc/show_message(msg, type, alt_msg, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) if(!client) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index e8a4c26d10..2a880b670c 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -94,30 +94,7 @@ else if(photocopy) for(var/i = 0, i < copies, i++) if(toner >= 5 && !busy && photocopy) //Was set to = 0, but if there was say 3 toner left and this ran, you would get -2 which would be weird for ink - var/obj/item/photo/p = new /obj/item/photo (loc) - var/icon/I = icon(photocopy.icon, photocopy.icon_state) - var/icon/img = icon(photocopy.img) - if(greytoggle == "Greyscale") - if(toner > 10) //plenty of toner, go straight greyscale - I.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) //I'm not sure how expensive this is, but given the many limitations of photocopying, it shouldn't be an issue. - img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) - else //not much toner left, lighten the photo - I.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100)) - img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100)) - toner -= 5 //photos use a lot of ink! - else if(greytoggle == "Color") - if(toner >= 10) - toner -= 10 //Color photos use even more ink! - else - continue - p.icon = I - p.img = img - p.name = photocopy.name - p.desc = photocopy.desc - p.scribble = photocopy.scribble - p.pixel_x = rand(-10, 10) - p.pixel_y = rand(-10, 10) - p.blueprints = photocopy.blueprints //a copy of a picture is still good enough for the syndicate + new /obj/item/photo (loc, photocopy.picture.Copy(greytoggle == "Greyscale"? TRUE : FALSE)) busy = TRUE sleep(15) busy = FALSE @@ -155,15 +132,10 @@ else break var/obj/item/photo/p = new /obj/item/photo (loc) - p.desc = "You see [ass]'s ass on the photo." p.pixel_x = rand(-10, 10) p.pixel_y = rand(-10, 10) - p.img = temp_img - var/icon/small_img = icon(temp_img) //Icon() is needed or else temp_img will be rescaled too >.> - var/icon/ic = icon('icons/obj/items_and_weapons.dmi',"photo") - small_img.Scale(8, 8) - ic.Blend(small_img,ICON_OVERLAY, 13, 13) - p.icon = ic + p.picture = new(null, "You see [ass]'s ass on the photo.", temp_img) + p.update_icon() toner -= 5 busy = TRUE sleep(15) @@ -196,29 +168,14 @@ if(!isAI(usr)) return if(toner >= 5 && !busy) - var/list/nametemp = list() - var/find - var/datum/picture/selection var/mob/living/silicon/ai/tempAI = usr - if(tempAI.aicamera.aipictures.len == 0) + if(tempAI.aicamera.stored.len == 0) to_chat(usr, "No images saved") return - for(var/datum/picture/t in tempAI.aicamera.aipictures) - nametemp += t.fields["name"] - find = input("Select image (numbered in order taken)") in nametemp - var/obj/item/photo/p = new /obj/item/photo (loc) - for(var/datum/picture/q in tempAI.aicamera.aipictures) - if(q.fields["name"] == find) - selection = q - break - var/icon/I = selection.fields["icon"] - var/icon/img = selection.fields["img"] - p.icon = I - p.img = img - p.desc = selection.fields["desc"] - p.blueprints = selection.fields["blueprints"] - p.pixel_x = rand(-10, 10) - p.pixel_y = rand(-10, 10) + var/datum/picture/selection = tempAI.aicamera.selectpicture(usr) + var/obj/item/photo = new(loc, selection) + photo.pixel_x = rand(-10, 10) + photo.pixel_y = rand(-10, 10) toner -= 5 //AI prints color pictures only, thus they can do it more efficiently busy = TRUE sleep(15) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm deleted file mode 100644 index a5644171b2..0000000000 --- a/code/modules/paperwork/photography.dm +++ /dev/null @@ -1,662 +0,0 @@ -/* Photography! - * Contains: - * Camera - * Camera Film - * Photos - * Photo Albums - * Picture Frames - * AI Photography - */ - -/* - * Film - */ -/obj/item/camera_film - name = "film cartridge" - icon = 'icons/obj/items_and_weapons.dmi' - desc = "A camera film cartridge. Insert it into a camera to reload it." - icon_state = "film" - item_state = "electropack" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - w_class = WEIGHT_CLASS_TINY - resistance_flags = FLAMMABLE - materials = list(MAT_METAL = 10, MAT_GLASS = 10) - -/* - * Photo - */ -/obj/item/photo - name = "photo" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "photo" - item_state = "paper" - w_class = WEIGHT_CLASS_TINY - resistance_flags = FLAMMABLE - max_integrity = 50 - grind_results = list("iodine" = 4) - var/icon/img //Big photo image - var/scribble //Scribble on the back. - var/blueprints = 0 //Does it include the blueprints? - var/sillynewscastervar //Photo objects with this set to 1 will not be ejected by a newscaster. Only gets set to 1 if a silicon puts one of their images into a newscaster - -/obj/item/photo/suicide_act(mob/living/carbon/user) - user.visible_message("[user] is taking one last look at \the [src]! It looks like [user.p_theyre()] giving in to death!")//when you wanna look at photo of waifu one last time before you die... - if (user.gender == MALE) - playsound(user, 'sound/voice/human/manlaugh1.ogg', 50, 1)//EVERY TIME I DO IT MAKES ME LAUGH - else if (user.gender == FEMALE) - playsound(user, 'sound/voice/human/womanlaugh.ogg', 50, 1) - return OXYLOSS - -/obj/item/photo/attack_self(mob/user) - user.examinate(src) - - -/obj/item/photo/attackby(obj/item/P, mob/user, params) - if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) - if(!user.is_literate()) - to_chat(user, "You scribble illegibly on [src]!") - return - var/txt = sanitize(input(user, "What would you like to write on the back?", "Photo Writing", null) as text) - txt = copytext(txt, 1, 128) - if(user.canUseTopic(src, BE_CLOSE)) - scribble = txt - ..() - - -/obj/item/photo/examine(mob/user) - ..() - - if(in_range(src, user)) - show(user) - else - to_chat(user, "You need to get closer to get a good look at this photo!") - - -/obj/item/photo/proc/show(mob/user) - user << browse_rsc(img, "tmp_photo.png") - user << browse("[name]" \ - + "" \ - + "" \ - + "[scribble ? "
    Written on the back:
    [scribble]" : ""]"\ - + "", "window=book;size=192x[scribble ? 400 : 192]") - onclose(user, "[name]") - - -/obj/item/photo/verb/rename() - set name = "Rename photo" - set category = "Object" - set src in usr - - var/n_name = copytext(sanitize(input(usr, "What would you like to label the photo?", "Photo Labelling", null) as text), 1, MAX_NAME_LEN) - //loc.loc check is for making possible renaming photos in clipboards - if((loc == usr || loc.loc && loc.loc == usr) && usr.stat == CONSCIOUS && usr.canmove && !usr.restrained()) - name = "photo[(n_name ? text("- '[n_name]'") : null)]" - add_fingerprint(usr) - -/obj/item/photo/proc/photocreate(inicon, inimg, indesc, inblueprints) - icon = inicon - img = inimg - desc = indesc - blueprints = inblueprints - -/* - * Photo album - */ -/obj/item/storage/photo_album - name = "photo album" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "album" - item_state = "briefcase" - lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' - resistance_flags = FLAMMABLE - -/obj/item/storage/photo_album/Initialize() - . = ..() - GET_COMPONENT(STR, /datum/component/storage) - STR.can_hold = typecacheof(list(/obj/item/photo)) - -/* - * Camera - */ -/obj/item/camera - name = "camera" - icon = 'icons/obj/items_and_weapons.dmi' - desc = "A polaroid camera." - icon_state = "camera" - item_state = "electropack" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BELT - materials = list(MAT_METAL = 50, MAT_GLASS = 150) - var/pictures_max = 10 - var/pictures_left = 10 - var/on = TRUE - var/blueprints = 0 //are blueprints visible in the current photo being created? - var/list/aipictures = list() //Allows for storage of pictures taken by AI, in a similar manner the datacore stores info. Keeping this here allows us to share some procs w/ regualar camera - var/see_ghosts = 0 //for the spoop of it - var/obj/item/disk/holodisk/disk - - -/obj/item/camera/CheckParts(list/parts_list) - ..() - var/obj/item/camera/C = locate(/obj/item/camera) in contents - if(C) - pictures_max = C.pictures_max - pictures_left = C.pictures_left - visible_message("[C] has been imbued with godlike power!") - qdel(C) - - -/obj/item/camera/spooky - name = "camera obscura" - desc = "A polaroid camera, some say it can see ghosts!" - see_ghosts = 1 - -/obj/item/camera/detective - name = "Detective's camera" - desc = "A polaroid camera with extra capacity for crime investigations." - pictures_max = 30 - pictures_left = 30 - - -/obj/item/camera/siliconcam //camera AI can take pictures with - name = "silicon photo camera" - var/in_camera_mode = 0 - -/obj/item/camera/siliconcam/ai_camera //camera AI can take pictures with - name = "AI photo camera" - -/obj/item/camera/siliconcam/robot_camera //camera cyborgs can take pictures with.. needs it's own because of verb CATEGORY >.> - name = "Cyborg photo camera" - -/obj/item/camera/siliconcam/robot_camera/verb/borgprinting() - set category ="Robot Commands" - set name = "Print Image" - set src in usr - - if(usr.stat == DEAD) - return //won't work if dead - borgprint() - -/obj/item/camera/attack(mob/living/carbon/human/M, mob/user) - return - - -/obj/item/camera/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/camera_film)) - if(pictures_left) - to_chat(user, "[src] still has some film in it!") - return - if(!user.temporarilyRemoveItemFromInventory(I)) - return - to_chat(user, "You insert [I] into [src].") - qdel(I) - pictures_left = pictures_max - return - if(istype(I, /obj/item/disk/holodisk)) - if (!disk) - if(!user.transferItemToLoc(I, src)) - to_chat(user, "[I] is stuck to your hand!") - return TRUE - to_chat(user, "You slide [I] into the back of [src].") - disk = I - else - to_chat(user, "There's already a disk inside [src].") - return TRUE //no afterattack - ..() - -/obj/item/camera/attack_self(mob/user) - if(!disk) - return - to_chat(user, "You eject [disk] out the back of [src].") - user.put_in_hands(disk) - disk = null - -/obj/item/camera/examine(mob/user) - ..() - to_chat(user, "It has [pictures_left] photo\s left.") - - -/obj/item/camera/proc/camera_get_icon(list/turfs, turf/center) - var/list/atoms = list() - for(var/turf/T in turfs) - atoms.Add(T) - for(var/atom/movable/A in T) - if(A.invisibility) - if(see_ghosts && isobserver(A)) - var/mob/dead/observer/O = A - if(O.orbiting) //so you dont see ghosts following people like antags, etc. - continue - else - continue - atoms.Add(A) - - var/list/sorted = sortTim(atoms,/proc/cmp_atom_layer_asc) - - var/icon/res = icon('icons/effects/96x96.dmi', "") - - for(var/atom/A in sorted) - var/icon/img = getFlatIcon(A, no_anim = TRUE) - if(isliving(A)) - var/mob/living/L = A - if(L.lying) - img.Turn(L.lying) - - var/offX = world.icon_size * (A.x - center.x) + A.pixel_x + 33 - var/offY = world.icon_size * (A.y - center.y) + A.pixel_y + 33 - if(ismovableatom(A)) - var/atom/movable/AM = A - offX += AM.step_x - offY += AM.step_y - - res.Blend(img, blendMode2iconMode(A.blend_mode), offX, offY) - - if(istype(A, /obj/item/areaeditor/blueprints)) - blueprints = 1 - - for(var/turf/T in turfs) - var/area/A = T.loc - if(A.icon_state)//There's actually something to blend in. - res.Blend(getFlatIcon(A,no_anim = TRUE), blendMode2iconMode(A.blend_mode), world.icon_size * (T.x - center.x) + 33, world.icon_size * (T.y - center.y) + 33) - - return res - - -/obj/item/camera/proc/camera_get_mobs(turf/the_turf) - var/mob_detail - for(var/mob/M in the_turf) - if(M.invisibility) - if(see_ghosts && isobserver(M)) - var/mob/dead/observer/O = M - if(O.orbiting) - continue - if(!mob_detail) - mob_detail = "You can see a g-g-g-g-ghooooost! " - else - mob_detail += "You can also see a g-g-g-g-ghooooost!" - else - continue - - var/list/holding = list() - - if(isliving(M)) - var/mob/living/L = M - - for(var/obj/item/I in L.held_items) - if(!holding) - holding += "[L.p_theyre(TRUE)] holding \a [I]" - else - holding += " and \a [I]" - holding = holding.Join() - - if(!mob_detail) - mob_detail = "You can see [L] on the photo[L.health < (L.maxHealth * 0.75) ? " - [L] looks hurt":""].[holding ? " [holding]":"."]. " - else - mob_detail += "You can also see [L] on the photo[L.health < (L.maxHealth * 0.75) ? " - [L] looks hurt":""].[holding ? " [holding]":"."]." - - - return mob_detail - - -/obj/item/camera/proc/captureimage(atom/target, mob/user, flag) //Proc for both regular and AI-based camera to take the image - var/mobs = "" - var/isAi = isAI(user) - var/list/seen - if(!isAi) //crappy check, but without it AI photos would be subject to line of sight from the AI Eye object. Made the best of it by moving the sec camera check inside - if(user.client) //To make shooting through security cameras possible - seen = get_hear(world.view, user.client.eye) //To make shooting through security cameras possible - else - seen = get_hear(world.view, user) - else - seen = get_hear(world.view, target) - - var/list/turfs = list() - for(var/turf/T in range(1, target)) - if(T in seen) - if(isAi && !GLOB.cameranet.checkTurfVis(T)) - continue - else - turfs += T - mobs += camera_get_mobs(T) - - var/icon/temp = icon('icons/effects/96x96.dmi',"") - temp.Blend("#000", ICON_OVERLAY) - temp.Blend(camera_get_icon(turfs, target), ICON_OVERLAY) - - if(!issilicon(user)) - printpicture(user, temp, mobs, flag) - else - aipicture(user, temp, mobs, isAi, blueprints) - - - - -/obj/item/camera/proc/printpicture(mob/user, icon/temp, mobs, flag) //Normal camera proc for creating photos - var/obj/item/photo/P = new/obj/item/photo(get_turf(src)) - if(in_range(src, user)) //needed because of TK - user.put_in_hands(P) - var/icon/small_img = icon(temp) - var/icon/ic = icon('icons/obj/items_and_weapons.dmi',"photo") - small_img.Scale(8, 8) - ic.Blend(small_img,ICON_OVERLAY, 13, 13) - P.icon = ic - P.img = temp - P.desc = mobs - P.pixel_x = rand(-10, 10) - P.pixel_y = rand(-10, 10) - - if(blueprints) - P.blueprints = 1 - blueprints = 0 - - -/obj/item/camera/proc/aipicture(mob/user, icon/temp, mobs, isAi) //instead of printing a picture like a regular camera would, we do this instead for the AI - - var/icon/small_img = icon(temp) - var/icon/ic = icon('icons/obj/items_and_weapons.dmi',"photo") - small_img.Scale(8, 8) - ic.Blend(small_img,ICON_OVERLAY, 13, 13) - var/icon = ic - var/img = temp - var/desc = mobs - var/pixel_x = rand(-10, 10) - var/pixel_y = rand(-10, 10) - - var/injectblueprints = 1 - if(blueprints) - injectblueprints = 1 - blueprints = 0 - - if(isAi) - injectaialbum(icon, img, desc, pixel_x, pixel_y, injectblueprints) - else - injectmasteralbum(icon, img, desc, pixel_x, pixel_y, injectblueprints) - - - -/datum/picture - var/name = "image" - var/list/fields = list() - - -/obj/item/camera/proc/injectaialbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject) //stores image information to a list similar to that of the datacore - var/numberer = 1 - for(var/datum/picture in src.aipictures) - numberer++ - var/datum/picture/P = new() - P.fields["name"] = "Image [numberer] (taken by [src.loc.name])" - P.fields["icon"] = icon - P.fields["img"] = img - P.fields["desc"] = desc - P.fields["pixel_x"] = pixel_x - P.fields["pixel_y"] = pixel_y - P.fields["blueprints"] = blueprintsinject - - aipictures += P - to_chat(usr, "Image recorded") //feedback to the AI player that the picture was taken - -/obj/item/camera/proc/injectmasteralbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject) //stores image information to a list similar to that of the datacore - var/numberer = 1 - var/mob/living/silicon/robot/C = src.loc - if(C.connected_ai) - for(var/datum/picture in C.connected_ai.aicamera.aipictures) - numberer++ - var/datum/picture/P = new() - P.fields["name"] = "Image [numberer] (taken by [src.loc.name])" - P.fields["icon"] = icon - P.fields["img"] = img - P.fields["desc"] = desc - P.fields["pixel_x"] = pixel_x - P.fields["pixel_y"] = pixel_y - P.fields["blueprints"] = blueprintsinject - - C.connected_ai.aicamera.aipictures += P - to_chat(usr, "Image recorded and saved to remote database") //feedback to the Cyborg player that the picture was taken - else - injectaialbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject) - -/obj/item/camera/siliconcam/proc/selectpicture(obj/item/camera/siliconcam/targetloc) - var/list/nametemp = list() - var/find - if(targetloc.aipictures.len == 0) - to_chat(usr, "No images saved") - return - for(var/datum/picture/t in targetloc.aipictures) - nametemp += t.fields["name"] - find = input("Select image (numbered in order taken)") in nametemp - for(var/datum/picture/q in targetloc.aipictures) - if(q.fields["name"] == find) - return q - -/obj/item/camera/siliconcam/proc/viewpichelper(obj/item/camera/siliconcam/targetloc) - var/obj/item/photo/P = new/obj/item/photo() - var/datum/picture/selection = selectpicture(targetloc) - if(selection) - P.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"]) - P.pixel_x = selection.fields["pixel_x"] - P.pixel_y = selection.fields["pixel_y"] - - P.show(usr) - to_chat(usr, P.desc) - qdel(P) //so 10 thousand picture items are not left in memory should an AI take them and then view them all - -/obj/item/camera/siliconcam/proc/viewpictures(user) - if(iscyborg(user)) // Cyborg - var/mob/living/silicon/robot/C = src.loc - var/obj/item/camera/siliconcam/Cinfo - if(C.connected_ai) - Cinfo = C.connected_ai.aicamera - viewpichelper(Cinfo) - else - Cinfo = C.aicamera - viewpichelper(Cinfo) - else // AI - var/Ainfo = src - viewpichelper(Ainfo) - -/obj/item/camera/afterattack(atom/target, mob/user, flag) - . = ..() - if(!on || !pictures_left || !isturf(target.loc)) - return - if (disk) - if(ismob(target)) - if (disk.record) - QDEL_NULL(disk.record) - - disk.record = new - var/mob/M = target - disk.record.caller_name = M.name - disk.record.set_caller_image(M) - else - return - else - captureimage(target, user, flag) - pictures_left-- - to_chat(user, "[pictures_left] photos left.") - - playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) - - icon_state = "camera_off" - on = FALSE - addtimer(CALLBACK(src, .proc/cooldown), 64) - -/obj/item/camera/proc/cooldown() - set waitfor = FALSE - icon_state = "camera" - on = TRUE - -/obj/item/camera/siliconcam/proc/toggle_camera_mode() - if(in_camera_mode) - camera_mode_off() - else - camera_mode_on() - -/obj/item/camera/siliconcam/proc/camera_mode_off() - src.in_camera_mode = 0 - to_chat(usr, "Camera Mode deactivated") - -/obj/item/camera/siliconcam/proc/camera_mode_on() - src.in_camera_mode = 1 - to_chat(usr, "Camera Mode activated") - -/obj/item/camera/siliconcam/robot_camera/proc/borgprint() - var/list/nametemp = list() - var/find - var/datum/picture/selection - var/mob/living/silicon/robot/C = src.loc - var/obj/item/camera/siliconcam/targetcam = null - if(C.toner < 20) - to_chat(usr, "Insufficent toner to print image.") - return - if(C.connected_ai) - targetcam = C.connected_ai.aicamera - else - targetcam = C.aicamera - if(targetcam.aipictures.len == 0) - to_chat(usr, "No images saved") - return - for(var/datum/picture/t in targetcam.aipictures) - nametemp += t.fields["name"] - find = input("Select image (numbered in order taken)") in nametemp - for(var/datum/picture/q in targetcam.aipictures) - if(q.fields["name"] == find) - selection = q - break - var/obj/item/photo/p = new /obj/item/photo(C.loc) - p.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"], selection.fields["blueprints"]) - p.pixel_x = rand(-10, 10) - p.pixel_y = rand(-10, 10) - C.toner -= 20 //Cyborgs are very ineffeicient at printing an image - visible_message("[C.name] spits out a photograph from a narrow slot on its chassis.") - to_chat(usr, "You print a photograph.") - -// Picture frames - -/obj/item/wallframe/picture - name = "picture frame" - desc = "The perfect showcase for your favorite deathtrap memories." - icon = 'icons/obj/decals.dmi' - materials = list() - flags_1 = 0 - icon_state = "frame-empty" - result_path = /obj/structure/sign/picture_frame - var/obj/item/photo/displayed - -/obj/item/wallframe/picture/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/photo)) - if(!displayed) - if(!user.transferItemToLoc(I, src)) - return - displayed = I - update_icon() - else - to_chat(user, "\The [src] already contains a photo.") - ..() - -//ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/item/wallframe/picture/attack_hand(mob/user) - if(user.get_inactive_held_item() != src) - ..() - return - if(contents.len) - var/obj/item/I = pick(contents) - user.put_in_hands(I) - to_chat(user, "You carefully remove the photo from \the [src].") - displayed = null - update_icon() - return ..() - -/obj/item/wallframe/picture/attack_self(mob/user) - user.examinate(src) - -/obj/item/wallframe/picture/examine(mob/user) - if(user.is_holding(src) && displayed) - displayed.show(user) - else - ..() - -/obj/item/wallframe/picture/update_icon() - cut_overlays() - if(displayed) - add_overlay(getFlatIcon(displayed)) - -/obj/item/wallframe/picture/after_attach(obj/O) - ..() - var/obj/structure/sign/picture_frame/PF = O - PF.copy_overlays(src) - if(displayed) - PF.framed = displayed - if(contents.len) - var/obj/item/I = pick(contents) - I.forceMove(PF) - - -/obj/structure/sign/picture_frame - name = "picture frame" - desc = "Every time you look it makes you laugh." - icon = 'icons/obj/decals.dmi' - icon_state = "frame-empty" - var/obj/item/photo/framed - -/obj/structure/sign/picture_frame/New(loc, dir, building) - ..() - if(dir) - setDir(dir) - if(building) - pixel_x = (dir & 3)? 0 : (dir == 4 ? -30 : 30) - pixel_y = (dir & 3)? (dir ==1 ? -30 : 30) : 0 - -/obj/structure/sign/picture_frame/examine(mob/user) - if(in_range(src, user) && framed) - framed.show(user) - else - ..() - -/obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/screwdriver) || istype(I, /obj/item/wrench)) - to_chat(user, "You start unsecuring [name]...") - if(I.use_tool(src, user, 30, volume=50)) - playsound(loc, 'sound/items/deconstruct.ogg', 50, 1) - to_chat(user, "You unsecure [name].") - deconstruct() - return - - else if(istype(I, /obj/item/photo)) - if(!framed) - var/obj/item/photo/P = I - if(!user.transferItemToLoc(P, src)) - return - framed = P - update_icon() - else - to_chat(user, "\The [src] already contains a photo.") - - ..() - -/obj/structure/sign/picture_frame/attack_hand(mob/user) - . = ..() - if(.) - return - if(framed) - framed.show(user) - -/obj/structure/sign/picture_frame/update_icon() - cut_overlays() - if(framed) - add_overlay(getFlatIcon(framed)) - -/obj/structure/sign/picture_frame/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - var/obj/item/wallframe/picture/F = new /obj/item/wallframe/picture(loc) - if(framed) - F.displayed = framed - framed = null - if(contents.len) - var/obj/item/I = pick(contents) - I.forceMove(F) - F.update_icon() - qdel(src) diff --git a/code/modules/photography/_pictures.dm b/code/modules/photography/_pictures.dm new file mode 100644 index 0000000000..9f5babbbbc --- /dev/null +++ b/code/modules/photography/_pictures.dm @@ -0,0 +1,171 @@ +/datum/picture + var/picture_name = "picture" + var/picture_desc = "This is a picture." + var/caption + var/icon/picture_image + var/icon/picture_icon + var/psize_x = 96 + var/psize_y = 96 + var/has_blueprints = FALSE + var/logpath //If the picture has been logged this is the path. + var/id //this var is NOT protected because the worst you can do with this that you couldn't do otherwise is overwrite photos, and photos aren't going to be used as attack logs/investigations anytime soon. + +/datum/picture/New(name, desc, image, icon, size_x, size_y, bp, caption_, autogenerate_icon) + if(!isnull(name)) + picture_name = name + if(!isnull(desc)) + picture_desc = desc + if(!isnull(image)) + picture_image = image + if(!isnull(icon)) + picture_icon = icon + if(!isnull(psize_x)) + psize_x = size_x + if(!isnull(psize_y)) + psize_y = size_y + if(!isnull(bp)) + has_blueprints = bp + if(!isnull(caption_)) + caption = caption_ + if(autogenerate_icon && !picture_icon && picture_image) + regenerate_small_icon() + +/datum/picture/proc/get_small_icon() + if(!picture_icon) + regenerate_small_icon() + return picture_icon + +/datum/picture/proc/regenerate_small_icon() + if(!picture_image) + return + var/icon/small_img = icon(picture_image) + var/icon/ic = icon('icons/obj/items_and_weapons.dmi', "photo") + small_img.Scale(8, 8) + ic.Blend(small_img,ICON_OVERLAY, 13, 13) + picture_icon = ic + +/datum/picture/serialize_list(list/options) + . = list() + .["id"] = id + .["desc"] = picture_desc + .["name"] = picture_name + .["caption"] = caption + .["pixel_size_x"] = psize_x + .["pixel_size_y"] = psize_y + .["blueprints"] = has_blueprints + .["logpath"] = logpath + +/datum/picture/deserialize_list(list/input, list/options) + if(!input["logpath"] || !fexists(input["logpath"]) || !input["id"] || !input["pixel_size_x"] || !input["pixel_size_y"]) + return + picture_image = icon(file(input["logpath"])) + logpath = input["logpath"] + id = input["id"] + psize_x = input["pixel_size_x"] + psize_y = input["pixel_size_y"] + if(input["blueprints"]) + has_blueprints = input["blueprints"] + if(input["caption"]) + caption = input["caption"] + if(input["desc"]) + picture_desc = input["desc"] + if(input["name"]) + picture_name = input["name"] + return src + +/proc/load_photo_from_disk(id, location) + var/datum/picture/P = load_picture_from_disk(id) + if(istype(P)) + var/obj/item/photo/p = new(location, P) + return p + +/proc/load_picture_from_disk(id) + var/pathstring = log_path_from_picture_ID(id) + if(!pathstring) + return + var/path = file(pathstring) + if(!fexists(path)) + return + var/dir_index = findlasttext(pathstring, "/") + var/dir = copytext(pathstring, 1, dir_index) + var/json_path = file("[dir]/metadata.json") + if(!fexists(json_path)) + return + var/list/json = json_decode(file2text(json_path)) + if(!json[id]) + return + var/datum/picture/P = new + P.deserialize_json(json[id]) + return P + +/proc/log_path_from_picture_ID(id) + if(!istext(id)) + return + . = "data/picture_logs/" + var/list/data = splittext(id, "_") + if(data.len < 3) + return null + var/mode = data[1] + switch(mode) + if("L") + if(data.len < 5) + return null + var/timestamp = data[2] + var/year = copytext(timestamp, 1, 5) + var/month = copytext(timestamp, 5, 7) + var/day = copytext(timestamp, 7, 9) + var/round = data[4] + . += "[year]/[month]/[day]/round-[round]" + if("O") + var/list/path = data.Copy(2, data.len) + . += path.Join("") + else + return null + var/n = data[data.len] + . += "/[n].png" + +//BE VERY CAREFUL WITH THIS PROC, TO AVOID DUPLICATION. +/datum/picture/proc/log_to_file() + if(!picture_image) + return + if(!CONFIG_GET(flag/log_pictures)) + return + if(logpath) + return //we're already logged + var/number = GLOB.picture_logging_id++ + var/finalpath = "[GLOB.picture_log_directory]/[number].png" + fcopy(icon(picture_image, dir = SOUTH, frame = 1), finalpath) + logpath = finalpath + id = "[GLOB.picture_logging_prefix][number]" + var/jsonpath = "[GLOB.picture_log_directory]/metadata.json" + jsonpath = file(jsonpath) + var/list/json + if(fexists(jsonpath)) + json = json_decode(file2text(jsonpath)) + fdel(jsonpath) + else + json = list() + json[id] = serialize_json() + WRITE_FILE(jsonpath, json_encode(json)) + +/datum/picture/proc/Copy(greyscale = FALSE, cropx = 0, cropy = 0) + var/datum/picture/P = new + P.picture_name = picture_name + P.picture_desc = picture_desc + if(picture_image) + P.picture_image = icon(picture_image) //Copy, not reference. + if(picture_icon) + P.picture_icon = icon(picture_icon) + P.psize_x = psize_x - cropx * 2 + P.psize_y = psize_y - cropy * 2 + P.has_blueprints = has_blueprints + if(greyscale) + if(picture_image) + P.picture_image.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) + if(picture_icon) + P.picture_icon.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) + if(cropx || cropy) + if(picture_image) + P.picture_image.Crop(cropx, cropy, psize_x - cropx, psize_y - cropy) + P.regenerate_small_icon() + return P diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm new file mode 100644 index 0000000000..92c3683733 --- /dev/null +++ b/code/modules/photography/camera/camera.dm @@ -0,0 +1,202 @@ + +#define CAMERA_PICTURE_SIZE_HARD_LIMIT 21 + +/obj/item/camera + name = "camera" + icon = 'icons/obj/items_and_weapons.dmi' + desc = "A polaroid camera. Alt click to change its focusing, allowing you to set how big of an area it will capture!" + icon_state = "camera" + item_state = "electropack" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + w_class = WEIGHT_CLASS_SMALL + flags_1 = CONDUCT_1 + slot_flags = ITEM_SLOT_BELT + materials = list(MAT_METAL = 50, MAT_GLASS = 150) + var/state_on = "camera" + var/state_off = "camera_off" + var/pictures_max = 10 + var/pictures_left = 10 + var/on = TRUE + var/cooldown = 64 + var/blending = FALSE //lets not take pictures while the previous is still processing! + var/see_ghosts = CAMERA_NO_GHOSTS //for the spoop of it + var/obj/item/disk/holodisk/disk + var/sound/custom_sound + var/silent = FALSE + var/picture_size_x = 2 + var/picture_size_y = 2 + var/picture_size_x_min = 1 + var/picture_size_y_min = 1 + var/picture_size_x_max = 4 + var/picture_size_y_max = 4 + +/obj/item/camera/attack_self(mob/user) + if(!disk) + return + to_chat(user, "You eject [disk] out the back of [src].") + user.put_in_hands(disk) + disk = null + +/obj/item/camera/AltClick(mob/user) + var/desired_x = input(user, "How high do you want the camera to shoot, between [picture_size_x_min] and [picture_size_x_max]?", "Zoom", picture_size_x) as num + var/desired_y = input(user, "How wide do you want the camera to shoot, between [picture_size_y_min] and [picture_size_y_max]?", "Zoom", picture_size_y) as num + desired_x = min(CLAMP(desired_x, picture_size_x_min, picture_size_x_max), CAMERA_PICTURE_SIZE_HARD_LIMIT) + desired_y = min(CLAMP(desired_y, picture_size_y_min, picture_size_y_max), CAMERA_PICTURE_SIZE_HARD_LIMIT) + if(user.canUseTopic(src)) + picture_size_x = desired_x + picture_size_y = desired_y + +/obj/item/camera/attack(mob/living/carbon/human/M, mob/user) + return + +/obj/item/camera/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/camera_film)) + if(pictures_left) + to_chat(user, "[src] still has some film in it!") + return + if(!user.temporarilyRemoveItemFromInventory(I)) + return + to_chat(user, "You insert [I] into [src].") + qdel(I) + pictures_left = pictures_max + return + if(istype(I, /obj/item/disk/holodisk)) + if (!disk) + if(!user.transferItemToLoc(I, src)) + to_chat(user, "[I] is stuck to your hand!") + return TRUE + to_chat(user, "You slide [I] into the back of [src].") + disk = I + else + to_chat(user, "There's already a disk inside [src].") + return TRUE //no afterattack + ..() + +/obj/item/camera/examine(mob/user) + ..() + to_chat(user, "It has [pictures_left] photos left.") + +//user can be atom or mob +/obj/item/camera/proc/can_target(atom/target, mob/user, prox_flag) + if(!on || blending || !pictures_left) + return FALSE + var/turf/T = get_turf(target) + if(!T) + return FALSE + if(istype(user)) + if(isAI(user) && !GLOB.cameranet.checkTurfVis(T)) + return FALSE + else if(user.client && !(get_turf(target) in get_hear(user.client.view, user))) + return FALSE + else if(!(get_turf(target) in get_hear(world.view, user))) + return FALSE + else //user is an atom + if(!(get_turf(target) in view(world.view, user))) + return FALSE + return TRUE + +/obj/item/camera/afterattack(atom/target, mob/user, flag) + if (disk) + if(ismob(target)) + if (disk.record) + QDEL_NULL(disk.record) + + disk.record = new + var/mob/M = target + disk.record.caller_name = M.name + disk.record.set_caller_image(M) + else + to_chat(user, "Invalid holodisk target.") + return + + if(!can_target(target, user, flag)) + return + + on = FALSE + addtimer(CALLBACK(src, .proc/cooldown), cooldown) + icon_state = state_off + + INVOKE_ASYNC(src, .proc/captureimage, target, user, flag, picture_size_x - 1, picture_size_y - 1) + + +/obj/item/camera/proc/cooldown() + UNTIL(!blending) + icon_state = state_on + on = TRUE + +/obj/item/camera/proc/show_picture(mob/user, datum/picture/selection) + var/obj/item/photo/P = new(src, selection) + P.show(user) + to_chat(user, P.desc) + qdel(P) + +/obj/item/camera/proc/captureimage(atom/target, mob/user, flag, size_x = 1, size_y = 1) + blending = TRUE + var/turf/target_turf = get_turf(target) + if(!isturf(target_turf)) + blending = FALSE + return FALSE + size_x = CLAMP(size_x, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) + size_y = CLAMP(size_y, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) + var/list/desc = list("This is a photo of an area of [size_x+1] meters by [size_y+1] meters.") + var/ai_user = isAI(user) + var/list/seen + var/list/viewlist = (user && user.client)? getviewsize(user.client.view) : getviewsize(world.view) + var/viewr = max(viewlist[1], viewlist[2]) + max(size_x, size_y) + var/viewc = user.client? user.client.eye : target + seen = get_hear(viewr, viewc) + var/list/turfs = list() + var/list/mobs = list() + var/blueprints = FALSE + var/clone_area = SSmapping.RequestBlockReservation(size_x * 2 + 1, size_y * 2 + 1) + for(var/turf/T in block(locate(target_turf.x - size_x, target_turf.y - size_y, target_turf.z), locate(target_turf.x + size_x, target_turf.y + size_y, target_turf.z))) + if((ai_user && GLOB.cameranet.checkTurfVis(T)) || T in seen) + turfs += T + for(var/mob/M in T) + mobs += M + if(locate(/obj/item/areaeditor/blueprints) in T) + blueprints = TRUE + for(var/i in mobs) + var/mob/M = i + desc += M.get_photo_description(src) + + var/psize_x = (size_x * 2 + 1) * world.icon_size + var/psize_y = (size_y * 2 + 1) * world.icon_size + var/get_icon = camera_get_icon(turfs, target_turf, psize_x, psize_y, clone_area, size_x, size_y, (size_x * 2 + 1), (size_y * 2 + 1)) + qdel(clone_area) + var/icon/temp = icon('icons/effects/96x96.dmi',"") + temp.Blend("#000", ICON_OVERLAY) + temp.Scale(psize_x, psize_y) + temp.Blend(get_icon, ICON_OVERLAY) + + var/datum/picture/P = new("picture", desc.Join(" "), temp, null, psize_x, psize_y, blueprints) + after_picture(user, P, flag) + blending = FALSE + +/obj/item/camera/proc/after_picture(mob/user, datum/picture/picture, proximity_flag) + printpicture(user, picture) + +/obj/item/camera/proc/printpicture(mob/user, datum/picture/picture) //Normal camera proc for creating photos + var/obj/item/photo/p = new(get_turf(src), picture) + if(in_range(src, user)) //needed because of TK + user.put_in_hands(p) + pictures_left-- + to_chat(user, "[pictures_left] photos left.") + var/customize = alert(user, "Do you want to customize the photo?", "Customization", "Yes", "No") + if(customize == "Yes") + var/name1 = input(user, "Set a name for this photo, or leave blank. 32 characters max.", "Name") as text|null + var/desc1 = input(user, "Set a description to add to photo, or leave blank. 128 characters max.", "Caption") as text|null + var/caption = input(user, "Set a caption for this photo, or leave blank. 256 characters max.", "Caption") as text|null + if(name1) + name1 = copytext(name1, 1, 33) + picture.picture_name = name1 + if(desc1) + desc1 = copytext(desc1, 1, 129) + picture.picture_desc = "[desc1] - [picture.picture_desc]" + if(caption) + caption = copytext(caption, 1, 257) + picture.caption = caption + p.set_picture(picture, TRUE, TRUE) + if(CONFIG_GET(flag/picture_logging_camera)) + picture.log_to_file() diff --git a/code/modules/photography/camera/camera_image_capturing.dm b/code/modules/photography/camera/camera_image_capturing.dm new file mode 100644 index 0000000000..fe093fa2ca --- /dev/null +++ b/code/modules/photography/camera/camera_image_capturing.dm @@ -0,0 +1,88 @@ +/obj/effect/appearance_clone + +/obj/effect/appearance_clone/New(loc, atom/A) //Intentionally not Initialize(), to make sure the clone assumes the intended appearance in time for the camera getFlatIcon. + if(istype(A)) + appearance = A.appearance + dir = A.dir + if(ismovableatom(A)) + var/atom/movable/AM = A + step_x = AM.step_x + step_y = AM.step_y + . = ..() + +/obj/item/camera/proc/camera_get_icon(list/turfs, turf/center, psize_x = 96, psize_y = 96, datum/turf_reservation/clone_area, size_x, size_y, total_x, total_y) + var/list/atoms = list() + var/skip_normal = FALSE + var/wipe_atoms = FALSE + + if(istype(clone_area) && total_x == clone_area.width && total_y == clone_area.height && size_x >= 0 && size_y > 0) + var/cloned_center_x = round(clone_area.bottom_left_coords[1] + ((total_x - 1) / 2)) + var/cloned_center_y = round(clone_area.bottom_left_coords[2] + ((total_y - 1) / 2)) + for(var/t in turfs) + var/turf/T = t + var/offset_x = T.x - center.x + var/offset_y = T.y - center.y + var/turf/newT = locate(cloned_center_x + offset_x, cloned_center_y + offset_y, clone_area.bottom_left_coords[3]) + if(!(newT in clone_area.reserved_turfs)) //sanity check so we don't overwrite other areas somehow + continue + atoms += new /obj/effect/appearance_clone(newT, T) + if(T.loc.icon_state) + atoms += new /obj/effect/appearance_clone(newT, T.loc) + for(var/i in T.contents) + var/atom/A = i + if(!A.invisibility || (see_ghosts && isobserver(A))) + atoms += new /obj/effect/appearance_clone(newT, A) + skip_normal = TRUE + wipe_atoms = TRUE + center = locate(cloned_center_x, cloned_center_y, clone_area.bottom_left_coords[3]) + + if(!skip_normal) + for(var/i in turfs) + var/turf/T = i + atoms += T + for(var/atom/movable/A in T) + if(A.invisibility) + if(!(see_ghosts && isobserver(A))) + continue + atoms += A + CHECK_TICK + + var/icon/res = icon('icons/effects/96x96.dmi', "") + res.Scale(psize_x, psize_y) + + var/list/sorted = list() + var/j + for(var/i in 1 to atoms.len) + var/atom/c = atoms[i] + for(j = sorted.len, j > 0, --j) + var/atom/c2 = sorted[j] + if(c2.layer <= c.layer) + break + sorted.Insert(j+1, c) + CHECK_TICK + + var/xcomp = FLOOR(psize_x / 2, 1) - 15 + var/ycomp = FLOOR(psize_y / 2, 1) - 15 + + + for(var/atom/A in sorted) + var/xo = (A.x - center.x) * world.icon_size + A.pixel_x + xcomp + var/yo = (A.y - center.y) * world.icon_size + A.pixel_y + ycomp + if(ismovableatom(A)) + var/atom/movable/AM = A + xo += AM.step_x + yo += AM.step_y + var/icon/img = getFlatIcon(A) + res.Blend(img, blendMode2iconMode(A.blend_mode), xo, yo) + CHECK_TICK + + if(!silent) + if(istype(custom_sound)) //This is where the camera actually finishes its exposure. + playsound(loc, custom_sound, 75, 1, -3) + else + playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) + + if(wipe_atoms) + QDEL_LIST(atoms) + + return res diff --git a/code/modules/photography/camera/film.dm b/code/modules/photography/camera/film.dm new file mode 100644 index 0000000000..5d69824bad --- /dev/null +++ b/code/modules/photography/camera/film.dm @@ -0,0 +1,14 @@ +/* + * Film + */ +/obj/item/camera_film + name = "film cartridge" + icon = 'icons/obj/items_and_weapons.dmi' + desc = "A camera film cartridge. Insert it into a camera to reload it." + icon_state = "film" + item_state = "electropack" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + w_class = WEIGHT_CLASS_TINY + resistance_flags = FLAMMABLE + materials = list(MAT_METAL = 10, MAT_GLASS = 10) diff --git a/code/modules/photography/camera/other.dm b/code/modules/photography/camera/other.dm new file mode 100644 index 0000000000..ce2572db36 --- /dev/null +++ b/code/modules/photography/camera/other.dm @@ -0,0 +1,14 @@ +/obj/item/camera/spooky + name = "camera obscura" + desc = "A polaroid camera, some say it can see ghosts!" + see_ghosts = CAMERA_SEE_GHOSTS_BASIC + +/obj/item/camera/spooky/badmin + desc = "A polaroid camera, some say it can see ghosts! It seems to have an extra magnifier on the end." + see_ghosts = CAMERA_SEE_GHOSTS_ORBIT + +/obj/item/camera/detective + name = "Detective's camera" + desc = "A polaroid camera with extra capacity for crime investigations." + pictures_max = 30 + pictures_left = 30 diff --git a/code/modules/photography/camera/silicon_camera.dm b/code/modules/photography/camera/silicon_camera.dm new file mode 100644 index 0000000000..ad8542a5c1 --- /dev/null +++ b/code/modules/photography/camera/silicon_camera.dm @@ -0,0 +1,98 @@ + +/obj/item/camera/siliconcam + name = "silicon photo camera" + var/in_camera_mode = FALSE + var/list/datum/picture/stored = list() + +/obj/item/camera/siliconcam/ai_camera + name = "AI photo camera" + +/obj/item/camera/siliconcam/proc/toggle_camera_mode(mob/user) + if(in_camera_mode) + camera_mode_off(user) + else + camera_mode_on(user) + +/obj/item/camera/siliconcam/proc/camera_mode_off(mob/user) + in_camera_mode = FALSE + to_chat(user, "Camera Mode deactivated") + +/obj/item/camera/siliconcam/proc/camera_mode_on(mob/user) + in_camera_mode = TRUE + to_chat(user, "Camera Mode activated") + +/obj/item/camera/siliconcam/proc/selectpicture(mob/user) + var/list/nametemp = list() + var/find + if(!stored.len) + to_chat(usr, "No images saved") + return + var/list/temp = list() + for(var/i in stored) + var/datum/picture/p = i + nametemp += p.picture_name + temp[p.picture_name] = p + find = input(user, "Select image") in nametemp|null + if(!find) + return + return temp[find] + +/obj/item/camera/siliconcam/proc/viewpictures(mob/user) + var/datum/picture/selection = selectpicture(user) + if(istype(selection)) + show_picture(user, selection) + +/obj/item/camera/siliconcam/ai_camera/after_picture(mob/user, datum/picture/picture, proximity_flag) + var/number = stored.len + picture.picture_name = "Image [number] (taken by [loc.name])" + stored[picture] = TRUE + to_chat(usr, "Image recorded") + +/obj/item/camera/siliconcam/robot_camera + name = "Cyborg photo camera" + var/printcost = 2 + +/obj/item/camera/siliconcam/robot_camera/after_picture(mob/user, datum/picture/picture, proximity_flag) + var/mob/living/silicon/robot/C = loc + if(istype(C) && istype(C.connected_ai)) + var/number = C.connected_ai.aicamera.stored.len + picture.picture_name = "Image [number] (taken by [loc.name])" + C.connected_ai.aicamera.stored[picture] = TRUE + to_chat(usr, "Image recorded and saved to remote database") + else + var/number = stored.len + picture.picture_name = "Image [number] (taken by [loc.name])" + stored[picture] = TRUE + to_chat(usr, "Image recorded and saved to local storage. Upload will happen automatically if unit is lawsynced.") + +/obj/item/camera/siliconcam/robot_camera/selectpicture(mob/user) + var/mob/living/silicon/robot/R = loc + if(istype(R) && R.connected_ai) + R.picturesync() + return R.connected_ai.aicamera.selectpicture(user) + else + return ..() + +/obj/item/camera/siliconcam/robot_camera/verb/borgprinting() + set category ="Robot Commands" + set name = "Print Image" + set src in usr + if(usr.stat == DEAD) + return + borgprint(usr) + +/obj/item/camera/siliconcam/robot_camera/proc/borgprint(mob/user) + var/mob/living/silicon/robot/C = loc + if(!istype(C) || C.toner < 20) + to_chat(user, "Insufficent toner to print image.") + return + var/datum/picture/selection = selectpicture(user) + if(!istype(selection)) + to_chat(user, "Invalid Image.") + return + var/obj/item/photo/p = new /obj/item/photo(C.loc, selection) + p.pixel_x = rand(-10, 10) + p.pixel_y = rand(-10, 10) + C.toner -= printcost //All fun allowed. + visible_message("[C.name] spits out a photograph from a narrow slot on its chassis.") + to_chat(usr, "You print a photograph.") diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm new file mode 100644 index 0000000000..bd77d468d7 --- /dev/null +++ b/code/modules/photography/photos/album.dm @@ -0,0 +1,75 @@ +/* + * Photo album + */ +/obj/item/storage/photo_album + name = "photo album" + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "album" + item_state = "briefcase" + lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' + resistance_flags = FLAMMABLE + var/persistence_id + +/obj/item/storage/photo_album/Initialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.can_hold = typecacheof(list(/obj/item/photo)) + STR.max_combined_w_class = 42 + STR.max_items = 21 + LAZYADD(SSpersistence.photo_albums, src) + +/obj/item/storage/photo_album/Destroy() + LAZYREMOVE(SSpersistence.photo_albums, src) + return ..() + +/obj/item/storage/photo_album/proc/get_picture_id_list() + var/list/L = list() + for(var/i in contents) + if(istype(i, /obj/item/photo)) + L += i + if(!L.len) + return + . = list() + for(var/i in L) + var/obj/item/photo/P = i + if(!istype(P.picture)) + continue + . |= P.picture.id + +//Manual loading, DO NOT USE FOR HARDCODED/MAPPED IN ALBUMS. This is for if an album needs to be loaded mid-round from an ID. +/obj/item/storage/photo_album/proc/persistence_load() + var/list/data = SSpersistence.GetPhotoAlbums() + if(data[persistence_id]) + populate_from_id_list(data[persistence_id]) + +/obj/item/storage/photo_album/proc/populate_from_id_list(list/ids) + var/list/current_ids = get_picture_id_list() + for(var/i in ids) + if(i in current_ids) + continue + var/obj/item/photo/P = load_photo_from_disk(i) + if(istype(P)) + if(!SEND_SIGNAL(src, COMSIG_TRY_STORAGE_INSERT, P, null, TRUE, TRUE)) + qdel(P) + +/obj/item/storage/photo_album/HoS + persistence_id = "HoS" + +/obj/item/storage/photo_album/RD + persistence_id = "RD" + +/obj/item/storage/photo_album/HoP + persistence_id = "HoP" + +/obj/item/storage/photo_album/Captain + persistence_id = "Captain" + +/obj/item/storage/photo_album/CMO + persistence_id = "CMO" + +/obj/item/storage/photo_album/QM + persistence_id = "QM" + +/obj/item/storage/photo_album/CE + persistence_id = "CE" diff --git a/code/modules/photography/photos/frame.dm b/code/modules/photography/photos/frame.dm new file mode 100644 index 0000000000..f379541b9c --- /dev/null +++ b/code/modules/photography/photos/frame.dm @@ -0,0 +1,163 @@ +// Picture frames + +/obj/item/wallframe/picture + name = "picture frame" + desc = "The perfect showcase for your favorite deathtrap memories." + icon = 'icons/obj/decals.dmi' + materials = list() + flags_1 = 0 + icon_state = "frame-empty" + result_path = /obj/structure/sign/picture_frame + var/obj/item/photo/displayed + +/obj/item/wallframe/picture/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/photo)) + if(!displayed) + if(!user.transferItemToLoc(I, src)) + return + displayed = I + update_icon() + else + to_chat(user, "\The [src] already contains a photo.") + ..() + +//ATTACK HAND IGNORING PARENT RETURN VALUE +/obj/item/wallframe/picture/attack_hand(mob/user) + if(user.get_inactive_held_item() != src) + ..() + return + if(contents.len) + var/obj/item/I = pick(contents) + user.put_in_hands(I) + to_chat(user, "You carefully remove the photo from \the [src].") + displayed = null + update_icon() + return ..() + +/obj/item/wallframe/picture/attack_self(mob/user) + user.examinate(src) + +/obj/item/wallframe/picture/examine(mob/user) + if(user.is_holding(src) && displayed) + displayed.show(user) + else + ..() + +/obj/item/wallframe/picture/update_icon() + cut_overlays() + if(displayed) + add_overlay(getFlatIcon(displayed)) + +/obj/item/wallframe/picture/after_attach(obj/O) + ..() + var/obj/structure/sign/picture_frame/PF = O + PF.copy_overlays(src) + if(displayed) + PF.framed = displayed + if(contents.len) + var/obj/item/I = pick(contents) + I.forceMove(PF) + +/obj/structure/sign/picture_frame + name = "picture frame" + desc = "Every time you look it makes you laugh." + icon = 'icons/obj/decals.dmi' + icon_state = "frame-empty" + var/obj/item/photo/framed + var/persistence_id + var/can_decon = TRUE + +#define FRAME_DEFINE(id) /obj/structure/sign/picture_frame/##id/persistence_id = #id + +//Put default persistent frame defines here! + +#undef FRAME_DEFINE + +/obj/structure/sign/picture_frame/Initialize(mapload, dir, building) + . = ..() + LAZYADD(SSpersistence.photo_frames, src) + if(dir) + setDir(dir) + if(building) + pixel_x = (dir & 3)? 0 : (dir == 4 ? -30 : 30) + pixel_y = (dir & 3)? (dir ==1 ? -30 : 30) : 0 + +/obj/structure/sign/picture_frame/Destroy() + LAZYREMOVE(SSpersistence.photo_frames, src) + return ..() + +/obj/structure/sign/picture_frame/proc/get_photo_id() + if(istype(framed) && istype(framed.picture)) + return framed.picture.id + +//Manual loading, DO NOT USE FOR HARDCODED/MAPPED IN ALBUMS. This is for if an album needs to be loaded mid-round from an ID. +/obj/structure/sign/picture_frame/proc/persistence_load() + var/list/data = SSpersistence.GetPhotoFrames() + if(data[persistence_id]) + load_from_id(data[persistence_id]) + +/obj/structure/sign/picture_frame/proc/load_from_id(id) + var/obj/item/photo/P = load_photo_from_disk(id) + if(istype(P)) + if(istype(framed)) + framed.forceMove(drop_location()) + else + qdel(framed) + framed = P + update_icon() + +/obj/structure/sign/picture_frame/examine(mob/user) + if(in_range(src, user) && framed) + framed.show(user) + else + ..() + +/obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user, params) + if(can_decon && (istype(I, /obj/item/screwdriver) || istype(I, /obj/item/wrench))) + to_chat(user, "You start unsecuring [name]...") + if(I.use_tool(src, user, 30, volume=50)) + playsound(loc, 'sound/items/deconstruct.ogg', 50, 1) + to_chat(user, "You unsecure [name].") + deconstruct() + + else if(istype(I, /obj/item/wirecutters) && framed) + framed.forceMove(drop_location()) + framed = null + user.visible_message("[user] cuts away [framed] from [src]!") + return + + else if(istype(I, /obj/item/photo)) + if(!framed) + var/obj/item/photo/P = I + if(!user.transferItemToLoc(P, src)) + return + framed = P + update_icon() + else + to_chat(user, "\The [src] already contains a photo.") + + ..() + +/obj/structure/sign/picture_frame/attack_hand(mob/user) + . = ..() + if(.) + return + if(framed) + framed.show(user) + +/obj/structure/sign/picture_frame/update_icon() + cut_overlays() + if(framed) + add_overlay(getFlatIcon(framed)) + +/obj/structure/sign/picture_frame/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + var/obj/item/wallframe/picture/F = new /obj/item/wallframe/picture(loc) + if(framed) + F.displayed = framed + framed = null + if(contents.len) + var/obj/item/I = pick(contents) + I.forceMove(F) + F.update_icon() + qdel(src) diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm new file mode 100644 index 0000000000..99e61cf3f0 --- /dev/null +++ b/code/modules/photography/photos/photo.dm @@ -0,0 +1,93 @@ +/* + * Photo + */ +/obj/item/photo + name = "photo" + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "photo" + item_state = "paper" + w_class = WEIGHT_CLASS_TINY + resistance_flags = FLAMMABLE + max_integrity = 50 + grind_results = list("iodine" = 4) + var/datum/picture/picture + var/scribble //Scribble on the back. + +/obj/item/photo/Initialize(mapload, datum/picture/P, datum_name = TRUE, datum_desc = TRUE) + set_picture(P, datum_name, datum_desc, TRUE) + return ..() + +/obj/item/photo/proc/set_picture(datum/picture/P, setname, setdesc, name_override = FALSE) + if(!istype(P)) + return + picture = P + update_icon() + if(P.caption) + scribble = P.caption + if(setname && P.picture_name) + if(name_override) + name = P.picture_name + else + name = "photo - [P.picture_name]" + if(setdesc && P.picture_desc) + desc = P.picture_desc + +/obj/item/photo/update_icon() + if(!istype(picture) || !picture.picture_image) + return + var/icon/I = picture.get_small_icon() + if(I) + icon = I + +/obj/item/photo/suicide_act(mob/living/carbon/user) + user.visible_message("[user] is taking one last look at \the [src]! It looks like [user.p_theyre()] giving in to death!")//when you wanna look at photo of waifu one last time before you die... + if (user.gender == MALE) + playsound(user, 'sound/voice/human/manlaugh1.ogg', 50, 1)//EVERY TIME I DO IT MAKES ME LAUGH + else if (user.gender == FEMALE) + playsound(user, 'sound/voice/human/womanlaugh.ogg', 50, 1) + return OXYLOSS + +/obj/item/photo/attack_self(mob/user) + user.examinate(src) + +/obj/item/photo/attackby(obj/item/P, mob/user, params) + if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) + if(!user.is_literate()) + to_chat(user, "You scribble illegibly on [src]!") + return + var/txt = sanitize(input(user, "What would you like to write on the back?", "Photo Writing", null) as text) + txt = copytext(txt, 1, 128) + if(user.canUseTopic(src, BE_CLOSE)) + scribble = txt + ..() + +/obj/item/photo/examine(mob/user) + ..() + + if(in_range(src, user)) + show(user) + else + to_chat(user, "You need to get closer to get a good look at this photo!") + +/obj/item/photo/proc/show(mob/user) + if(!istype(picture) || !picture.picture_image) + to_chat(user, "[src] seems to be blank...") + return + user << browse_rsc(picture.picture_image, "tmp_photo.png") + user << browse("[name]" \ + + "" \ + + "" \ + + "[scribble ? "
    Written on the back:
    [scribble]" : ""]"\ + + "", "window=photo_showing;size=480x608") + onclose(user, "[name]") + +/obj/item/photo/verb/rename() + set name = "Rename photo" + set category = "Object" + set src in usr + + var/n_name = copytext(sanitize(input(usr, "What would you like to label the photo?", "Photo Labelling", null) as text), 1, MAX_NAME_LEN) + //loc.loc check is for making possible renaming photos in clipboards + if((loc == usr || loc.loc && loc.loc == usr) && usr.stat == CONSCIOUS && usr.canmove && !usr.restrained()) + name = "photo[(n_name ? text("- '[n_name]'") : null)]" + add_fingerprint(usr) diff --git a/config/config.txt b/config/config.txt index 3a38e748c1..7ad7db8bb3 100644 --- a/config/config.txt +++ b/config/config.txt @@ -131,6 +131,12 @@ LOG_MANIFEST ## As an example of how this could be """useful""" look towards Poly (https://twitter.com/Poly_the_Parrot) # LOG_TWITTER +## Enable logging pictures +# LOG_PICTURES + +##Log camera pictures - Must have picture logging enabled +PICTURE_LOGGING_CAMERA + ## period of time in seconds for players to be considered inactive # INACTIVITY_PERIOD 300 diff --git a/tgstation.dme b/tgstation.dme index e56547711f..cab978c7a4 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -116,6 +116,7 @@ #include "code\__HELPERS\names.dm" #include "code\__HELPERS\priority_announce.dm" #include "code\__HELPERS\pronouns.dm" +#include "code\__HELPERS\qdel.dm" #include "code\__HELPERS\radiation.dm" #include "code\__HELPERS\radio.dm" #include "code\__HELPERS\roundend.dm" @@ -2164,8 +2165,16 @@ #include "code\modules\paperwork\paperplane.dm" #include "code\modules\paperwork\pen.dm" #include "code\modules\paperwork\photocopier.dm" -#include "code\modules\paperwork\photography.dm" #include "code\modules\paperwork\stamps.dm" +#include "code\modules\photography\_pictures.dm" +#include "code\modules\photography\camera\camera.dm" +#include "code\modules\photography\camera\camera_image_capturing.dm" +#include "code\modules\photography\camera\film.dm" +#include "code\modules\photography\camera\other.dm" +#include "code\modules\photography\camera\silicon_camera.dm" +#include "code\modules\photography\photos\album.dm" +#include "code\modules\photography\photos\frame.dm" +#include "code\modules\photography\photos\photo.dm" #include "code\modules\power\apc.dm" #include "code\modules\power\cable.dm" #include "code\modules\power\cell.dm" From 7dc8c57f9e6f6e03aebb763f596245eed72751cf Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 05:52:44 -0700 Subject: [PATCH 259/403] Automatic changelog generation for PR #38944 [ci skip] --- html/changelogs/AutoChangeLog-pr-38944.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-38944.yml diff --git a/html/changelogs/AutoChangeLog-pr-38944.yml b/html/changelogs/AutoChangeLog-pr-38944.yml new file mode 100644 index 0000000000..0dd9e124c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-38944.yml @@ -0,0 +1,6 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "Cameras now shoot from 1x1 to 7x7, fully customizable. Alt click on them to change the size of your photos. +experimental: All photos, assuming the server host turns this feature on, will be logged to disk in round logs, with their data and path stored in a json. This allows for things like Statbus, and persistence features among other things to easily grab the data and load the photo." + - rscadd: "Mappers are now able to add in photo albums and wall frames with persistence! This, obviously, requires photo logging to be turned on. If this is enabled and used, these albums and frames will save the ID of the photo(s) inside them and load it the next time they're loaded in! Like secret satchels, but for photos!" From ae80ca5e14ce8a9bfca0560fa58cb885434f2aca Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 16:45:02 +0000 Subject: [PATCH 260/403] Automatic changelog compile, [ci skip] --- html/changelog.html | 68 ++++++++++++++++++---- html/changelogs/.all_changelog.yml | 53 +++++++++++++++++ html/changelogs/AutoChangeLog-pr-38944.yml | 6 -- html/changelogs/AutoChangeLog-pr-39123.yml | 5 -- html/changelogs/AutoChangeLog-pr-39223.yml | 4 -- html/changelogs/AutoChangeLog-pr-39299.yml | 10 ---- html/changelogs/AutoChangeLog-pr-39302.yml | 4 -- html/changelogs/AutoChangeLog-pr-39367.yml | 5 -- html/changelogs/AutoChangeLog-pr-39420.yml | 4 -- html/changelogs/AutoChangeLog-pr-39421.yml | 4 -- html/changelogs/AutoChangeLog-pr-39460.yml | 4 -- html/changelogs/AutoChangeLog-pr-39463.yml | 4 -- html/changelogs/AutoChangeLog-pr-39465.yml | 4 -- html/changelogs/AutoChangeLog-pr-39478.yml | 4 -- html/changelogs/AutoChangeLog-pr-39479.yml | 5 -- 15 files changed, 111 insertions(+), 73 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-38944.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39123.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39223.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39299.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39302.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39367.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39420.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39421.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39460.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39463.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39465.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39478.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39479.yml diff --git a/html/changelog.html b/html/changelog.html index 7a31d4b836..ae91fd6d81 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,64 @@ -->
    +

    01 August 2018

    +

    Basilman updated:

    +
      +
    • Added the stealth manual to the uplink, costs 8 TC. Find it under the implant section
    • +
    +

    Cobby updated:

    +
      +
    • Drone's Law 3 has been edited to explicitly state that it's for the site of activation (aka people do not get banned for going to upgrade station as derelict drones since it's explicitly clear now). See https://tgstation13.org/phpBB/viewtopic.php?f=33&t=18844&p=429944#p429944 for why this was PR'd
    • +
    • PENLITEs are now actually spawnable in techwebs. Reminder to make sure everything is committed before PRing haha!
    • +
    +

    Denton updated:

    +
      +
    • New bounties have been added for the Firefighter APLU mech, cat tails and the Cat/Liz o' Nine Tails weapons.
    • +
    • ExoNuclear mech reactors now noticably irradiate their environment.
    • +
    • Adjusted suit storage unit descriptions to mention that they can decontaminate irradiated equipment.
    • +
    +

    Hate9 updated:

    +
      +
    • Added tiny-sized circuits (called Devices)
    • +
    • added new icons for the Devices
    • +
    +

    Iamgoofball updated:

    +
      +
    • Buzzkill Grenade Box Cost: 5 -> 15
    • +
    +

    Shdorsh updated:

    +
      +
    • Text replacer circuit
    • +
    +

    SpaceManiac updated:

    +
      +
    • The bridge of the gulag shuttle now has a stacking machine console for ejecting sheets.
    • +
    +

    Time-Green updated:

    +
      +
    • You can now mount energy guns into emitters
    • +
    • portal guns no longer runtime when fired by turrets
    • +
    +

    barbedwireqtip updated:

    +
      +
    • Adds the security guard outfit from Half-Life to the secdrobe
    • +
    +

    granpawalton updated:

    +
      +
    • Removed old piping sections and replaced with Canister storage area in atmos incinerator
    • +
    • scrubber and distro pipes moved in atmos incinerator to make room for added piping
    • +
    • added filter at connector on scrubbing pipe in atmos incinerator
    • +
    • replaced vent in incinerator with scrubber in **Both** incinerators
    • +
    • mixer placed on pure loop at plasma
    • +
    • delta and pubby atmos incinerator air alarm is no longer locked at round start
    • +
    • pubby atmos incinerator now starts without atmos in it
    • +
    +

    kevinz000 updated:

    +
      +
    • Cameras now shoot from 1x1 to 7x7, fully customizable. Alt click on them to change the size of your photos. experimental: All photos, assuming the server host turns this feature on, will be logged to disk in round logs, with their data and path stored in a json. This allows for things like Statbus, and persistence features among other things to easily grab the data and load the photo.
    • +
    • Mappers are now able to add in photo albums and wall frames with persistence! This, obviously, requires photo logging to be turned on. If this is enabled and used, these albums and frames will save the ID of the photo(s) inside them and load it the next time they're loaded in! Like secret satchels, but for photos!
    • +
    +

    30 July 2018

    Anonmare updated:

      @@ -1505,16 +1563,6 @@

      zaracka updated:

      • The Spirit Realm rune no longer spawns a braindead cult ghost when attempting to summon one after a player reaches the limit.
      - -

      29 May 2018

      -

      Dennok updated:

      -
        -
      • Collectors show their real produced power and stored power when examined
      • -
      -

      Naksu updated:

      -
        -
      • removed some unneeded typecaches
      • -
    GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 00e14084a2..b7e5ae0e32 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -19281,3 +19281,56 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. ninjanomnom: - bugfix: Objects picked up from tables blocking throws will no longer be forever unthrowable +2018-08-01: + Basilman: + - rscadd: Added the stealth manual to the uplink, costs 8 TC. Find it under the + implant section + Cobby: + - spellcheck: Drone's Law 3 has been edited to explicitly state that it's for the + site of activation (aka people do not get banned for going to upgrade station + as derelict drones since it's explicitly clear now). See https://tgstation13.org/phpBB/viewtopic.php?f=33&t=18844&p=429944#p429944 + for why this was PR'd + - bugfix: PENLITEs are now actually spawnable in techwebs. Reminder to make sure + everything is committed before PRing haha! + Denton: + - tweak: New bounties have been added for the Firefighter APLU mech, cat tails and + the Cat/Liz o' Nine Tails weapons. + - bugfix: ExoNuclear mech reactors now noticably irradiate their environment. + - spellcheck: Adjusted suit storage unit descriptions to mention that they can decontaminate + irradiated equipment. + Hate9: + - rscadd: Added tiny-sized circuits (called Devices) + - imageadd: added new icons for the Devices + Iamgoofball: + - balance: 'Buzzkill Grenade Box Cost: 5 -> 15' + Shdorsh: + - rscadd: Text replacer circuit + SpaceManiac: + - bugfix: The bridge of the gulag shuttle now has a stacking machine console for + ejecting sheets. + Time-Green: + - rscadd: You can now mount energy guns into emitters + - bugfix: portal guns no longer runtime when fired by turrets + barbedwireqtip: + - tweak: Adds the security guard outfit from Half-Life to the secdrobe + granpawalton: + - tweak: Removed old piping sections and replaced with Canister storage area in + atmos incinerator + - tweak: scrubber and distro pipes moved in atmos incinerator to make room for added + piping + - balance: added filter at connector on scrubbing pipe in atmos incinerator + - balance: replaced vent in incinerator with scrubber in **Both** incinerators + - balance: mixer placed on pure loop at plasma + - bugfix: delta and pubby atmos incinerator air alarm is no longer locked at round + start + - bugfix: pubby atmos incinerator now starts without atmos in it + kevinz000: + - rscadd: 'Cameras now shoot from 1x1 to 7x7, fully customizable. Alt click on them + to change the size of your photos. experimental: All photos, assuming the server + host turns this feature on, will be logged to disk in round logs, with their + data and path stored in a json. This allows for things like Statbus, and persistence + features among other things to easily grab the data and load the photo.' + - rscadd: Mappers are now able to add in photo albums and wall frames with persistence! + This, obviously, requires photo logging to be turned on. If this is enabled + and used, these albums and frames will save the ID of the photo(s) inside them + and load it the next time they're loaded in! Like secret satchels, but for photos! diff --git a/html/changelogs/AutoChangeLog-pr-38944.yml b/html/changelogs/AutoChangeLog-pr-38944.yml deleted file mode 100644 index 0dd9e124c9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-38944.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - rscadd: "Cameras now shoot from 1x1 to 7x7, fully customizable. Alt click on them to change the size of your photos. -experimental: All photos, assuming the server host turns this feature on, will be logged to disk in round logs, with their data and path stored in a json. This allows for things like Statbus, and persistence features among other things to easily grab the data and load the photo." - - rscadd: "Mappers are now able to add in photo albums and wall frames with persistence! This, obviously, requires photo logging to be turned on. If this is enabled and used, these albums and frames will save the ID of the photo(s) inside them and load it the next time they're loaded in! Like secret satchels, but for photos!" diff --git a/html/changelogs/AutoChangeLog-pr-39123.yml b/html/changelogs/AutoChangeLog-pr-39123.yml deleted file mode 100644 index 7a809a8327..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39123.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Hate9" -delete-after: True -changes: - - rscadd: "Added tiny-sized circuits (called Devices)" - - imageadd: "added new icons for the Devices" diff --git a/html/changelogs/AutoChangeLog-pr-39223.yml b/html/changelogs/AutoChangeLog-pr-39223.yml deleted file mode 100644 index 37161a002a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39223.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Shdorsh" -delete-after: True -changes: - - rscadd: "Text replacer circuit" diff --git a/html/changelogs/AutoChangeLog-pr-39299.yml b/html/changelogs/AutoChangeLog-pr-39299.yml deleted file mode 100644 index 886dcaeac2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39299.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "granpawalton" -delete-after: True -changes: - - tweak: "Removed old piping sections and replaced with Canister storage area in atmos incinerator" - - tweak: "scrubber and distro pipes moved in atmos incinerator to make room for added piping" - - balance: "added filter at connector on scrubbing pipe in atmos incinerator" - - balance: "replaced vent in incinerator with scrubber in **Both** incinerators" - - balance: "mixer placed on pure loop at plasma" - - bugfix: "delta and pubby atmos incinerator air alarm is no longer locked at round start" - - bugfix: "pubby atmos incinerator now starts without atmos in it" diff --git a/html/changelogs/AutoChangeLog-pr-39302.yml b/html/changelogs/AutoChangeLog-pr-39302.yml deleted file mode 100644 index ced2f4d0d7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39302.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Basilman" -delete-after: True -changes: - - rscadd: "Added the stealth manual to the uplink, costs 8 TC. Find it under the implant section" diff --git a/html/changelogs/AutoChangeLog-pr-39367.yml b/html/changelogs/AutoChangeLog-pr-39367.yml deleted file mode 100644 index 905d4f0bd1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39367.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Time-Green" -delete-after: True -changes: - - rscadd: "You can now mount energy guns into emitters" - - bugfix: "portal guns no longer runtime when fired by turrets" diff --git a/html/changelogs/AutoChangeLog-pr-39420.yml b/html/changelogs/AutoChangeLog-pr-39420.yml deleted file mode 100644 index 8114eced0e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39420.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Iamgoofball" -delete-after: True -changes: - - balance: "Buzzkill Grenade Box Cost: 5 -> 15" diff --git a/html/changelogs/AutoChangeLog-pr-39421.yml b/html/changelogs/AutoChangeLog-pr-39421.yml deleted file mode 100644 index 0d0d8b8b8d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39421.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - tweak: "New bounties have been added for the Firefighter APLU mech, cat tails and the Cat/Liz o' Nine Tails weapons." diff --git a/html/changelogs/AutoChangeLog-pr-39460.yml b/html/changelogs/AutoChangeLog-pr-39460.yml deleted file mode 100644 index 940a172e3f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39460.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "barbedwireqtip" -delete-after: True -changes: - - tweak: "Adds the security guard outfit from Half-Life to the secdrobe" diff --git a/html/changelogs/AutoChangeLog-pr-39463.yml b/html/changelogs/AutoChangeLog-pr-39463.yml deleted file mode 100644 index 7eb23aa3f2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39463.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cobby" -delete-after: True -changes: - - spellcheck: "Drone's Law 3 has been edited to explicitly state that it's for the site of activation (aka people do not get banned for going to upgrade station as derelict drones since it's explicitly clear now). See https://tgstation13.org/phpBB/viewtopic.php?f=33&t=18844&p=429944#p429944 for why this was PR'd" diff --git a/html/changelogs/AutoChangeLog-pr-39465.yml b/html/changelogs/AutoChangeLog-pr-39465.yml deleted file mode 100644 index 22ec3f3b8d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39465.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpaceManiac" -delete-after: True -changes: - - bugfix: "The bridge of the gulag shuttle now has a stacking machine console for ejecting sheets." diff --git a/html/changelogs/AutoChangeLog-pr-39478.yml b/html/changelogs/AutoChangeLog-pr-39478.yml deleted file mode 100644 index 9915d3624c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39478.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cobby" -delete-after: True -changes: - - bugfix: "PENLITEs are now actually spawnable in techwebs. Reminder to make sure everything is committed before PRing haha!" diff --git a/html/changelogs/AutoChangeLog-pr-39479.yml b/html/changelogs/AutoChangeLog-pr-39479.yml deleted file mode 100644 index 17e6f253bc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39479.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - bugfix: "ExoNuclear mech reactors now noticably irradiate their environment." - - spellcheck: "Adjusted suit storage unit descriptions to mention that they can decontaminate irradiated equipment." From 826c9b3df5bf641127b79258aafdd1ee5c1d1718 Mon Sep 17 00:00:00 2001 From: XDTM Date: Wed, 1 Aug 2018 20:53:43 +0200 Subject: [PATCH 261/403] Allows beheading in hard crit (#39491) * Allows head cutting in hard crit * better check --- code/modules/surgery/bodyparts/head.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index bdd01b6b41..3f800d4923 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -32,7 +32,7 @@ var/lip_color = "white" /obj/item/bodypart/head/can_dismember(obj/item/I) - if(!(owner.stat == DEAD)) + if(!((owner.stat == DEAD) || owner.InFullCritical())) return FALSE return ..() From 9e2358a1c894b3274719adbc5384c23eda2906f0 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 11:53:46 -0700 Subject: [PATCH 262/403] Automatic changelog generation for PR #39491 [ci skip] --- html/changelogs/AutoChangeLog-pr-39491.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39491.yml diff --git a/html/changelogs/AutoChangeLog-pr-39491.yml b/html/changelogs/AutoChangeLog-pr-39491.yml new file mode 100644 index 0000000000..d1f80b75c1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39491.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - bugfix: "Beheading now works while in hard crit, so it can be used against zombies." From 0706ef846bb943d892f42dc5e4890a6116030617 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Wed, 1 Aug 2018 16:24:52 -0400 Subject: [PATCH 263/403] Makes detect_room type agnostic again (#39443) detect_room() should be able to be used by whatever, it's the player accessible area modification that cares about these restrictions. This code is an independent proc who don't need no explicit istypes. Goddamit naksu --- code/__HELPERS/areas.dm | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 3e9a26b261..f05bf6f3e1 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -3,7 +3,8 @@ // Gets an atmos isolated contained space // Returns an associative list of turf|dirs pairs // The dirs are connected turfs in the same space -// break_if_found is a typecache of turf types to return false if found +// break_if_found is a typecache of turf/area types to return false if found +// Please keep this proc type agnostic. If you need to restrict it do it elsewhere or add an arg. /proc/detect_room(turf/origin, list/break_if_found) if(origin.blocks_air) return list(origin) @@ -13,10 +14,6 @@ var/list/found_turfs = list(origin) while(found_turfs.len) var/turf/sourceT = found_turfs[1] - if(break_if_found[sourceT.type]) - return FALSE - if (istype(sourceT.loc, /area/shuttle)) - return FALSE found_turfs.Cut(1, 2) var/dir_flags = checked_turfs[sourceT] for(var/dir in GLOB.alldirs) @@ -29,18 +26,24 @@ checked_turfs[checkT] |= turn(dir, 180) .[sourceT] |= dir .[checkT] |= turn(dir, 180) + if(break_if_found[checkT.type] || break_if_found[checkT.loc.type]) + return FALSE var/static/list/cardinal_cache = list("[NORTH]"=TRUE, "[EAST]"=TRUE, "[SOUTH]"=TRUE, "[WEST]"=TRUE) if(!cardinal_cache["[dir]"] || checkT.blocks_air || !CANATMOSPASS(sourceT, checkT)) continue found_turfs += checkT // Since checkT is connected, add it to the list to be processed /proc/create_area(mob/creator) - var/static/blacklisted_turfs = typecacheof(/turf/open/space) + // Passed into the above proc as list/break_if_found + var/static/area_or_turf_fail_types = typecacheof(list( + /turf/open/space, + /area/shuttle, + )) + // Ignore these areas and dont let people expand them. They can expand into them though var/static/blacklisted_areas = typecacheof(list( /area/space, - /area/shuttle, )) - var/list/turfs = detect_room(get_turf(creator), blacklisted_turfs) + var/list/turfs = detect_room(get_turf(creator), area_or_turf_fail_types) if(!turfs) to_chat(creator, "The new area must be completely airtight and not a part of a shuttle.") return @@ -50,7 +53,7 @@ var/list/areas = list("New Area" = /area) for(var/i in 1 to turfs.len) var/area/place = get_area(turfs[i]) - if(blacklisted_areas[place.type] || istype(place, /area/shuttle)) + if(blacklisted_areas[place.type]) continue if(!place.requires_power || place.noteleport || place.hidden) continue // No expanding powerless rooms etc From 80bf7286ee26895bdd629b10676bafd42434dc0b Mon Sep 17 00:00:00 2001 From: granpawalton <36310010+granpawalton@users.noreply.github.com> Date: Wed, 1 Aug 2018 15:36:56 -0500 Subject: [PATCH 264/403] Fix minor pubby atmos issues (#39494) round start atmos issues occured in: sci maint, Tcomms transit pipe room, xenobio disposal in space i'm not sure if the sci maint initial gas mix is intentional or not because it had the var edited instead of an accidental use of /turf/open/floor/plating/- airless but it causes a warning so i removed it --- _maps/map_files/PubbyStation/PubbyStation.dmm | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 2d94c26407..34ad48546b 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -41874,7 +41874,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/engine/engineering) "ceU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -47859,7 +47859,7 @@ dir = 1 }, /turf/open/floor/plasteel/neutral, -/area/maintenance/department/security/brig) +/area/hallway/secondary/exit/departure_lounge) "eCw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -49185,8 +49185,7 @@ /area/crew_quarters/dorms) "izF" = ( /turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" + luminosity = 2 }, /area/maintenance/department/science) "iAx" = ( @@ -50834,8 +50833,7 @@ dir = 6 }, /turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" + luminosity = 2 }, /area/maintenance/department/science) "nAs" = ( @@ -50974,7 +50972,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/space/nearstation) "nOY" = ( /obj/effect/turf_decal/stripes/line{ @@ -51064,8 +51062,7 @@ /obj/item/paper_bin, /obj/item/pen, /turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" + luminosity = 2 }, /area/maintenance/department/science) "oep" = ( @@ -52238,8 +52235,7 @@ dir = 4 }, /turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" + luminosity = 2 }, /area/maintenance/department/science) "rrb" = ( @@ -53198,8 +53194,7 @@ dir = 9 }, /turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" + luminosity = 2 }, /area/maintenance/department/science) "uoq" = ( @@ -53514,8 +53509,7 @@ "vpz" = ( /obj/structure/girder, /turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" + luminosity = 2 }, /area/maintenance/department/science) "vsk" = ( @@ -54281,8 +54275,7 @@ "xsO" = ( /obj/item/ectoplasm, /turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" + luminosity = 2 }, /area/maintenance/department/science) "xuv" = ( From cc3d64c19d9489174493b13e2d62e83b9494bf20 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 13:36:59 -0700 Subject: [PATCH 265/403] Automatic changelog generation for PR #39494 [ci skip] --- html/changelogs/AutoChangeLog-pr-39494.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39494.yml diff --git a/html/changelogs/AutoChangeLog-pr-39494.yml b/html/changelogs/AutoChangeLog-pr-39494.yml new file mode 100644 index 0000000000..c6bab4f4da --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39494.yml @@ -0,0 +1,5 @@ +author: "granpawalton" +delete-after: True +changes: + - bugfix: "pubby round start atmos issues resolved" + - bugfix: "pubby departures lounge vent is no longer belonging to brig maint" From b49221bb7cc737317477afe6628fa4ab8bdb67ec Mon Sep 17 00:00:00 2001 From: WJohn Date: Wed, 1 Aug 2018 16:37:47 -0400 Subject: [PATCH 266/403] Tweak the delta white ship a bit more (#39486) Adds a gun recharger to the bridge and a few more windows. Originally this PR was going to make it significantly more luxurious, but I didn't like how any of it was turning out. So I opted to downgrade it to simply an NT frigate. Slightly above standard than a regular ol' frigate but not by much. This ship just isn't built for luxury. --- _maps/shuttles/whiteship_delta.dmm | 53 +++++++++++++++--------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index e53108dc34..e3f64b01d8 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -25,7 +25,7 @@ id = "whiteship"; launch_status = 0; movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "NT Luxury Frigate"; + name = "NT Frigate"; port_direction = 8; preferred_direction = 4; width = 27 @@ -96,12 +96,13 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/airalarm/all_access{ - pixel_y = 24 - }, /obj/structure/bed, /obj/item/bedsheet/centcom, /obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, /turf/open/floor/wood, /area/shuttle/abandoned/crew) "am" = ( @@ -109,15 +110,16 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/airalarm/all_access{ - pixel_y = 24 - }, /obj/structure/bed, /obj/item/bedsheet/centcom, /obj/machinery/light/small{ dir = 1 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, /turf/open/floor/wood, /area/shuttle/abandoned/crew) "an" = ( @@ -191,7 +193,7 @@ pixel_y = 24 }, /obj/structure/closet/crate/bin, -/turf/open/floor/plasteel/floorgrime, +/turf/open/floor/plasteel/bar, /area/shuttle/abandoned/bar) "at" = ( /obj/machinery/light/small/built{ @@ -420,7 +422,7 @@ name = "dust" }, /obj/structure/spider/stickyweb, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/bar, /area/shuttle/abandoned/bar) "aL" = ( /obj/machinery/light/small/built{ @@ -708,7 +710,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/bar, /area/shuttle/abandoned/bar) "bf" = ( /obj/structure/chair/comfy/shuttle{ @@ -911,13 +913,6 @@ /obj/structure/chair, /turf/open/floor/plasteel/bar, /area/shuttle/abandoned/bar) -"bv" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/abandoned/bar) "bw" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -1111,7 +1106,7 @@ /obj/item/reagent_containers/food/drinks/beer, /obj/item/reagent_containers/food/snacks/sandwich, /obj/structure/spider/stickyweb, -/turf/open/floor/plasteel/floorgrime, +/turf/open/floor/plasteel/bar, /area/shuttle/abandoned/bar) "bM" = ( /obj/effect/decal/cleanable/dirt{ @@ -1197,10 +1192,13 @@ "bS" = ( /obj/structure/table, /obj/item/folder/blue{ - pixel_x = 3; - pixel_y = 2 + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 3 }, -/obj/item/pen, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; name = "dust" @@ -1209,6 +1207,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, +/obj/machinery/recharger, /obj/structure/spider/stickyweb, /turf/open/floor/plasteel/darkblue/side{ dir = 4 @@ -1413,6 +1412,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, +/obj/item/gun/energy/laser/retro, /mob/living/simple_animal/hostile/poison/giant_spider/tarantula{ desc = "Furry and black, it makes you shudder to look at it. This one has abyssal red eyes, and looks abnormally thin and frail."; environment_smash = 0; @@ -1564,7 +1564,6 @@ name = "dust" }, /obj/effect/decal/cleanable/blood/old, -/obj/item/gun/energy/laser/retro, /obj/structure/spider/stickyweb, /turf/open/floor/plasteel/darkblue/corner, /area/shuttle/abandoned/bridge) @@ -3030,7 +3029,7 @@ dO vm "} (11,1,1) = {" -ac +bI al aE oo @@ -3046,7 +3045,7 @@ cS dk dH di -vm +SY "} (12,1,1) = {" ac @@ -3068,7 +3067,7 @@ dQ vm "} (13,1,1) = {" -ac +bI am aF aV @@ -3084,7 +3083,7 @@ cR dm dP dR -vm +SY "} (14,1,1) = {" ac @@ -3243,7 +3242,7 @@ ae as aK be -bv +be bL ae aa From 3ed18937ec3147d25e56c5c5705f565348c4d1dc Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 13:37:50 -0700 Subject: [PATCH 267/403] Automatic changelog generation for PR #39486 [ci skip] --- html/changelogs/AutoChangeLog-pr-39486.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39486.yml diff --git a/html/changelogs/AutoChangeLog-pr-39486.yml b/html/changelogs/AutoChangeLog-pr-39486.yml new file mode 100644 index 0000000000..7798e699cd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39486.yml @@ -0,0 +1,4 @@ +author: "WJohnston" +delete-after: True +changes: + - tweak: "Added a gun recharger to delta's white ship and toned it down from a \"luxury\" frigate to just a NT frigate, it's just not made for luxury!" From e62ef1ff644c437dbde113690bd535397dd42607 Mon Sep 17 00:00:00 2001 From: Anonmare Date: Wed, 1 Aug 2018 21:38:48 +0100 Subject: [PATCH 268/403] Checks the Emperor Penguin description's privilege (#39483) Fixes grammar to account for female emperor penguins --- code/modules/mob/living/simple_animal/friendly/penguin.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/penguin.dm b/code/modules/mob/living/simple_animal/friendly/penguin.dm index 0bf9f4732d..7f69be2d96 100644 --- a/code/modules/mob/living/simple_animal/friendly/penguin.dm +++ b/code/modules/mob/living/simple_animal/friendly/penguin.dm @@ -18,7 +18,7 @@ /mob/living/simple_animal/pet/penguin/emperor name = "Emperor penguin" real_name = "penguin" - desc = "Emperor of all he surveys." + desc = "Emperor of all they survey." icon_state = "penguin" icon_living = "penguin" icon_dead = "penguin_dead" From 67bfdfea6a2b3d48629ea430f102476b7773af70 Mon Sep 17 00:00:00 2001 From: AnturK Date: Thu, 2 Aug 2018 00:20:44 +0200 Subject: [PATCH 269/403] Rapid attacking simple animals (#39426) Another one in the series of bad ideas for simple animals. Multiple attacks per npcpool tick, queued if the target is within the distance specified. Performance concerns exist. (Subsystem split would be better but this is lazy PR) --- .../living/simple_animal/hostile/hostile.dm | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 89b97b57c7..0a70b06ea6 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -15,6 +15,9 @@ var/list/emote_taunt = list() var/taunt_chance = 0 + var/rapid_melee = 1 //Number of melee attacks between each npc pool tick. Spread evenly. + var/melee_queue_distance = 4 //If target is close enough start preparing to hit them if we have rapid_melee enabled + var/ranged_message = "fires" //Fluff text for ranged mobs var/ranged_cooldown = 0 //What the current cooldown on ranged attacks is, generally world.time + ranged_cooldown_time var/ranged_cooldown_time = 30 //How long, in deciseconds, the cooldown of ranged attacks is @@ -221,7 +224,23 @@ Aggro() return 1 -/mob/living/simple_animal/hostile/proc/MoveToTarget(var/list/possible_targets)//Step 5, handle movement between us and our target +//What we do after closing in +/mob/living/simple_animal/hostile/proc/MeleeAction(patience = TRUE) + if(rapid_melee > 1) + var/datum/callback/cb = CALLBACK(src, .proc/CheckAndAttack) + var/delay = SSnpcpool.wait / rapid_melee + for(var/i in 1 to rapid_melee) + addtimer(cb, (i - 1)*delay) + else + AttackingTarget() + if(patience) + GainPatience() + +/mob/living/simple_animal/hostile/proc/CheckAndAttack() + if(target && targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from) && !incapacitated()) + AttackingTarget() + +/mob/living/simple_animal/hostile/proc/MoveToTarget(list/possible_targets)//Step 5, handle movement between us and our target stop_automated_movement = 1 if(!target || !CanAttack(target)) LoseTarget() @@ -247,8 +266,9 @@ Goto(target,move_to_delay,minimum_distance) if(target) if(targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from)) //If they're next to us, attack - AttackingTarget() - GainPatience() + MeleeAction() + else if(rapid_melee > 1 && target_distance <= melee_queue_distance) + MeleeAction(FALSE) return 1 return 0 if(environment_smash) From 44b078e5a036530570538f4aaed4094c63bcf27b Mon Sep 17 00:00:00 2001 From: Garen Crownguard <22408776+Garen7@users.noreply.github.com> Date: Wed, 1 Aug 2018 17:21:59 -0500 Subject: [PATCH 270/403] Fix COMSIG_PARENT_ATTACKBY for mobs (#39468) mob/living isnt calling the attackby signal, now it is --- code/_onclick/item_attack.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1bc72b1b34..3a8a22923c 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -36,6 +36,8 @@ return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_obj(src, user)) /mob/living/attackby(obj/item/I, mob/living/user, params) + if(..()) + return TRUE user.changeNext_move(CLICK_CD_MELEE) if(user.a_intent == INTENT_HARM && stat == DEAD && (butcher_results || guaranteed_butcher_results)) //can we butcher it? GET_COMPONENT_FROM(butchering, /datum/component/butchering, I) From d6ba215e189be0df2eda0077a1247a7133824a96 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 15:22:02 -0700 Subject: [PATCH 271/403] Automatic changelog generation for PR #39468 [ci skip] --- html/changelogs/AutoChangeLog-pr-39468.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39468.yml diff --git a/html/changelogs/AutoChangeLog-pr-39468.yml b/html/changelogs/AutoChangeLog-pr-39468.yml new file mode 100644 index 0000000000..3da1b0316f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39468.yml @@ -0,0 +1,4 @@ +author: "Garen" +delete-after: True +changes: + - bugfix: "mobs now call COMSIG_PARENT_ATTACKBY" From d62e121ec1154b9e726bd456e91bfa319ccfc0a2 Mon Sep 17 00:00:00 2001 From: granpawalton <36310010+granpawalton@users.noreply.github.com> Date: Wed, 1 Aug 2018 17:23:52 -0500 Subject: [PATCH 272/403] Add pipe dispenser to pirate ship (#39497) done as per player request, complaint was that it was inefficient unless you steal the mixer off of the ships distro, this keeps the ship theme of "outdated" while allowing players to make the improvement they want without dismantling distro. --- _maps/shuttles/pirate_default.dmm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm index 20723e9038..d5581e9fe3 100644 --- a/_maps/shuttles/pirate_default.dmm +++ b/_maps/shuttles/pirate_default.dmm @@ -630,6 +630,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, /turf/open/floor/plasteel, /area/shuttle/pirate) "bE" = ( @@ -1390,7 +1391,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/space_heater, +/obj/machinery/pipedispenser, /turf/open/floor/plasteel/caution{ dir = 4 }, From fafca4a17d1805e9b7a237047ff730e8a7699353 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 15:23:54 -0700 Subject: [PATCH 273/403] Automatic changelog generation for PR #39497 [ci skip] --- html/changelogs/AutoChangeLog-pr-39497.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39497.yml diff --git a/html/changelogs/AutoChangeLog-pr-39497.yml b/html/changelogs/AutoChangeLog-pr-39497.yml new file mode 100644 index 0000000000..249af5a8ce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39497.yml @@ -0,0 +1,4 @@ +author: "granpawalton" +delete-after: True +changes: + - rscadd: "pipe dispenser on pirate ship" From 98a3577f19ad24598a80ca19a5ec181679118660 Mon Sep 17 00:00:00 2001 From: Supermichael777 Date: Wed, 1 Aug 2018 18:41:55 -0400 Subject: [PATCH 274/403] Fix the cig reagent bug, remove pointless and buggy RNG (#39334) The balance in the note is no longer a concern, a 50/50 sacid and facid dipped cig took almost a minute to knockout and damage stopped when it was removed. It allowed a severe bug in the chem system. I'm not closing that issue report because in theory the underlying bug is still present and any future ways to apply chems may still have it. --- code/game/objects/items/cigs_lighters.dm | 5 ++--- code/modules/reagents/chemistry/holder.dm | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index d8fef9ec6e..b463c2b087 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -205,9 +205,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(iscarbon(loc)) var/mob/living/carbon/C = loc if (src == C.wear_mask) // if it's in the human/monkey mouth, transfer reagents to the mob - if(prob(15)) // so it's not an instarape in case of acid - var/fraction = min(REAGENTS_METABOLISM/reagents.total_volume, 1) - reagents.reaction(C, INGEST, fraction) + var/fraction = min(REAGENTS_METABOLISM/reagents.total_volume, 1) + reagents.reaction(C, INGEST, fraction) if(!reagents.trans_to(C, REAGENTS_METABOLISM)) reagents.remove_any(REAGENTS_METABOLISM) return diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 2def04cc66..33df6edfe6 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -550,7 +550,7 @@ if(!D) WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") return FALSE - + update_total() var/cached_total = total_volume if(cached_total + amount > maximum_volume) @@ -594,14 +594,14 @@ if(data) R.data = data R.on_new(data) - + + if(isliving(my_atom)) + R.on_mob_add(my_atom) //Must occur befor it could posibly run on_mob_delete update_total() if(my_atom) my_atom.on_reagent_change(ADD_REAGENT) if(!no_react) handle_reactions() - if(isliving(my_atom)) - R.on_mob_add(my_atom) return TRUE /datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15) From e7338e125a64c13d1309b5680d113497a79e689b Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 1 Aug 2018 15:41:58 -0700 Subject: [PATCH 275/403] Automatic changelog generation for PR #39334 [ci skip] --- html/changelogs/AutoChangeLog-pr-39334.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39334.yml diff --git a/html/changelogs/AutoChangeLog-pr-39334.yml b/html/changelogs/AutoChangeLog-pr-39334.yml new file mode 100644 index 0000000000..e5c98fac95 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39334.yml @@ -0,0 +1,5 @@ +author: "Supermichael777" +delete-after: True +changes: + - bugfix: "Cigarettes now always transfer a valid amount of reagents." + - bugfix: "Reagent order of operations is no longer completely insane" From e248d342b8efad78f4d62fd2404ff46d5e02ee1b Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 2 Aug 2018 00:19:16 -0400 Subject: [PATCH 276/403] Removes the shuttle timid var (#39445) Now that shuttles are all loaded via template we no longer have a need for the timid var on shuttles. Well not all shuttles, it seems I forgot to template the backup shuttle so it wouldn't have been working until now. This got fixed here as well. --- _maps/map_files/generic/CentCom.dmm | 180 +++++++----------- _maps/shuttles/assault_pod_default.dmm | 3 +- _maps/shuttles/aux_base_default.dmm | 3 +- _maps/shuttles/aux_base_small.dmm | 3 +- _maps/shuttles/emergency_backup.dmm | 134 +++++++++++++ _maps/shuttles/escape_pod_default.dmm | 1 - _maps/shuttles/escape_pod_large.dmm | 1 - _maps/shuttles/pirate_default.dmm | 1 - _maps/shuttles/ruin_caravan_victim.dmm | 1 - _maps/shuttles/ruin_pirate_cutter.dmm | 1 - _maps/shuttles/ruin_syndicate_dropship.dmm | 1 - .../shuttles/ruin_syndicate_fighter_shiv.dmm | 1 - _maps/shuttles/snowdin_excavation.dmm | 1 - _maps/shuttles/snowdin_mining.dmm | 1 - code/datums/shuttles.dm | 5 + code/modules/events/pirates.dm | 2 + code/modules/mining/aux_base.dm | 1 - code/modules/shuttle/assault_pod.dm | 1 - code/modules/shuttle/elevator.dm | 1 - code/modules/shuttle/emergency.dm | 3 +- code/modules/shuttle/manipulator.dm | 10 +- code/modules/shuttle/shuttle.dm | 7 - 22 files changed, 212 insertions(+), 150 deletions(-) create mode 100644 _maps/shuttles/emergency_backup.dmm diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index f8a9bf4f59..a08ccf4d47 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -12622,13 +12622,6 @@ dir = 5 }, /area/tdome/tdomeadmin) -"JV" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape/backup) -"JW" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape/backup) "JX" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -12669,18 +12662,6 @@ dir = 8 }, /area/tdome/tdomeadmin) -"Kd" = ( -/turf/open/floor/mineral/titanium, -/area/shuttle/escape/backup) -"Ke" = ( -/turf/open/floor/mineral/plastitanium, -/area/shuttle/escape/backup) -"Kf" = ( -/obj/machinery/computer/emergency_shuttle{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape/backup) "Kg" = ( /turf/closed/indestructible/fakedoor{ name = "Thunderdome Admin" @@ -12709,29 +12690,17 @@ /turf/open/floor/plasteel, /area/tdome/tdomeadmin) "Kk" = ( -/obj/machinery/door/airlock/titanium, /obj/docking_port/stationary{ dir = 4; dwidth = 2; height = 8; id = "backup_away"; name = "Backup Shuttle Dock"; + roundstart_template = /datum/map_template/shuttle/emergency/backup; width = 8 }, -/obj/docking_port/mobile/emergency/backup, -/turf/open/floor/plating, -/area/shuttle/escape/backup) -"Kl" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape/backup) -"Km" = ( -/obj/structure/table/wood, -/obj/item/paper/fluff/stations/centcom/broken_evac, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape/backup) +/turf/open/space/basic, +/area/space) "Kn" = ( /obj/structure/bookcase/random, /turf/open/floor/plasteel/vault{ @@ -12863,11 +12832,6 @@ dir = 8 }, /area/tdome/tdomeadmin) -"Kz" = ( -/obj/structure/table/wood, -/obj/item/book/manual/random, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape/backup) "KA" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/sparsegrass, @@ -12894,18 +12858,6 @@ /obj/machinery/ai_status_display, /turf/closed/indestructible/riveted, /area/tdome/tdomeadmin) -"KE" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape/backup) -"KF" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape/backup) "KG" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/sparsegrass, @@ -63652,14 +63604,14 @@ aa aa aa aa -JV -JV +aa +aa Kk -JV -JV -JV -JV -JV +aa +aa +aa +aa +aa aa aa aa @@ -63909,14 +63861,14 @@ aa aa aa aa -JW -Kd -Kd -Kd -KE -Kd -Kd -JW +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -64166,14 +64118,14 @@ aa aa aa aa -JV -Kd -Kd -Kd -Kd -Kd -Kd -JV +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -64423,14 +64375,14 @@ aa aa aa aa -JV -Ke -Ke -Ke -Ke -Kd -Ke -JV +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -64680,14 +64632,14 @@ aa aa aa aa -JV -Ke -Ke -Ke -Ke -Kd -Ke -JV +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -64937,14 +64889,14 @@ aa aa aa aa -JV -Kd -Kl -Kd -Kd -Kd -Kd -JV +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -65194,14 +65146,14 @@ aa aa aa aa -JW -Kf -Km -Kz -KF -Kd -Kd -JW +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -65451,14 +65403,14 @@ aa aa aa aa -JV -JV -JV -JV -JV -JV -JV -JV +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa diff --git a/_maps/shuttles/assault_pod_default.dmm b/_maps/shuttles/assault_pod_default.dmm index 4574318e47..394f5d90cd 100644 --- a/_maps/shuttles/assault_pod_default.dmm +++ b/_maps/shuttles/assault_pod_default.dmm @@ -23,8 +23,7 @@ dwidth = 3; name = "steel rain"; port_direction = 4; - preferred_direction = 4; - timid = 1 + preferred_direction = 4 }, /turf/open/floor/plating, /area/shuttle/assault_pod) diff --git a/_maps/shuttles/aux_base_default.dmm b/_maps/shuttles/aux_base_default.dmm index 365c34cf50..684a78e980 100644 --- a/_maps/shuttles/aux_base_default.dmm +++ b/_maps/shuttles/aux_base_default.dmm @@ -56,8 +56,7 @@ dir = 2; dwidth = 4; height = 9; - width = 9; - timid = 1 + width = 9 }, /obj/machinery/bluespace_beacon, /obj/machinery/computer/auxillary_base, diff --git a/_maps/shuttles/aux_base_small.dmm b/_maps/shuttles/aux_base_small.dmm index 3ebc1065c7..fc507ea3d8 100644 --- a/_maps/shuttles/aux_base_small.dmm +++ b/_maps/shuttles/aux_base_small.dmm @@ -53,8 +53,7 @@ dir = 2; dwidth = 4; height = 9; - width = 9; - timid = 1 + width = 9 }, /obj/machinery/bluespace_beacon, /obj/machinery/computer/auxillary_base, diff --git a/_maps/shuttles/emergency_backup.dmm b/_maps/shuttles/emergency_backup.dmm new file mode 100644 index 0000000000..40aae2c044 --- /dev/null +++ b/_maps/shuttles/emergency_backup.dmm @@ -0,0 +1,134 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/computer/emergency_shuttle{ + dir = 8 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape/backup) +"c" = ( +/obj/machinery/door/airlock/titanium, +/obj/docking_port/mobile/emergency/backup, +/turf/open/floor/plating, +/area/shuttle/escape/backup) +"f" = ( +/obj/structure/table/wood, +/obj/item/book/manual/random, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape/backup) +"g" = ( +/turf/open/floor/mineral/titanium, +/area/shuttle/escape/backup) +"m" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape/backup) +"p" = ( +/turf/open/floor/mineral/plastitanium, +/area/shuttle/escape/backup) +"q" = ( +/obj/machinery/status_display, +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape/backup) +"u" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape/backup) +"x" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape/backup) +"F" = ( +/obj/structure/table/wood, +/obj/item/paper/fluff/stations/centcom/broken_evac, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape/backup) +"P" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape/backup) + +(1,1,1) = {" +m +m +c +m +m +m +m +m +"} +(2,1,1) = {" +q +g +g +g +x +g +g +q +"} +(3,1,1) = {" +m +g +g +g +g +g +g +m +"} +(4,1,1) = {" +m +p +p +p +p +g +p +m +"} +(5,1,1) = {" +m +p +p +p +p +g +p +m +"} +(6,1,1) = {" +m +g +u +g +g +g +g +m +"} +(7,1,1) = {" +q +a +F +f +P +g +g +q +"} +(8,1,1) = {" +m +m +m +m +m +m +m +m +"} diff --git a/_maps/shuttles/escape_pod_default.dmm b/_maps/shuttles/escape_pod_default.dmm index c2625b0e57..84d0923b56 100644 --- a/_maps/shuttles/escape_pod_default.dmm +++ b/_maps/shuttles/escape_pod_default.dmm @@ -20,7 +20,6 @@ }, /obj/docking_port/mobile/pod{ port_direction = 2; - timid = 1; dwidth = 1; width = 3; height = 4 diff --git a/_maps/shuttles/escape_pod_large.dmm b/_maps/shuttles/escape_pod_large.dmm index 6a36801db9..fbbadaadff 100644 --- a/_maps/shuttles/escape_pod_large.dmm +++ b/_maps/shuttles/escape_pod_large.dmm @@ -74,7 +74,6 @@ height = 6; launch_status = 0; port_direction = 2; - timid = 1; width = 5 }, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm index d5581e9fe3..7dd804bd52 100644 --- a/_maps/shuttles/pirate_default.dmm +++ b/_maps/shuttles/pirate_default.dmm @@ -661,7 +661,6 @@ name = "Pirate Ship"; port_direction = 8; preferred_direction = 1; - timid = 0; width = 23 }, /obj/docking_port/stationary{ diff --git a/_maps/shuttles/ruin_caravan_victim.dmm b/_maps/shuttles/ruin_caravan_victim.dmm index 4766b3a822..f46454dd7a 100644 --- a/_maps/shuttles/ruin_caravan_victim.dmm +++ b/_maps/shuttles/ruin_caravan_victim.dmm @@ -901,7 +901,6 @@ name = "Small Freighter"; port_direction = 8; preferred_direction = 4; - timid = 1; width = 21 }, /turf/open/floor/plating, diff --git a/_maps/shuttles/ruin_pirate_cutter.dmm b/_maps/shuttles/ruin_pirate_cutter.dmm index a14bb0b49c..0cbb1ce860 100644 --- a/_maps/shuttles/ruin_pirate_cutter.dmm +++ b/_maps/shuttles/ruin_pirate_cutter.dmm @@ -707,7 +707,6 @@ name = "Pirate Cutter"; port_direction = 8; preferred_direction = 4; - timid = 1; width = 22 }, /turf/open/floor/plating, diff --git a/_maps/shuttles/ruin_syndicate_dropship.dmm b/_maps/shuttles/ruin_syndicate_dropship.dmm index 15ec7ae230..6d822ac140 100644 --- a/_maps/shuttles/ruin_syndicate_dropship.dmm +++ b/_maps/shuttles/ruin_syndicate_dropship.dmm @@ -69,7 +69,6 @@ name = "Syndicate Drop Ship"; port_direction = 8; preferred_direction = 4; - timid = 1; width = 15 }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, diff --git a/_maps/shuttles/ruin_syndicate_fighter_shiv.dmm b/_maps/shuttles/ruin_syndicate_fighter_shiv.dmm index a9cf2a45b5..7f9f0d593d 100644 --- a/_maps/shuttles/ruin_syndicate_fighter_shiv.dmm +++ b/_maps/shuttles/ruin_syndicate_fighter_shiv.dmm @@ -98,7 +98,6 @@ name = "Syndicate Fighter"; port_direction = 2; preferred_direction = 4; - timid = 1; width = 9 }, /turf/open/floor/plating, diff --git a/_maps/shuttles/snowdin_excavation.dmm b/_maps/shuttles/snowdin_excavation.dmm index e0b53a78b1..7f7b120bbe 100644 --- a/_maps/shuttles/snowdin_excavation.dmm +++ b/_maps/shuttles/snowdin_excavation.dmm @@ -8,7 +8,6 @@ height = 6; id = "snowdin_excavation"; name = "excavation elevator"; - timid = 1; width = 6 }, /turf/open/floor/plating, diff --git a/_maps/shuttles/snowdin_mining.dmm b/_maps/shuttles/snowdin_mining.dmm index cd8d37d703..9e89edf3d9 100644 --- a/_maps/shuttles/snowdin_mining.dmm +++ b/_maps/shuttles/snowdin_mining.dmm @@ -9,7 +9,6 @@ height = 5; id = "snowdin_mining"; name = "mining elevator"; - timid = 1; width = 5 }, /turf/open/floor/plating, diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index d9b197d2ff..db00c9098b 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -110,6 +110,11 @@ // Shuttles start here: +/datum/map_template/shuttle/emergency/backup + suffix = "backup" + name = "Backup Shuttle" + can_be_bought = FALSE + /datum/map_template/shuttle/emergency/airless suffix = "airless" name = "Build your own shuttle kit" diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 7288d9e3e0..4fe31d6dde 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -81,6 +81,8 @@ candidates -= M else notify_ghosts("Space pirates are waking up!", source = spawner, action=NOTIFY_ATTACK, flashwindow = FALSE) + for(var/obj/docking_port/mobile/port in A) + port.register() priority_announce("Unidentified armed ship detected near the station.") diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index 2c001571a1..e9233923cc 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -239,7 +239,6 @@ interface with the mining shuttle at the landing site if a mobile beacon is also /obj/docking_port/mobile/auxillary_base name = "auxillary base" id = "colony_drop" - timid = FALSE //Reminder to map-makers to set these values equal to the size of your base. dheight = 4 dwidth = 4 diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/assault_pod.dm index 43b273914c..a33676de29 100644 --- a/code/modules/shuttle/assault_pod.dm +++ b/code/modules/shuttle/assault_pod.dm @@ -1,7 +1,6 @@ /obj/docking_port/mobile/assault_pod name = "assault pod" id = "steel_rain" - timid = FALSE dwidth = 3 width = 7 height = 7 diff --git a/code/modules/shuttle/elevator.dm b/code/modules/shuttle/elevator.dm index 959cc2dae7..4584cd5958 100644 --- a/code/modules/shuttle/elevator.dm +++ b/code/modules/shuttle/elevator.dm @@ -1,7 +1,6 @@ /obj/docking_port/mobile/elevator name = "elevator" id = "elevator" - timid = FALSE dwidth = 3 width = 7 height = 7 diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 08fd5db20e..337d590dee 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -273,7 +273,7 @@ if(prevent) return FALSE - + return has_people && hijacker_present /obj/docking_port/mobile/emergency/proc/ShuttleDBStuff() @@ -422,7 +422,6 @@ /obj/docking_port/mobile/pod name = "escape pod" id = "pod" - timid = FALSE dwidth = 1 width = 3 height = 4 diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index 274e6c7c40..ecd138d73b 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -233,7 +233,7 @@ preview_shuttle.movement_force = list("KNOCKDOWN" = 0, "THROW" = 0) preview_shuttle.initiate_docking(D) preview_shuttle.movement_force = force_memory - + . = preview_shuttle // Shuttle state involves a mode and a timer based on world.time, so @@ -267,18 +267,10 @@ for(var/T in affected) for(var/obj/docking_port/P in T) if(istype(P, /obj/docking_port/mobile)) - var/obj/docking_port/mobile/M = P found++ if(found > 1) qdel(P, force=TRUE) log_world("Map warning: Shuttle Template [S.mappath] has multiple mobile docking ports.") - else if(!M.timid) - // The shuttle template we loaded isn't "timid" which means - // it's already registered with the shuttles subsystem. - // This is a bad thing. - stack_trace("Template [S] is non-timid! Unloading.") - M.jumpToNullSpace() - return else preview_shuttle = P if(istype(P, /obj/docking_port/stationary)) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 2ba4f58005..1f89c53778 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -253,11 +253,6 @@ var/list/movement_force = list("KNOCKDOWN" = 3, "THROW" = 2) - // A timid shuttle will not register itself with the shuttle subsystem - // All shuttle templates MUST be timid, imports will fail if they're not - // Shuttle defined already on the map MUST NOT be timid, or they won't work - var/timid = TRUE - var/list/ripples = list() var/engine_coeff = 1 //current engine coeff var/current_engines = 0 //current engine power @@ -280,8 +275,6 @@ /obj/docking_port/mobile/Initialize(mapload) . = ..() - if(!timid) - register() if(!id) id = "[SSshuttle.mobile.len]" From befaa09c882f7024bffd99a73733472566ad8b29 Mon Sep 17 00:00:00 2001 From: ninjanomnom Date: Wed, 1 Aug 2018 17:56:34 -0400 Subject: [PATCH 277/403] Removes a couple storage GetComponent calls --- code/__DEFINES/components.dm | 6 ++++++ code/_onclick/click.dm | 13 ++----------- code/datums/action.dm | 10 ++++------ code/datums/components/storage/storage.dm | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index e973b2cd92..ecd068eff8 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -68,6 +68,8 @@ #define COMSIG_ATOM_RAD_CONTAMINATING "atom_rad_contam" //from base of datum/radiation_wave/radiate(): (strength) #define COMPONENT_BLOCK_CONTAMINATION 1 #define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass" //from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width) +#define COMSIG_ATOM_CANREACH "atom_can_reach" //from internal loop in atom/movable/proc/CanReach(): (list/next) + #define COMPONENT_BLOCK_REACH 1 ///////////////// #define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" //from base of atom/attack_ghost(): (mob/dead/observer/ghost) #define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" //from base of atom/attack_hand(): (mob/user) @@ -207,6 +209,10 @@ #define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into, recursively_search_inside_storages = TRUE) #define COMSIG_TRY_STORAGE_CAN_INSERT "storage_can_equip" //(obj/item/insertion_candidate, mob/user, silent) - returns bool +// /datum/action signals +#define COMSIG_ACTION_TRIGGER "action_trigger" //from base of datum/action/proc/Trigger(): (datum/action) + #define COMPONENT_ACTION_BLOCK_TRIGGER 1 + /*******Non-Signal Component Related Defines*******/ //Redirection component init flags diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 4fe76339f8..cc7f1b11d0 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -195,17 +195,8 @@ if (!target.loc) continue - GET_COMPONENT_FROM(storage, /datum/component/storage, target.loc) - if (storage) - var/datum/component/storage/concrete/master = storage.master() - if (master) - next += master.parent - for(var/S in master.slaves) - var/datum/component/storage/slave = S - next += slave.parent - else - next += target.loc - else + + if(!(SEND_SIGNAL(target.loc, COMSIG_ATOM_CANREACH, next) & COMPONENT_BLOCK_REACH)) next += target.loc checking = next diff --git a/code/datums/action.dm b/code/datums/action.dm index aaa337bd46..1411c737f4 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -85,8 +85,10 @@ /datum/action/proc/Trigger() if(!IsAvailable()) - return 0 - return 1 + return FALSE + if(SEND_SIGNAL(src, COMSIG_ACTION_TRIGGER, src) & COMPONENT_ACTION_BLOCK_TRIGGER) + return FALSE + return TRUE /datum/action/proc/Process() return @@ -718,7 +720,3 @@ target.layer = old_layer target.plane = old_plane current_button.appearance_cache = target.appearance - -/datum/action/item_action/storage_gather_mode/Trigger() - GET_COMPONENT_FROM(STR, /datum/component/storage, target) - STR.gather_mode_switch(owner) diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index c07f025adc..b0048b29d8 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -89,6 +89,7 @@ RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, .proc/show_to_ghost) RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/refresh_mob_views) RegisterSignal(parent, COMSIG_ATOM_EXITED, .proc/_remove_and_refresh) + RegisterSignal(parent, COMSIG_ATOM_CANREACH, .proc/canreach_react) RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept) RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/attack_self) @@ -118,6 +119,7 @@ return var/obj/item/I = parent modeswitch_action = new(I) + RegisterSignal(modeswitch_action, COMSIG_ACTION_TRIGGER, .proc/action_trigger) if(I.obj_flags & IN_INVENTORY) var/mob/M = I.loc if(!istype(M)) @@ -143,6 +145,16 @@ var/datum/component/storage/concrete/master = master() return master? master.real_location() : null +/datum/component/storage/proc/canreach_react(list/next) + var/datum/component/storage/concrete/master = master() + if(!master) + return + . = COMPONENT_BLOCK_REACH + next += master.parent + for(var/i in master.slaves) + var/datum/component/storage/slave = i + next += slave.parent + /datum/component/storage/proc/attack_self(mob/M) if(locked) to_chat(M, "[parent] seems to be locked!") @@ -731,6 +743,10 @@ return user.visible_message("[user] draws [I] from [parent]!", "You draw [I] from [parent].") +/datum/component/storage/proc/action_trigger(datum/action/source) + gather_mode_switch(source.owner) + return COMPONENT_ACTION_BLOCK_TRIGGER + /datum/component/storage/proc/gather_mode_switch(mob/user) collection_mode = (collection_mode+1)%3 switch(collection_mode) From 01ef505e3f5aaf8afb76729b7817bc482ca61fa2 Mon Sep 17 00:00:00 2001 From: Mickyan <38563876+Mickyan@users.noreply.github.com> Date: Thu, 2 Aug 2018 21:45:43 +0200 Subject: [PATCH 278/403] camera sprites (#39508) --- code/modules/photography/camera/camera.dm | 4 ++-- icons/mob/inhands/misc/devices_lefthand.dmi | Bin 1368 -> 1422 bytes icons/mob/inhands/misc/devices_righthand.dmi | Bin 1365 -> 1425 bytes icons/mob/neck.dmi | Bin 39053 -> 39273 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index 92c3683733..fd7de4c173 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -6,12 +6,12 @@ icon = 'icons/obj/items_and_weapons.dmi' desc = "A polaroid camera. Alt click to change its focusing, allowing you to set how big of an area it will capture!" icon_state = "camera" - item_state = "electropack" + item_state = "camera" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_SMALL flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BELT + slot_flags = ITEM_SLOT_NECK materials = list(MAT_METAL = 50, MAT_GLASS = 150) var/state_on = "camera" var/state_off = "camera_off" diff --git a/icons/mob/inhands/misc/devices_lefthand.dmi b/icons/mob/inhands/misc/devices_lefthand.dmi index a421b1fbc50213d0e191fea0d2a97efb1d878ff9..b84d8a8978ce970ba5d227d341def5063b6d9cd7 100644 GIT binary patch delta 1246 zcmV<41R?v_3XThqBmt$7C7^%E$jJBi_g7kTHpG#O00001bW%=J06^y0W&i*H!Fp6! zbVOxyV{&P5bZKvH004NLjgmbM!Y~Yl=j0SoyCeQq7SsxLph8>#xrs}orU{Azh}+Ya zfeD$-&-yI;+0NCzJXEzRj+K01BpbZisqJDZ#nYP9jbgKwqC8)>SOqKz=%6tBLZM(0=v9qJUr4Rp`4tpn=ZG!lz82s(Hci(qVEDY91&4&%RO zyw!YXq!e_2xqHjInT;EW{EE(}vfvLhrXu{pa#hyF{26cIcbxvMt|HF>00YWNL_t(| zobB9wThdS%$8jpaOssz_9xP*^p~S-g34Q-Bt-&w{=XsosqkcbGUEJHbcYX}|gZrXN z1poj50DvI8tGqw<7K-#?qk8OZ6sJ}{Nq!X^@S{W3OY4kUyUbO2DaNc?n|__Nw`zmcaKr8-?LA6 ztv)rnzA-oI{w_FR)VtZ;V>IaZ`vdFs{edb&+Q^j998Z7qDZkAiPS{1%8w>_L<7NM^ zSKg$wkul({{l#OYfG zgE#;H00000;0^ILQY&FJmyfT3ObMg8eEba6iXYA8=4Yr@_-O7BUIJR3CHZ<%v*Y3F z`aZW_0vdltbLl4TBmpJ0JT!egy$5q{qJ)6uk$u6;&$rk7^*K;+Uvds29s#{}1^@s6 z00000qv3F9UG>wuWWzs_T?~_IQN7D1kK!$$hb{+iLR$6|(0tD5{~x<0f88IMOo$@&_epAO$fX~-3vHP*ftmkA8>y<=}htmoQ5AzatAxpj%~oZ@B?m) zgp%d@aqt1Rgp&RGBDMtp00000000P+WHu*?H$SG5zJWt;!EF0mS5c76<|GDjJfH7W z=JPnV{vTk4)lQ9OiRZuM6}5CuWe6A#hw;3b-DC1-T{N~&?XPxdw79>YEtlQ3<#Hyk zXxV=SOo#y!#`aIkwE?w_{;uO}%@h@#bP#6|Fy4EK#!dla^-I*$Xd&D$v7#ZF%>`y5 z+%K`BA(_pEWs$rfPg2`BV&x@E|4GT-FR}8{&7LVM00000003{zYW1*^A8=@q=TKQz z504Mh1M;e(h2qGg;>jzM{Wmyrv^czX>eW(z{HFeh(RvUUGUXh@We^uK`KREHgSe0> zBDf9W0;Y`MG>8kBauVe@~07*qo IM6N<$f^)W9pa1{> delta 1192 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 IM6N<$f{#6IN&o-= delta 1186 zcmV;T1YP@)3)KpcBmtk1C8K|+p4&G70004WQchCV=-0C=2@k-ZMWFbss}*Eelo>GN(Aa-hCWWEE)0`A- zfB`4H`hps*O+si<$KY?E`y|_1;Lc7bCD8^!dzZul81hMq>FU5@_&1Cro!*Qbz3wk} zN9i=fY=_OZP-Vs3OZhF3!#lZBR^dS$D2Y2vua+aS_}5;_M`it83RJ zLa3Cbapih|2hB#k?%d$@$4~k!$=)7?<)!ht`K9R`{PjkkMRk9I2aV=8=i{$$EO$`M zqB+3}#pyz*l%?GM0000000000Zv-Brs~}L-tc$LKpr*MiwrE|JH(KeJkKk00IyhXJ zW=p%>YPH>?<6!sbM9_&T8nlEf(`>ZAw_CTju6HE~jjzxgP=y9#j?qb|w!zY0qAg{E ziWf8h000000C0aSekj+aodW0&zf-PDJE@=Q5;QUnS6s1ogI#qA8p;O4Ff?9aTVI|L ziaEPopDo_SrMX9ky?)OW9`^1Z>}kRWF=_Xg&j!PXdt=FFgMPn1*bNUY>+9W&wAl^H zb2VXWSz2cPSG~btVEB22mi6_nob@rgL2<5@jOc88%hG=`^RL50^DEl6zTOqHWJ;mm?3#b=*vv6>_j;X&K`8LU); zJ}5uEc6fi1qUH126cC^GwB!`>`b1j+F;8088ikflN4&Sq6&XMFbMzv000000N}Jm>DPh5auO;3 zZ1vYocJ$8M-}8ACx&MOHK@`pBiuLso=ABt=^G_C+=$!$^JeWtrq3bP7LgOo(*EdI) zw`Pk)H?dgEUS57@o$e65J7Y^uk8D5S9Z9IMLCgBq5w?<7W-os-Pj`qm3=z}*Gz~_E zK5T#MTSwSRe!VA|_s=Q1YBRR2d*aq$R&>>7Y_rArQv9OJ?obz93ENMV(| Ah5!Hn diff --git a/icons/mob/neck.dmi b/icons/mob/neck.dmi index 24aa605c9f7f8e0e74b2c3a0aee0ca9287f2888a..b91c29e03fbcba9a14a1470aae5c1d596e7348e1 100644 GIT binary patch delta 18712 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 Date: Thu, 2 Aug 2018 12:45:46 -0700 Subject: [PATCH 279/403] Automatic changelog generation for PR #39508 [ci skip] --- html/changelogs/AutoChangeLog-pr-39508.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39508.yml diff --git a/html/changelogs/AutoChangeLog-pr-39508.yml b/html/changelogs/AutoChangeLog-pr-39508.yml new file mode 100644 index 0000000000..d39aa352c4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39508.yml @@ -0,0 +1,5 @@ +author: "Mickyan" +delete-after: True +changes: + - imageadd: "added sprites for camera when equipped or in hand" + - tweak: "cameras are now equipped in the neck slot" From a80a2ae0a83b27416943054530ed9fce0c369f40 Mon Sep 17 00:00:00 2001 From: JJRcop Date: Thu, 2 Aug 2018 16:06:59 -0400 Subject: [PATCH 280/403] Deadchat can now use emoji (#39493) --- code/modules/admin/verbs/deadsay.dm | 4 ++-- code/modules/mob/say.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index a89a30b9ba..e89a067cdd 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -1,6 +1,6 @@ /client/proc/dsay(msg as text) set category = "Special Verbs" - set name = "Dsay" //Gave this shit a shorter name so you only have to time out "dsay" rather than "dead say" to use it --NeoFite + set name = "Dsay" set hidden = 1 if(!src.holder) to_chat(src, "Only administrators may use this command.") @@ -21,7 +21,7 @@ return var/static/nicknames = world.file2list("[global.config.directory]/admin_nicknames.txt") - var/rendered = "DEAD: [uppertext(holder.rank)]([src.holder.fakekey ? pick(nicknames) : src.key]) says, \"[msg]\"" + var/rendered = "DEAD: [uppertext(holder.rank)]([src.holder.fakekey ? pick(nicknames) : src.key]) says, \"[emoji_parse(msg)]\"" for (var/mob/M in GLOB.player_list) if(isnewplayer(M)) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 4220fdbfe0..f9576a3ecb 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -75,7 +75,7 @@ K = src.key message = src.say_quote(message, get_spans()) - var/rendered = "DEAD: [name][alt_name] [message]" + var/rendered = "DEAD: [name][alt_name] [emoji_parse(message)]" log_message("DEAD: [message]", INDIVIDUAL_SAY_LOG) deadchat_broadcast(rendered, follow_target = src, speaker_key = K) From acf756f428977663e3d7cbbe5663b8a03a119e8d Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 2 Aug 2018 14:27:01 -0700 Subject: [PATCH 281/403] Automatic changelog generation for PR #39481 [ci skip] --- html/changelogs/AutoChangeLog-pr-39481.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39481.yml diff --git a/html/changelogs/AutoChangeLog-pr-39481.yml b/html/changelogs/AutoChangeLog-pr-39481.yml new file mode 100644 index 0000000000..53b046518a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39481.yml @@ -0,0 +1,4 @@ +author: "SpaceManiac" +delete-after: True +changes: + - bugfix: "Traps now have their examine text back." From 5b37938f6c0e1f34e37bd906b7285ed129e00986 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Fri, 3 Aug 2018 04:11:34 +0200 Subject: [PATCH 282/403] Lavaland Syndie base tweaks (#39472) I really like the Syndie lavaland base since it allows you to test deadly chem mixes with impunity (read: without getting banned or having to set up a local server). I have tweaked a few areas to let players experiment even further: Chemistry related changes: * Made the testing chamber airlock heatproof and added scrubbers/vents to restore air after you've ignited the latest burnmix. * Replaced loose grenade casings/assemblies with a vending machine inside Chemistry. * The vending machine contains casings, assemblies and one holy water bottle for strange reagent/life reactions. If syndies are clinically bored, they can use it to set up a monster shooting gallery as well. * Chemical/soda/beer dispensers start emagged. This both allows syndies to experiment with more chemicals and gives miners an incentive to come inside. Non deconstructable, meaning you can't unwrench it. * Added a smoke machine board to the warehouse, as well as more stock parts to let players build more machinery and beakers for grenades. Other changes: * I added a cabinet with syndicate documents to the vault - this is valid for a 10.000 credit bounty at cargo. * Replaced incinerator machinery with the proper "sydicatelava" subtypes; added a DP vent and controller to the incinerator airlock. * Set waste outlet volume_rate to 200 so that the chem test chamber can vent gases quickly. --- .../lavaland_surface_syndicate_base1.dmm | 429 ++++++++---------- code/game/objects/items/storage/boxes.dm | 9 + .../chemistry/machinery/chem_dispenser.dm | 41 +- .../ruins/lavalandruin_code/syndicate_base.dm | 22 + tgstation.dme | 1 + 5 files changed, 273 insertions(+), 229 deletions(-) create mode 100644 code/modules/ruins/lavalandruin_code/syndicate_base.dm diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index b2941409a1..ec27eb9e1e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -51,7 +51,7 @@ /area/ruin/unpowered/syndicate_lava_base/main) "ah" = ( /obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks/beer{ +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ dir = 1 }, /obj/structure/sign/barsign{ @@ -63,7 +63,7 @@ /area/ruin/unpowered/syndicate_lava_base/bar) "ai" = ( /obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks{ +/obj/machinery/chem_dispenser/drinks/fullupgrade{ dir = 1 }, /turf/open/floor/wood, @@ -162,6 +162,12 @@ }, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/circuits) +"aF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) "aL" = ( /turf/closed/wall/mineral/plastitanium/explosive, /area/ruin/unpowered/syndicate_lava_base/testlab) @@ -339,7 +345,8 @@ req_access_txt = "150" }, /obj/effect/decal/cleanable/dirt, -/obj/item/storage/box/beakers, +/obj/item/storage/box/beakers/bluespace, +/obj/item/storage/box/beakers/bluespace, /turf/open/floor/plasteel/white/side{ dir = 9 }, @@ -547,6 +554,7 @@ "dR" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/hatch{ + heat_proof = 1; name = "Experimentation Room"; req_access_txt = "150" }, @@ -628,6 +636,9 @@ pixel_x = 24 }, /obj/effect/decal/cleanable/dirt, +/obj/item/screwdriver/nuke{ + pixel_y = 18 + }, /turf/open/floor/plasteel/white/side{ dir = 4 }, @@ -789,71 +800,26 @@ /area/ruin/unpowered/syndicate_lava_base/testlab) "eo" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/metal/fifty, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade/adv_release{ - pixel_x = 8 - }, -/obj/item/grenade/chem_grenade/adv_release{ - pixel_x = 8 - }, -/obj/item/grenade/chem_grenade/pyro{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/grenade/chem_grenade/pyro{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/grenade/chem_grenade/cryo{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/grenade/chem_grenade/cryo{ - pixel_x = -6; - pixel_y = 4 - }, +/obj/item/storage/toolbox/syndicate, /turf/open/floor/plasteel/vault{ dir = 8 }, /area/ruin/unpowered/syndicate_lava_base/testlab) "ep" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/syndicate, -/obj/item/stack/cable_coil/yellow, /obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/vault{ dir = 8 }, /area/ruin/unpowered/syndicate_lava_base/testlab) "eq" = ( /obj/structure/table/reinforced, -/obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/assembly/igniter, -/obj/item/assembly/igniter, -/obj/item/assembly/igniter, -/obj/item/assembly/voice, -/obj/item/assembly/voice, -/obj/item/assembly/voice, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, -/obj/item/screwdriver/nuke, -/obj/effect/decal/cleanable/dirt, +/obj/item/restraints/handcuffs, +/obj/item/taperecorder, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 8 @@ -902,43 +868,8 @@ /turf/open/floor/plasteel/white/corner, /area/ruin/unpowered/syndicate_lava_base/chemistry) "ew" = ( -/obj/structure/table/glass, -/obj/item/stack/cable_coil/white{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil/white, -/obj/item/assembly/igniter{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/assembly/igniter{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/assembly/igniter{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/screwdriver{ - pixel_y = 20 - }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/syndichem, /turf/open/floor/plasteel/white/side{ dir = 6 }, @@ -1150,11 +1081,11 @@ /obj/structure/chair{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -1163,17 +1094,8 @@ "eQ" = ( /obj/machinery/light/small, /obj/structure/table/reinforced, -/obj/item/restraints/handcuffs, -/obj/item/taperecorder, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/box/monkeycubes{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/box/monkeycubes{ - pixel_x = 4; - pixel_y = 4 - }, +/obj/item/storage/box/monkeycubes, +/obj/item/storage/box/monkeycubes, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -1445,9 +1367,9 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/chemistry) "fq" = ( -/obj/machinery/vending/assist, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/assist, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -1469,12 +1391,14 @@ }, /obj/structure/closet/crate, /obj/item/storage/box/stockparts/deluxe, +/obj/item/storage/box/stockparts/deluxe, /obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/glass/fifty, /obj/item/circuitboard/machine/processor, /obj/item/circuitboard/machine/gibber, /obj/item/circuitboard/machine/deep_fryer, /obj/item/circuitboard/machine/cell_charger, +/obj/item/circuitboard/machine/smoke_machine, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/cargo) "ft" = ( @@ -1742,6 +1666,12 @@ "gj" = ( /turf/closed/wall/mineral/plastitanium/explosive, /area/ruin/unpowered/syndicate_lava_base/virology) +"gn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) "gp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -2720,6 +2650,8 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 5 }, +/obj/structure/filingcabinet, +/obj/item/folder/syndicate/mining, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -2861,13 +2793,6 @@ }, /turf/open/floor/circuit/red, /area/ruin/unpowered/syndicate_lava_base/main) -"iL" = ( -/obj/machinery/airalarm/syndicate{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/circuit/red, -/area/ruin/unpowered/syndicate_lava_base/main) "iM" = ( /obj/machinery/light/small{ dir = 4 @@ -3361,7 +3286,8 @@ /area/ruin/unpowered/syndicate_lava_base/engineering) "jK" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3{ - dir = 8 + dir = 8; + volume_rate = 200 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -3729,6 +3655,9 @@ icon_state = "2-4" }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/engineering) "ky" = ( @@ -3742,6 +3671,9 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/engineering) "kz" = ( @@ -3752,9 +3684,7 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer3{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer3, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "kA" = ( @@ -3775,6 +3705,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{ dir = 9 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "kB" = ( @@ -3923,6 +3854,9 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/medbay) "kU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 1 + }, /turf/closed/wall/mineral/plastitanium/explosive, /area/ruin/unpowered/syndicate_lava_base/engineering) "kV" = ( @@ -3955,9 +3889,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "kY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/visible{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/visible, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "kZ" = ( @@ -4144,9 +4076,7 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "ls" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/simple/supply/visible, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "lt" = ( @@ -4319,6 +4249,7 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "lO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "lP" = ( @@ -4523,6 +4454,7 @@ name = "O2 to Incinerator"; target_pressure = 4500 }, +/obj/machinery/atmospherics/pipe/simple/supply/visible, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "mk" = ( @@ -4715,6 +4647,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/clothing/head/welding, /obj/item/weldingtool/largetank, +/obj/machinery/atmospherics/pipe/simple/supply/visible, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "mJ" = ( @@ -4835,19 +4768,13 @@ dir = 1; id = "syndie_lavaland_incineratorturbine" }, -/obj/machinery/button/door{ - id = "syndie_lavaland_turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_syndicatelava_main{ pixel_x = 6; - pixel_y = -24; - req_access_txt = "150" + pixel_y = -24 }, -/obj/machinery/button/door{ - id = "syndie_lavaland_auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_syndicatelava_aux{ pixel_x = -6; - pixel_y = -24; - req_access_txt = "150" + pixel_y = -24 }, /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, @@ -4863,17 +4790,11 @@ /area/ruin/unpowered/syndicate_lava_base/engineering) "ne" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/doorButtons/airlock_controller{ - idExterior = "syndie_lavaland_incinerator_exterior"; - idInterior = "syndie_lavaland_incinerator_interior"; - idSelf = "syndie_lavaland_incinerator_access"; - name = "Incinerator Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava{ pixel_x = -8; - pixel_y = -26; - req_access_txt = "150" + pixel_y = -26 }, -/obj/machinery/button/ignition{ - id = "syndie_lavaland_Incinerator"; +/obj/machinery/button/ignition/incinerator/syndicatelava{ pixel_x = 6; pixel_y = -24 }, @@ -5134,14 +5055,7 @@ icon_state = "1-2" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "syndie_lavaland_incinerator_interior"; - name = "Turbine Interior Airlock"; - req_access_txt = "150" - }, +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_interior, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/engine, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -5422,13 +5336,8 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/doorButtons/access_button{ - idDoor = "syndie_lavaland_incinerator_exterior"; - idSelf = "syndie_lavaland_incinerator_access"; - layer = 3.1; - name = "Incinerator airlock control"; - pixel_x = 8; - pixel_y = -24 +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 }, /turf/open/floor/engine, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -5436,22 +5345,24 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava{ + dir = 8 + }, /turf/open/floor/engine, /area/ruin/unpowered/syndicate_lava_base/engineering) "of" = ( /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/doorButtons/access_button{ - idDoor = "syndie_lavaland_incinerator_interior"; - idSelf = "syndie_lavaland_incinerator_access"; - name = "Incinerator airlock control"; - pixel_x = -8; - pixel_y = 24 - }, /obj/machinery/atmospherics/components/binary/pump/on{ target_pressure = 4500 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 8 + }, +/obj/machinery/airlock_sensor/incinerator_syndicatelava{ + pixel_x = 22 + }, /turf/open/floor/engine, /area/ruin/unpowered/syndicate_lava_base/engineering) "og" = ( @@ -5562,14 +5473,7 @@ icon_state = "1-2" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "syndie_lavaland_incinerator_exterior"; - name = "Turbine Exterior Airlock"; - req_access_txt = "150" - }, +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_exterior, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -5598,20 +5502,14 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) "oz" = ( -/turf/open/floor/engine{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/engine/vacuum, /area/ruin/unpowered/syndicate_lava_base/engineering) "oA" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/igniter{ - id = "syndie_lavaland_Incinerator" - }, -/turf/open/floor/engine{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/obj/machinery/igniter/incinerator_syndicatelava, +/turf/open/floor/engine/vacuum, /area/ruin/unpowered/syndicate_lava_base/engineering) "oB" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ @@ -5621,18 +5519,11 @@ /obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, -/turf/open/floor/engine{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/engine/vacuum, /area/ruin/unpowered/syndicate_lava_base/engineering) "oC" = ( -/obj/machinery/door/poddoor{ - id = "syndie_lavaland_auxincineratorvent"; - name = "Auxiliary Incinerator Vent" - }, -/turf/open/floor/engine{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/obj/machinery/door/poddoor/incinerator_syndicatelava_aux, +/turf/open/floor/engine/vacuum, /area/ruin/unpowered/syndicate_lava_base/engineering) "oD" = ( /obj/structure/sign/warning/xeno_mining{ @@ -5654,9 +5545,7 @@ dir = 1; luminosity = 2 }, -/turf/open/floor/engine{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/engine/vacuum, /area/ruin/unpowered/syndicate_lava_base/engineering) "oF" = ( /obj/structure/sign/warning/securearea, @@ -5668,18 +5557,11 @@ dir = 2; luminosity = 2 }, -/turf/open/floor/engine{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/engine/vacuum, /area/ruin/unpowered/syndicate_lava_base/engineering) "oH" = ( -/obj/machinery/door/poddoor{ - id = "syndie_lavaland_turbinevent"; - name = "Turbine Vent" - }, -/turf/open/floor/engine{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/obj/machinery/door/poddoor/incinerator_syndicatelava_main, +/turf/open/floor/engine/vacuum, /area/ruin/unpowered/syndicate_lava_base/engineering) "oI" = ( /obj/structure/sign/warning/vacuum{ @@ -5694,6 +5576,51 @@ /obj/structure/sign/departments/chemistry, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/testlab) +"tW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"uB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"vu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"BF" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi"; + name = "Syndicate Research Experimentation Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"Cg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"CG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) "EZ" = ( /obj/machinery/door/airlock/external{ req_access_txt = "150" @@ -5702,6 +5629,23 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) +"IJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Lg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"LQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) "MP" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall/mineral/plastitanium/nodiagonal, @@ -5709,6 +5653,17 @@ "Pa" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/circuits) +"RE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"RV" = ( +/obj/structure/sign/warning/fire, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) "St" = ( /obj/structure/fans/tiny, /obj/machinery/door/airlock/external{ @@ -5719,6 +5674,24 @@ }, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) +"Tp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"TC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) (1,1,1) = {" aa @@ -6628,9 +6601,9 @@ ab ae ap aq +Lg aq -aq -aq +Lg aq dR el @@ -6678,9 +6651,9 @@ ab ae aq aq +aF aq -aq -aq +aF aq ae em @@ -6728,9 +6701,9 @@ ab ae aq aq +Tp aq -aq -aq +Cg aq dS eo @@ -6778,11 +6751,11 @@ ab ae ap aq -aq -aq -aq -aq -dS +CG +vu +TC +LQ +BF ep eP fl @@ -7450,15 +7423,15 @@ jt jF jT ju -ju -ju -ju -ju +gn +IJ +IJ +IJ kU -ju -ju -ju -ju +IJ +IJ +IJ +uB ju ju ju @@ -7593,7 +7566,7 @@ hl hU ha it -iL +iJ jd ha jw @@ -7656,9 +7629,9 @@ ls lO mj mI -nf -ju -ju +RV +tW +RE ju oC nf diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 9ac08aab5d..ffb80ee215 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -189,6 +189,14 @@ for(var/i in 1 to 7) new /obj/item/reagent_containers/glass/beaker( src ) +/obj/item/storage/box/beakers/bluespace + name = "box of bluespace beakers" + illustration = "beaker" + +/obj/item/storage/box/beakers/bluespace/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/reagent_containers/glass/beaker/bluespace(src) + /obj/item/storage/box/medsprays name = "box of medical sprayers" desc = "A box full of medical sprayers, with unscrewable caps and precision spray heads." @@ -991,6 +999,7 @@ /obj/item/storage/box/stockparts/deluxe name = "box of deluxe stock parts" desc = "Contains a variety of deluxe stock parts." + icon_state = "syndiebox" /obj/item/storage/box/stockparts/deluxe/PopulateContents() new /obj/item/stock_parts/capacitor/quadratic(src) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 6c4d0fa752..256a310de5 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -455,6 +455,24 @@ "tirizene" ) +/obj/machinery/chem_dispenser/drinks/fullupgrade //fully ugpraded stock parts, emagged + desc = "Contains a large reservoir of soft drinks. This model has had its safeties shorted out." + obj_flags = CAN_BE_HIT | EMAGGED + flags_1 = NODECONSTRUCT_1 + +/obj/machinery/chem_dispenser/drinks/fullupgrade/Initialize() + . = ..() + dispensable_reagents |= emagged_reagents //adds emagged reagents + component_parts = list() + component_parts += new /obj/item/circuitboard/machine/chem_dispenser/drinks(null) + component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null) + component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null) + component_parts += new /obj/item/stock_parts/capacitor/quadratic(null) + component_parts += new /obj/item/stock_parts/manipulator/femto(null) + component_parts += new /obj/item/stack/sheet/glass(null) + component_parts += new /obj/item/stock_parts/cell/bluespace(null) + RefreshParts() + /obj/machinery/chem_dispenser/drinks/beer name = "booze dispenser" desc = "Contains a large reservoir of the good stuff." @@ -488,6 +506,23 @@ "fernet" ) +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged + desc = "Contains a large reservoir of the good stuff. This model has had its safeties shorted out." + obj_flags = CAN_BE_HIT | EMAGGED + flags_1 = NODECONSTRUCT_1 + +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade/Initialize() + . = ..() + dispensable_reagents |= emagged_reagents //adds emagged reagents + component_parts = list() + component_parts += new /obj/item/circuitboard/machine/chem_dispenser/drinks/beer(null) + component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null) + component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null) + component_parts += new /obj/item/stock_parts/capacitor/quadratic(null) + component_parts += new /obj/item/stock_parts/manipulator/femto(null) + component_parts += new /obj/item/stack/sheet/glass(null) + component_parts += new /obj/item/stock_parts/cell/bluespace(null) + RefreshParts() /obj/machinery/chem_dispenser/mutagen name = "mutagen dispenser" @@ -514,10 +549,14 @@ "ash", "diethylamine") -/obj/machinery/chem_dispenser/fullupgrade //fully upgraded stock parts +/obj/machinery/chem_dispenser/fullupgrade //fully ugpraded stock parts, emagged + desc = "Creates and dispenses chemicals. This model has had its safeties shorted out." + obj_flags = CAN_BE_HIT | EMAGGED + flags_1 = NODECONSTRUCT_1 /obj/machinery/chem_dispenser/fullupgrade/Initialize() . = ..() + dispensable_reagents |= emagged_reagents //adds emagged reagents component_parts = list() component_parts += new /obj/item/circuitboard/machine/chem_dispenser(null) component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null) diff --git a/code/modules/ruins/lavalandruin_code/syndicate_base.dm b/code/modules/ruins/lavalandruin_code/syndicate_base.dm new file mode 100644 index 0000000000..514ea35e8e --- /dev/null +++ b/code/modules/ruins/lavalandruin_code/syndicate_base.dm @@ -0,0 +1,22 @@ +//lavaland_surface_syndicate_base1.dmm + +/obj/machinery/vending/syndichem + name = "\improper SyndiChem" + desc = "A vending machine full of grenades and grenade accessories. Sponsored by DonkCo(tm)." + req_access = list(ACCESS_SYNDICATE) + products = list(/obj/item/stack/cable_coil/random = 5, + /obj/item/assembly/igniter = 20, + /obj/item/assembly/prox_sensor = 5, + /obj/item/assembly/signaler = 5, + /obj/item/assembly/timer = 5, + /obj/item/assembly/voice = 5, + /obj/item/assembly/health = 5, + /obj/item/assembly/infra = 5, + /obj/item/grenade/chem_grenade = 5, + /obj/item/grenade/chem_grenade/large = 5, + /obj/item/grenade/chem_grenade/pyro = 5, + /obj/item/grenade/chem_grenade/cryo = 5, + /obj/item/grenade/chem_grenade/adv_release = 5, + /obj/item/reagent_containers/food/drinks/bottle/holywater = 1) + product_slogans = "It's not pyromania if you're getting paid!;You smell that? Plasma, son. Nothing else in the world smells like that.;I love the smell of Plasma in the morning." + resistance_flags = FIRE_PROOF diff --git a/tgstation.dme b/tgstation.dme index cab978c7a4..84f5122498 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2440,6 +2440,7 @@ #include "code\modules\ruins\lavalandruin_code\puzzle.dm" #include "code\modules\ruins\lavalandruin_code\sloth.dm" #include "code\modules\ruins\lavalandruin_code\surface.dm" +#include "code\modules\ruins\lavalandruin_code\syndicate_base.dm" #include "code\modules\ruins\objects_and_mobs\ash_walker_den.dm" #include "code\modules\ruins\objects_and_mobs\necropolis_gate.dm" #include "code\modules\ruins\objects_and_mobs\sin_ruins.dm" From ce0b6ac769ab8e91ed721f0b644fd4b9834aabd3 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 2 Aug 2018 19:11:38 -0700 Subject: [PATCH 283/403] Automatic changelog generation for PR #39472 [ci skip] --- html/changelogs/AutoChangeLog-pr-39472.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39472.yml diff --git a/html/changelogs/AutoChangeLog-pr-39472.yml b/html/changelogs/AutoChangeLog-pr-39472.yml new file mode 100644 index 0000000000..6502fa4aec --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39472.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Syndicate lavaland base: Added a grenade parts vendor and smoke machine board. The testing chamber now has a heatproof door and vents/scrubbers to replace air after testing gas grenades. Chemical/soda/beer vendors are emagged by default; the vault contains a set of valuable Syndicate documents." From a278f1b379d8a1bc5c6c291d762dec4695359aeb Mon Sep 17 00:00:00 2001 From: AnturK Date: Fri, 3 Aug 2018 06:20:46 +0200 Subject: [PATCH 284/403] Teach simple animals how to dodge (#39383) It's no secret simple animals are pretty weak, so this tries to change it without padding their health. Adds basic swerve when approaching the target, and sidestep when fighting. --- .../living/simple_animal/hostile/hostile.dm | 67 +++++++++++++++++-- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 0a70b06ea6..d8635060ee 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -4,9 +4,16 @@ obj_damage = 40 environment_smash = ENVIRONMENT_SMASH_STRUCTURES //Bitflags. Set to ENVIRONMENT_SMASH_STRUCTURES to break closets,tables,racks, etc; ENVIRONMENT_SMASH_WALLS for walls; ENVIRONMENT_SMASH_RWALLS for rwalls var/atom/target - var/ranged = 0 + var/ranged = FALSE var/rapid = 0 //How many shots per volley. var/rapid_fire_delay = 2 //Time between rapid fire shots + + var/dodging = FALSE + var/approaching_target = FALSE //We should dodge now + var/in_melee = FALSE //We should sidestep now + var/dodge_prob = 30 + var/sidestep_per_cycle = 1 //How many sidesteps per npcpool cycle when in melee + var/projectiletype //set ONLY it and NULLIFY casingtype var, if we have ONLY projectile var/projectilesound var/casingtype //set ONLY it and NULLIFY projectiletype, if we have projectile IN CASING @@ -44,7 +51,6 @@ var/lose_patience_timer_id //id for a timer to call LoseTarget(), used to stop mobs fixating on a target they can't reach var/lose_patience_timeout = 300 //30 seconds by default, so there's no major changes to AI behaviour, beyond actually bailing if stuck forever - /mob/living/simple_animal/hostile/Initialize() . = ..() @@ -79,6 +85,34 @@ toggle_ai(AI_IDLE) // otherwise we go idle return 1 +/mob/living/simple_animal/hostile/handle_automated_movement() + . = ..() + if(dodging && target && in_melee && isturf(loc) && isturf(target.loc)) + var/datum/cb = CALLBACK(src,.proc/sidestep) + if(sidestep_per_cycle > 1) //For more than one just spread them equally - this could changed to some sensible distribution later + var/sidestep_delay = SSnpcpool.wait / sidestep_per_cycle + for(var/i in 1 to sidestep_per_cycle) + addtimer(cb, (i - 1)*sidestep_delay) + else //Otherwise randomize it to make the players guessing. + addtimer(cb,rand(1,SSnpcpool.wait)) + +/mob/living/simple_animal/hostile/proc/sidestep() + if(!target || !isturf(target.loc) || !isturf(loc) || stat == DEAD) + return + var/target_dir = get_dir(src,target) + + var/static/list/cardinal_sidestep_directions = list(-90,-45,0,45,90) + var/static/list/diagonal_sidestep_directions = list(-45,0,45) + var/chosen_dir = 0 + if (target_dir & (target_dir - 1)) + chosen_dir = pick(diagonal_sidestep_directions) + else + chosen_dir = pick(cardinal_sidestep_directions) + if(chosen_dir) + chosen_dir = turn(target_dir,chosen_dir) + Move(get_step(src,chosen_dir)) + face_atom(target) //Looks better if they keep looking at you when dodging + /mob/living/simple_animal/hostile/attacked_by(obj/item/I, mob/living/user) if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client && user) FindTarget(list(user), 1) @@ -267,8 +301,10 @@ if(target) if(targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from)) //If they're next to us, attack MeleeAction() - else if(rapid_melee > 1 && target_distance <= melee_queue_distance) - MeleeAction(FALSE) + else + if(rapid_melee > 1 && target_distance <= melee_queue_distance) + MeleeAction(FALSE) + in_melee = FALSE //If we're just preparing to strike do not enter sidestep mode return 1 return 0 if(environment_smash) @@ -286,6 +322,10 @@ return 0 /mob/living/simple_animal/hostile/proc/Goto(target, delay, minimum_distance) + if(target == src.target) + approaching_target = TRUE + else + approaching_target = FALSE walk_to(src, target, minimum_distance, delay) /mob/living/simple_animal/hostile/adjustHealth(amount, updating_health = TRUE, forced = FALSE) @@ -302,6 +342,7 @@ /mob/living/simple_animal/hostile/proc/AttackingTarget() + in_melee = TRUE return target.attack_animal(src) /mob/living/simple_animal/hostile/proc/Aggro() @@ -318,6 +359,8 @@ /mob/living/simple_animal/hostile/proc/LoseTarget() target = null + approaching_target = FALSE + in_melee = FALSE walk(src, 0) LoseAggro() @@ -388,6 +431,22 @@ return iswallturf(T) || ismineralturf(T) +/mob/living/simple_animal/hostile/Move(atom/newloc, dir , step_x , step_y) + if(dodging && approaching_target && prob(dodge_prob) && moving_diagonally == 0 && isturf(loc) && isturf(newloc)) + return dodge(newloc,dir) + else + return ..() + +/mob/living/simple_animal/hostile/proc/dodge(moving_to,move_direction) + //Assuming we move towards the target we want to swerve toward them to get closer + var/cdir = turn(move_direction,45) + var/ccdir = turn(move_direction,-45) + dodging = FALSE + . = Move(get_step(loc,pick(cdir,ccdir))) + if(!.)//Can't dodge there so we just carry on + . = Move(moving_to,move_direction) + dodging = TRUE + /mob/living/simple_animal/hostile/proc/DestroyObjectsInDirection(direction) var/turf/T = get_step(targets_from, direction) if(T && T.Adjacent(targets_from)) From bed358eb1ddae31bdc9814076992fecdb775f0d3 Mon Sep 17 00:00:00 2001 From: AnturK Date: Fri, 3 Aug 2018 18:00:29 +0200 Subject: [PATCH 285/403] Fixes borg dusting (#39537) --- code/modules/antagonists/revenant/revenant.dm | 2 +- code/modules/mob/dead/dead.dm | 2 +- code/modules/mob/death.dm | 2 +- code/modules/mob/living/silicon/robot/death.dm | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 99fdfe0012..09371a7456 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -200,7 +200,7 @@ if(!essence) death() -/mob/living/simple_animal/revenant/dust() +/mob/living/simple_animal/revenant/dust(just_ash, drop_items, force) death() /mob/living/simple_animal/revenant/gib() diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index cc706f5ceb..c492905995 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -19,7 +19,7 @@ INITIALIZE_IMMEDIATE(/mob/dead) set_focus(src) return INITIALIZE_HINT_NORMAL -/mob/dead/dust() //ghosts can't be vaporised. +/mob/dead/dust(just_ash, drop_items, force) //ghosts can't be vaporised. return /mob/dead/gib() //ghosts can't be gibbed. diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 90c3bb529b..2d3ab19b14 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -6,7 +6,7 @@ //This is the proc for turning a mob into ash. Mostly a copy of gib code (above). //Originally created for wizard disintegrate. I've removed the virus code since it's irrelevant here. //Dusting robots does not eject the MMI, so it's a bit more powerful than gib() /N -/mob/proc/dust() +/mob/proc/dust(just_ash, drop_items, force) return /mob/proc/death(gibbed) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 7eb241e01f..75e8fd317f 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -2,7 +2,7 @@ /mob/living/silicon/robot/gib_animation() new /obj/effect/temp_visual/gib_animation(loc, "gibbed-r") -/mob/living/silicon/robot/dust() +/mob/living/silicon/robot/dust(just_ash, drop_items, force) if(mmi) qdel(mmi) ..() From bae4bf3dcb1f9ec31a0f792d149e5b9b73f15e63 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 3 Aug 2018 16:01:35 +0000 Subject: [PATCH 286/403] Automatic changelog compile, [ci skip] --- html/changelog.html | 124 +++++++-------------- html/changelogs/.all_changelog.yml | 25 +++++ html/changelogs/AutoChangeLog-pr-39334.yml | 5 - html/changelogs/AutoChangeLog-pr-39468.yml | 4 - html/changelogs/AutoChangeLog-pr-39472.yml | 4 - html/changelogs/AutoChangeLog-pr-39481.yml | 4 - html/changelogs/AutoChangeLog-pr-39486.yml | 4 - html/changelogs/AutoChangeLog-pr-39491.yml | 4 - html/changelogs/AutoChangeLog-pr-39494.yml | 5 - html/changelogs/AutoChangeLog-pr-39497.yml | 4 - html/changelogs/AutoChangeLog-pr-39508.yml | 5 - 11 files changed, 63 insertions(+), 125 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-39334.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39468.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39472.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39481.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39486.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39491.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39494.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39497.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39508.yml diff --git a/html/changelog.html b/html/changelog.html index ae91fd6d81..d6ac4e4313 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,44 @@ -->
    +

    03 August 2018

    +

    Denton updated:

    +
      +
    • Syndicate lavaland base: Added a grenade parts vendor and smoke machine board. The testing chamber now has a heatproof door and vents/scrubbers to replace air after testing gas grenades. Chemical/soda/beer vendors are emagged by default; the vault contains a set of valuable Syndicate documents.
    • +
    +

    Garen updated:

    +
      +
    • mobs now call COMSIG_PARENT_ATTACKBY
    • +
    +

    Mickyan updated:

    +
      +
    • added sprites for camera when equipped or in hand
    • +
    • cameras are now equipped in the neck slot
    • +
    +

    SpaceManiac updated:

    +
      +
    • Traps now have their examine text back.
    • +
    +

    Supermichael777 updated:

    +
      +
    • Cigarettes now always transfer a valid amount of reagents.
    • +
    • Reagent order of operations is no longer completely insane
    • +
    +

    WJohnston updated:

    +
      +
    • Added a gun recharger to delta's white ship and toned it down from a "luxury" frigate to just a NT frigate, it's just not made for luxury!
    • +
    +

    XDTM updated:

    +
      +
    • Beheading now works while in hard crit, so it can be used against zombies.
    • +
    +

    granpawalton updated:

    +
      +
    • pubby round start atmos issues resolved
    • +
    • pubby departures lounge vent is no longer belonging to brig maint
    • +
    • pipe dispenser on pirate ship
    • +
    +

    01 August 2018

    Basilman updated:

      @@ -1477,92 +1515,6 @@

      yorpan updated:

      • Brain damage makes you say one more thing.
      - -

      01 June 2018

      -

      Big Tobacco updated:

      -
        -
      • Cheap lighters now come in four different shapes and Zippos can have one of four different designs, collect them all and improve our sales!
      • -
      • All existing lighter sprites have been given a face-lift and the flames are now subtly animated.
      • -
      • Cheap lighters now use a fixed list of 16 colors to pick from instead of using totally randomized colors.
      • -
      • Cigar cases have been tweaked to be a bit smaller and to have a modified design.
      • -
      • Cohiba Robusto and Havanan cigars now use separate case sprites from the generic premium cigar cases.
      • -
      -

      Dax Dupont updated:

      -
        -
      • Fixed rpeds throwing stock part rating related runtimes.
      • -
      -

      Naksu updated:

      -
        -
      • NODROP_1, DROPDEL_1, ABSTRACT_1 and NOBLUDGEON_1 have been moved to item_flags
      • -
      • brass handcuffs, meat hook and the chrono gun now conduct electricity.
      • -
      -

      Nichlas0010 updated:

      -
        -
      • You can no longer use a soapstone infinitely
      • -
      -

      SpaceManiac updated:

      -
        -
      • Moving diagonally past delivery chutes, transit tube pods, &c. no longer causes your camera to be stuck on them.
      • -
      • The base machinery type is now anchored by default.
      • -
      • Pubby's auxiliary mining base now works again.
      • -
      • Cloning no longer breaks a character's connection to their family heirloom.
      • -
      • The overlay effects of cult flooring are now on the floor plane, fixing their odd ambient occlusion appearance.
      • -
      • Beam rifle tracers no longer fall into chasms.
      • -
      • Vomiting on the same tile a second time no deletes the vomited reagents.
      • -
      -

      theo2003 updated:

      -
        -
      • fixed the clockwork helmet not dropping to ground when used by non-clock cultists
      • -
      - -

      31 May 2018

      -

      CitrusGender updated:

      -
        -
      • Flamethrowers are no longer uncraftable since they have a part that happens to be a tool.
      • -
      • Fixes cyborgs not being able to use two-handed modules while other modules are equipped.
      • -
      -

      CosmicScientist updated:

      -
        -
      • Can't make drones anymore
      • -
      -

      Cruix updated:

      -
        -
      • AIs now have an experimental multi-camera mode that allows them to view up to six map areas at the same time, accessible through two new buttons on their HUD.
      • -
      -

      Cyberboss updated:

      -
        -
      • The limit of monkey's spawned via monkey cubes is now configurable
      • -
      -

      Dax Dupont updated:

      -
        -
      • Fixes the wrong tiles in Syndicate VR trainer and uses different tiny fans.
      • -
      • Access didn't append to VR IDs
      • -
      -

      Firecage updated:

      -
        -
      • The mech fabricator can now print two new janiborg upgrades. Advanced Mop and Trash Bag of holding. These two upgrades uses the advanced robotics node.
      • -
      -

      SpaceManiac updated:

      -
        -
      • Changing UI Style preference now takes effect immediately rather than next round.
      • -
      • Mindswapping with someone no longer gives you their UI style.
      • -
      • The destructive analyzer can once again be used to reveal nodes.
      • -
      • Some references to "deconstructive analyzer" have been updated to "destructive".
      • -
      • Hulks and catpeople now show "Human-derived mutant" under "Species" when health scanned.
      • -
      • Cyborg inventory slots once again unhighlight when a module is stowed.
      • -
      -

      deathride58 updated:

      -
        -
      • Things that are capable of igniting plasma fires will now generate heat if there's no plasma to ignite. Building a bonfire inside the station without taking safety precautions is now a bad idea.
      • -
      -

      kevinz000 updated:

      -
        -
      • Plasma specific heat is 500J/K*unit, everything else is 200
      • -
      -

      zaracka updated:

      -
        -
      • The Spirit Realm rune no longer spawns a braindead cult ghost when attempting to summon one after a player reaches the limit.
      • -
    GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index b7e5ae0e32..0348bc3ab1 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -19334,3 +19334,28 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. This, obviously, requires photo logging to be turned on. If this is enabled and used, these albums and frames will save the ID of the photo(s) inside them and load it the next time they're loaded in! Like secret satchels, but for photos! +2018-08-03: + Denton: + - tweak: 'Syndicate lavaland base: Added a grenade parts vendor and smoke machine + board. The testing chamber now has a heatproof door and vents/scrubbers to replace + air after testing gas grenades. Chemical/soda/beer vendors are emagged by default; + the vault contains a set of valuable Syndicate documents.' + Garen: + - bugfix: mobs now call COMSIG_PARENT_ATTACKBY + Mickyan: + - imageadd: added sprites for camera when equipped or in hand + - tweak: cameras are now equipped in the neck slot + SpaceManiac: + - bugfix: Traps now have their examine text back. + Supermichael777: + - bugfix: Cigarettes now always transfer a valid amount of reagents. + - bugfix: Reagent order of operations is no longer completely insane + WJohnston: + - tweak: Added a gun recharger to delta's white ship and toned it down from a "luxury" + frigate to just a NT frigate, it's just not made for luxury! + XDTM: + - bugfix: Beheading now works while in hard crit, so it can be used against zombies. + granpawalton: + - bugfix: pubby round start atmos issues resolved + - bugfix: pubby departures lounge vent is no longer belonging to brig maint + - rscadd: pipe dispenser on pirate ship diff --git a/html/changelogs/AutoChangeLog-pr-39334.yml b/html/changelogs/AutoChangeLog-pr-39334.yml deleted file mode 100644 index e5c98fac95..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39334.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Supermichael777" -delete-after: True -changes: - - bugfix: "Cigarettes now always transfer a valid amount of reagents." - - bugfix: "Reagent order of operations is no longer completely insane" diff --git a/html/changelogs/AutoChangeLog-pr-39468.yml b/html/changelogs/AutoChangeLog-pr-39468.yml deleted file mode 100644 index 3da1b0316f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39468.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Garen" -delete-after: True -changes: - - bugfix: "mobs now call COMSIG_PARENT_ATTACKBY" diff --git a/html/changelogs/AutoChangeLog-pr-39472.yml b/html/changelogs/AutoChangeLog-pr-39472.yml deleted file mode 100644 index 6502fa4aec..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39472.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Denton" -delete-after: True -changes: - - tweak: "Syndicate lavaland base: Added a grenade parts vendor and smoke machine board. The testing chamber now has a heatproof door and vents/scrubbers to replace air after testing gas grenades. Chemical/soda/beer vendors are emagged by default; the vault contains a set of valuable Syndicate documents." diff --git a/html/changelogs/AutoChangeLog-pr-39481.yml b/html/changelogs/AutoChangeLog-pr-39481.yml deleted file mode 100644 index 53b046518a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39481.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpaceManiac" -delete-after: True -changes: - - bugfix: "Traps now have their examine text back." diff --git a/html/changelogs/AutoChangeLog-pr-39486.yml b/html/changelogs/AutoChangeLog-pr-39486.yml deleted file mode 100644 index 7798e699cd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39486.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohnston" -delete-after: True -changes: - - tweak: "Added a gun recharger to delta's white ship and toned it down from a \"luxury\" frigate to just a NT frigate, it's just not made for luxury!" diff --git a/html/changelogs/AutoChangeLog-pr-39491.yml b/html/changelogs/AutoChangeLog-pr-39491.yml deleted file mode 100644 index d1f80b75c1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39491.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - bugfix: "Beheading now works while in hard crit, so it can be used against zombies." diff --git a/html/changelogs/AutoChangeLog-pr-39494.yml b/html/changelogs/AutoChangeLog-pr-39494.yml deleted file mode 100644 index c6bab4f4da..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39494.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "granpawalton" -delete-after: True -changes: - - bugfix: "pubby round start atmos issues resolved" - - bugfix: "pubby departures lounge vent is no longer belonging to brig maint" diff --git a/html/changelogs/AutoChangeLog-pr-39497.yml b/html/changelogs/AutoChangeLog-pr-39497.yml deleted file mode 100644 index 249af5a8ce..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39497.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "granpawalton" -delete-after: True -changes: - - rscadd: "pipe dispenser on pirate ship" diff --git a/html/changelogs/AutoChangeLog-pr-39508.yml b/html/changelogs/AutoChangeLog-pr-39508.yml deleted file mode 100644 index d39aa352c4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-39508.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Mickyan" -delete-after: True -changes: - - imageadd: "added sprites for camera when equipped or in hand" - - tweak: "cameras are now equipped in the neck slot" From 00e90f70447464dac7c350a6c3791205c208e80b Mon Sep 17 00:00:00 2001 From: Kmc2000 Date: Fri, 3 Aug 2018 17:07:12 +0100 Subject: [PATCH 287/403] Adds in a new type of securitron (#39382) * foolish jedi * do not underestimate general beepsky * adds death handling so you don't lose his eswords :) * changes .loc to Tsec * oversight * src, TRUE, src, FALSE * src * Adds a toy sword variant. Fixes formatting * oops * fixes stuff for beepsky * makes grievous beepsky block all projectiles. * Fixes & cleanup * cyberboss pt.1 * cyberboss pt2. --- .../living/simple_animal/bot/SuperBeepsky.dm | 150 ++++++++++++++++++ .../living/simple_animal/bot/construction.dm | 57 +++++++ .../mob/living/simple_animal/bot/ed209bot.dm | 22 +-- .../mob/living/simple_animal/bot/secbot.dm | 52 +++--- icons/mob/aibots.dmi | Bin 54636 -> 55414 bytes sound/effects/beepskyspinsabre.ogg | Bin 0 -> 44367 bytes tgstation.dme | 1 + 7 files changed, 248 insertions(+), 34 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm create mode 100644 sound/effects/beepskyspinsabre.ogg diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm new file mode 100644 index 0000000000..6fde8cede8 --- /dev/null +++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm @@ -0,0 +1,150 @@ +/mob/living/simple_animal/bot/secbot/grievous //This bot is powerful. If you managed to get 4 eswords somehow, you deserve this horror. Emag him for best results. + name = "General Beepsky" + desc = "Is that a secbot with four eswords in its arms...?" + icon = 'icons/mob/aibots.dmi' + icon_state = "grievous" + health = 150 + maxHealth = 150 + baton_type = /obj/item/melee/transforming/energy/sword + base_speed = 4 //he's a fast fucker + var/obj/item/weapon + var/block_chance = 50 + + +/mob/living/simple_animal/bot/secbot/grievous/toy //A toy version of general beepsky! + name = "Genewul Bweepskee" + desc = "An adorable looking secbot with four toy swords taped to its arms" + health = 50 + maxHealth = 50 + baton_type = /obj/item/toy/sword + +/mob/living/simple_animal/bot/secbot/grievous/bullet_act(obj/item/projectile/P) + visible_message("[src] deflects [P] with its energy swords!") + playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE) + return FALSE + +/mob/living/simple_animal/bot/secbot/grievous/Crossed(atom/movable/AM) + ..() + if(ismob(AM) && AM == target) + visible_message("[src] flails his swords and cuts [AM]!") + playsound(src,'sound/effects/beepskyspinsabre.ogg',100,TRUE,-1) + stun_attack(AM) + +/mob/living/simple_animal/bot/secbot/grievous/Initialize() + . = ..() + weapon = new baton_type(src) + weapon.attack_self(src) + +/mob/living/simple_animal/bot/secbot/grievous/Destroy() + QDEL_NULL(weapon) + return ..() + +/mob/living/simple_animal/bot/secbot/grievous/special_retaliate_after_attack(mob/user) + if(mode != BOT_HUNT) + return + if(prob(block_chance)) + visible_message("[src] deflects [user]'s attack with his energy swords!") + playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE, -1) + return TRUE + +/mob/living/simple_animal/bot/secbot/grievous/stun_attack(mob/living/carbon/C) //Criminals don't deserve to live + weapon.attack(C, src) + playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE, -1) + if(C.stat == DEAD) + addtimer(CALLBACK(src, .proc/update_icon), 2) + back_to_idle() + + +/mob/living/simple_animal/bot/secbot/grievous/handle_automated_action() + if(!on) + return + switch(mode) + if(BOT_IDLE) // idle + update_icon() + walk_to(src,0) + look_for_perp() // see if any criminals are in range + if(!mode && auto_patrol) // still idle, and set to patrol + mode = BOT_START_PATROL // switch to patrol mode + if(BOT_HUNT) // hunting for perp + update_icon() + playsound(src,'sound/effects/beepskyspinsabre.ogg',100,TRUE,-1) + // general beepsky doesn't give up so easily, jedi scum + if(frustration >= 20) + walk_to(src,0) + back_to_idle() + return + if(target) // make sure target exists + if(Adjacent(target) && isturf(target.loc)) // if right next to perp + target_lastloc = target.loc //stun_attack() can clear the target if they're dead, so this needs to be set first + stun_attack(target) + anchored = TRUE + return + else // not next to perp + var/turf/olddist = get_dist(src, target) + walk_to(src, target,1,4) + if((get_dist(src, target)) >= (olddist)) + frustration++ + else + frustration = 0 + else + back_to_idle() + + if(BOT_START_PATROL) + look_for_perp() + start_patrol() + + if(BOT_PATROL) + look_for_perp() + bot_patrol() + +/mob/living/simple_animal/bot/secbot/grievous/look_for_perp() + anchored = FALSE + var/judgement_criteria = judgement_criteria() + for (var/mob/living/carbon/C in view(7,src)) //Let's find us a criminal + if((C.stat) || (C.handcuffed)) + continue + + if((C.name == oldtarget_name) && (world.time < last_found + 100)) + continue + + threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) + + if(!threatlevel) + continue + + else if(threatlevel >= 4) + target = C + oldtarget_name = C.name + speak("Level [threatlevel] infraction alert!") + playsound(src, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50, FALSE) + playsound(src,'sound/weapons/saberon.ogg',50,TRUE,-1) + visible_message("[src] ignites his energy swords!") + icon_state = "grievous-c" + visible_message("[src] points at [C.name]!") + mode = BOT_HUNT + INVOKE_ASYNC(src, .proc/handle_automated_action) + break + else + continue + + +/mob/living/simple_animal/bot/secbot/grievous/explode() + + walk_to(src,0) + visible_message("[src] lets out a huge cough as it blows apart!") + var/atom/Tsec = drop_location() + + var/obj/item/bot_assembly/secbot/Sa = new (Tsec) + Sa.build_step = 1 + Sa.add_overlay("hs_hole") + Sa.created_name = name + new /obj/item/assembly/prox_sensor(Tsec) + + if(prob(50)) + drop_part(robot_arm, Tsec) + + do_sparks(3, TRUE, src) + for(var/IS = 0 to 4) + drop_part(baton_type, Tsec) + new /obj/effect/decal/cleanable/oil(Tsec) + qdel(src) diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index c9ece767a5..56d37f667c 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -379,6 +379,8 @@ icon_state = "helmet_signaler" item_state = "helmet" created_name = "Securitron" //To preserve the name if it's a unique securitron I guess + var/swordamt = 0 //If you're converting it into a grievousbot, how many swords have you attached + var/toyswordamt = 0 //honk /obj/item/bot_assembly/secbot/attackby(obj/item/I, mob/user, params) ..() @@ -441,6 +443,29 @@ S.robot_arm = robot_arm qdel(I) qdel(src) + if(istype(I, /obj/item/wrench)) + to_chat(user, "You adjust [src]'s arm slots to mount extra weapons") + build_step ++ + return + if(istype(I, /obj/item/toy/sword)) + if(toyswordamt < 3 && swordamt <= 0) + if(!user.temporarilyRemoveItemFromInventory(I)) + return + created_name = "General Beepsky" + name = "helmet/signaler/prox sensor/robot arm/toy sword assembly" + icon_state = "grievous_assembly" + to_chat(user, "You superglue [I] onto one of [src]'s arm slots.") + qdel(I) + toyswordamt ++ + else + if(!can_finish_build(I, user)) + return + to_chat(user, "You complete the Securitron!...Something seems a bit wrong with it..?") + var/mob/living/simple_animal/bot/secbot/grievous/toy/S = new(Tsec) + S.name = created_name + S.robot_arm = robot_arm + qdel(I) + qdel(src) else if(istype(I, /obj/item/screwdriver)) //deconstruct cut_overlay("hs_arm") @@ -448,3 +473,35 @@ robot_arm = null to_chat(user, "You remove [dropped_arm] from [src].") build_step-- + if(toyswordamt > 0 || toyswordamt) + icon_state = initial(icon_state) + to_chat(user, "The superglue binding [src]'s toy swords to its chassis snaps!") + for(var/IS in 1 to toyswordamt) + new /obj/item/toy/sword(Tsec) + + if(ASSEMBLY_FIFTH_STEP) + if(istype(I, /obj/item/melee/transforming/energy/sword/saber)) + if(swordamt < 3) + if(!user.temporarilyRemoveItemFromInventory(I)) + return + created_name = "General Beepsky" + name = "helmet/signaler/prox sensor/robot arm/energy sword assembly" + icon_state = "grievous_assembly" + to_chat(user, "You bolt [I] onto one of [src]'s arm slots.") + qdel(I) + swordamt ++ + else + if(!can_finish_build(I, user)) + return + to_chat(user, "You complete the Securitron!...Something seems a bit wrong with it..?") + var/mob/living/simple_animal/bot/secbot/grievous/S = new(Tsec) + S.name = created_name + S.robot_arm = robot_arm + qdel(I) + qdel(src) + else if(istype(I, /obj/item/screwdriver)) //deconstruct + build_step-- + icon_state = initial(icon_state) + to_chat(user, "You unbolt [src]'s energy swords") + for(var/IS in 1 to swordamt) + new /obj/item/melee/transforming/energy/sword/saber(Tsec) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index e8a92dce9e..a3b93236c6 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -26,7 +26,7 @@ var/lastfired = 0 var/shot_delay = 15 var/lasercolor = "" - var/disabled = 0//A holder for if it needs to be disabled, if true it will not seach for targets, shoot at targets, or move, currently only used for lasertag + var/disabled = FALSE //A holder for if it needs to be disabled, if true it will not seach for targets, shoot at targets, or move, currently only used for lasertag var/mob/living/carbon/target @@ -34,11 +34,11 @@ var/threatlevel = 0 var/target_lastloc //Loc of target when arrested. var/last_found //There's a delay - var/declare_arrests = 1 //When making an arrest, should it notify everyone wearing sechuds? - var/idcheck = 1 //If true, arrest people with no IDs - var/weaponscheck = 1 //If true, arrest people for weapons if they don't have access - var/check_records = 1 //Does it check security records? - var/arrest_type = 0 //If true, don't handcuff + var/declare_arrests = TRUE //When making an arrest, should it notify everyone wearing sechuds? + var/idcheck = TRUE //If true, arrest people with no IDs + var/weaponscheck = TRUE //If true, arrest people for weapons if they don't have access + var/check_records = TRUE //Does it check security records? + var/arrest_type = FALSE //If true, don't handcuff var/projectile = /obj/item/projectile/energy/electrode //Holder for projectile type var/shoot_sound = 'sound/weapons/taser.ogg' var/cell_type = /obj/item/stock_parts/cell @@ -199,7 +199,7 @@ Auto Patrol[]"}, to_chat(user, "You short out [src]'s target assessment circuits.") oldtarget_name = user.name audible_message("[src] buzzes oddly!") - declare_arrests = 0 + declare_arrests = FALSE icon_state = "[lasercolor]ed209[on]" set_weapon() @@ -357,7 +357,7 @@ Auto Patrol[]"}, target = C oldtarget_name = C.name speak("Level [threatlevel] infraction alert!") - playsound(loc, pick('sound/voice/ed209_20sec.ogg', 'sound/voice/edplaceholder.ogg'), 50, 0) + playsound(src, pick('sound/voice/ed209_20sec.ogg', 'sound/voice/edplaceholder.ogg'), 50, FALSE) visible_message("[src] points at [C.name]!") mode = BOT_HUNT spawn(0) @@ -447,7 +447,7 @@ Auto Patrol[]"}, return var/obj/item/projectile/A = new projectile (loc) - playsound(loc, shoot_sound, 50, 1) + playsound(src, shoot_sound, 50, TRUE) A.preparePixelProjectile(target, src) A.fire() @@ -538,7 +538,7 @@ Auto Patrol[]"}, shootAt(A) /mob/living/simple_animal/bot/ed209/proc/stun_attack(mob/living/carbon/C) - playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1) + playsound(src, 'sound/weapons/egloves.ogg', 50, TRUE, -1) icon_state = "[lasercolor]ed209-c" spawn(2) icon_state = "[lasercolor]ed209[on]" @@ -558,7 +558,7 @@ Auto Patrol[]"}, /mob/living/simple_animal/bot/ed209/proc/cuff(mob/living/carbon/C) mode = BOT_ARREST - playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) + playsound(src, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2) C.visible_message("[src] is trying to put zipties on [C]!",\ "[src] is trying to put zipties on you!") diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 5249fd5a54..f9330c74eb 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -2,7 +2,7 @@ name = "\improper Securitron" desc = "A little security robot. He looks less than thrilled." icon = 'icons/mob/aibots.dmi' - icon_state = "secbot0" + icon_state = "secbot" density = FALSE anchored = FALSE health = 25 @@ -24,21 +24,21 @@ var/baton_type = /obj/item/melee/baton var/mob/living/carbon/target var/oldtarget_name - var/threatlevel = 0 + var/threatlevel = FALSE var/target_lastloc //Loc of target when arrested. var/last_found //There's a delay - var/declare_arrests = 1 //When making an arrest, should it notify everyone on the security channel? - var/idcheck = 0 //If true, arrest people with no IDs - var/weaponscheck = 0 //If true, arrest people for weapons if they lack access - var/check_records = 1 //Does it check security records? - var/arrest_type = 0 //If true, don't handcuff + var/declare_arrests = TRUE //When making an arrest, should it notify everyone on the security channel? + var/idcheck = FALSE //If true, arrest people with no IDs + var/weaponscheck = FALSE //If true, arrest people for weapons if they lack access + var/check_records = TRUE //Does it check security records? + var/arrest_type = FALSE //If true, don't handcuff /mob/living/simple_animal/bot/secbot/beepsky name = "Officer Beep O'sky" desc = "It's Officer Beep O'sky! Powered by a potato and a shot of whiskey." - idcheck = 0 - weaponscheck = 0 - auto_patrol = 1 + idcheck = FALSE + weaponscheck = FALSE + auto_patrol = TRUE /mob/living/simple_animal/bot/secbot/beepsky/jr name = "Officer Pipsqueak" @@ -65,7 +65,7 @@ /mob/living/simple_animal/bot/secbot/Initialize() . = ..() - icon_state = "secbot[on]" + update_icon() var/datum/job/detective/J = new/datum/job/detective access_card.access += J.get_access() prev_access = access_card.access @@ -74,13 +74,15 @@ var/datum/atom_hud/secsensor = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] secsensor.add_hud_to(src) -/mob/living/simple_animal/bot/secbot/turn_on() +/mob/living/simple_animal/bot/secbot/update_icon() + if(mode == BOT_HUNT) + icon_state = "[initial(icon_state)]-c" + return ..() - icon_state = "secbot[on]" /mob/living/simple_animal/bot/secbot/turn_off() ..() - icon_state = "secbot[on]" + mode = BOT_IDLE /mob/living/simple_animal/bot/secbot/bot_reset() ..() @@ -167,9 +169,14 @@ Auto Patrol: []"}, final = final|JUDGE_EMAGGED return final +/mob/living/simple_animal/bot/secbot/proc/special_retaliate_after_attack(mob/user) //allows special actions to take place after being attacked. + return + /mob/living/simple_animal/bot/secbot/attack_hand(mob/living/carbon/human/H) if((H.a_intent == INTENT_HARM) || (H.a_intent == INTENT_DISARM)) retaliate(H) + if(special_retaliate_after_attack(H)) + return return ..() @@ -179,6 +186,8 @@ Auto Patrol: []"}, return if(!istype(W, /obj/item/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. retaliate(user) + if(special_retaliate_after_attack(user)) + return /mob/living/simple_animal/bot/secbot/emag_act(mob/user) ..() @@ -187,8 +196,8 @@ Auto Patrol: []"}, to_chat(user, "You short out [src]'s target assessment circuits.") oldtarget_name = user.name audible_message("[src] buzzes oddly!") - declare_arrests = 0 - icon_state = "secbot[on]" + declare_arrests = FALSE + update_icon() /mob/living/simple_animal/bot/secbot/bullet_act(obj/item/projectile/Proj) if(istype(Proj , /obj/item/projectile/beam)||istype(Proj, /obj/item/projectile/bullet)) @@ -222,7 +231,7 @@ Auto Patrol: []"}, /mob/living/simple_animal/bot/secbot/proc/cuff(mob/living/carbon/C) mode = BOT_ARREST - playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) + playsound(src, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2) C.visible_message("[src] is trying to put zipties on [C]!",\ "[src] is trying to put zipties on you!") addtimer(CALLBACK(src, .proc/attempt_handcuff, C), 60) @@ -236,14 +245,11 @@ Auto Patrol: []"}, playsound(src, "law", 50, 0) back_to_idle() -/mob/living/simple_animal/bot/secbot/proc/update_onsprite() - icon_state = "secbot[on]" - /mob/living/simple_animal/bot/secbot/proc/stun_attack(mob/living/carbon/C) var/judgement_criteria = judgement_criteria() - playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1) + playsound(src, 'sound/weapons/egloves.ogg', 50, TRUE, -1) icon_state = "secbot-c" - addtimer(CALLBACK(src, .proc/update_onsprite), 2) + addtimer(CALLBACK(src, .proc/update_icon), 2) var/threat = 5 if(ishuman(C)) C.stuttering = 5 @@ -384,7 +390,7 @@ Auto Patrol: []"}, target = C oldtarget_name = C.name speak("Level [threatlevel] infraction alert!") - playsound(loc, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50, 0) + playsound(src, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50, FALSE) visible_message("[src] points at [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, .proc/handle_automated_action) diff --git a/icons/mob/aibots.dmi b/icons/mob/aibots.dmi index 74137e8947e41f15e2369ae69dd2aed211b4acfc..6278563d6d77723351ba1f544be1453dd16bd091 100644 GIT binary patch literal 55414 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 z zEioI!Vz1r2`TC~PtDiQ0TOk$M5VzT46eB4~{;XTsGR)>}&&B1oC{ME{WV9wuz?1g@ zE@RS+W1`kI^e+9f^AJrNh38)MDDHm)L_OpG1w?l+b8wlq@$4#(q-Cxm0Jo|4w+Jtf+}L6a*n>(H~ww)aMb9d1yucT9zFG0F=`4g0cMx56|C% zw3Ad1?bO6O-Hv*Zn5(Q=RvFeCLr>~21O4}ZHH*JXObolGc3tw2$qPyi=#Qdh`#;*U zz`YbdoQ5%ug>cV;RIHM@8%{g1)d5TwGu~9Z@cx2S1QI2TQe-iE5FSv61i{6baFL%= zRqx9nTky2=Z=|QUusCPG9@J%aAuMRhvQI@U8p0o>2p3kq^y%s82@&gRQj`A5{3R3C zxkK@}Z9&VgsAQA}*4r!&mieI7D4LcgW9HukmEUPWQ7T_(tm?6o-33F%24WeKRwR6Q1Naks@KZIGSsRB!-erKv4EiqpT>Mo!@ucUute`9 zBqiC69U3kTzoyHw%m7JXb_tmMeKQoscP$?b6)=o>!~AoU!z^B2UQ))=+SyW6etv#w zd!HY~b9FbN54&oW4i2@Hj#je|n$WtxB!ykvOgv?o#j`}dr+)o`jq~TVie8hNi!2RF z%SbMkX9&&enJ@(<-nQQ!K)TG1y}RO?0~+kMXwXHIn7NjA_!GOjUr(a9cUUesE^w}e^ZaGSv5N`$Ryg4J;1g*&_ z^r8#*50hLL@o}`>G9UEc*b_;1U3p z5&NXu3V$sAJ5^K<`!`&v03WnDt9In1v0ga^9$g1g4<06#Z}!mg@=9ruxTp7}?j3*NUr6!K&GMzm2l-a*6c?}KWl2jLtPbw8N2c*Z&|I~Mz5Ar0}FL=~# z_QdljurQYnc9AE{V$|LoRTgybbIzk@ya+!Ck=2B;PIWE%pO@sf}WD^Z-fYYq{UJ_pg zX`0o3mqh@%*TFOUB5y)vC=}XGxfilfoJDysS@t6p%)%G~7v^vw>-n5H-obqG4<&tC z29sADG|Q5#2K+E%dZ~paMeYBhOY8UU@bH91t&IKorf92(8q#kA367y6O*0T~Y>e1n zj`s_uvZJF{t9{7j{1gb>w-%Oz-e6?@mom=zM(h6|5&eGwN&ABD6BD0!c-*P&GwdmI zg|smV&14IQf%ukd`TYLM>guhAPtQPFfEgQDI=Iu=cN0X@kaGN9#XBeA%28HZsC;=9 z2I2)K6Ib6AHZ_~&mn1-tQ!S6UID_kM6ZZh0u3`HdDz=|`&=fCP{MD`8Bt!$J>AByJ zp*(CMDM)nMos{2X%wLhD>G~7pvw-A_zqcYTE?#kS@p-hPmMAmj&%VAYS;C86QJXn6 z;E%8SM`jzJU+h$3;|#C*XiX@JHXd`GhsQ$h#ful^HXS65Y}UxFnY{vP&|=;$^DF4E zE83_vrV+v_EUiu9UR_k)UFxP!sj_@iI{ZXnl^nr-OJI3)v)mj6w9q|!-W;7-q*mt~ zV`_qsp;NzFkkbt!T9Vfko#R#0U&IpzcfA>!e^UywMK*pIIOF3u2K_zwQkD1Cu<@3 z4W_7mszluCLUzD1nK8&BjsGkVZza(37Quu=F+%oGC;S%`(U;)%mnvIcewLh^`~%FJ zOgua)=k9>)1BvyYELHZ1$aI&q9nT>h>46{HQ_^R%BlEw`&(>(+fjkbbYW$o#QEVy) z&60wULDl2e6a_7A1V&84Id^>ExkUvlhzi??>I0B`TqVOg)+@pb0olI`iy)V|?oj^y z>Jtn~>BI|DN_KSW_Z>cy-wKY!$;Cy(#vnmrXMdqX6{H?e(9mdt85F<`CN_2}E2$Z2 zx023U1f<<+(`cUmDwt+?QNQ~$rN0tGbJ+wrv%7< zgXA5TEgcWZLf!ZC>kLZfYRMJ5XG09H7z5SLm=`C`s&$zw-W!v2DNyt!z-_M1-DRSW z4d(AJ=Y1pHhfuP|I3X*mv>qng-!p_<=$J$K?9Q^t`|K`Xg|kAp!K(Ee`$jH^wckc9 zAJlaQ!K&B=uEn`c0xdSV4^%tDL>+m#w=Jt&T0T;(Ptp;|d8W z_-y?aRB$^Mwl2F$J-Ry+j_KetI39rLH@YTP8&p5vovlADY+yB*YvgGN@M%1d?J$Eq zdv@dZ$jFyi`1@kRzy+p6E+5R|peAO94bFE^yusuH-7UorX39SxFBm_FHaQ7izX`S6 zDXSypcV5@`R(o;F|JBx;*Z`DuFO{^6kd^+U@Xod{ciiIL3`IZsu*CQKLo`ZmA2BiO zh|mtcFwtBX1yF#5*C`y}sr;^`y4t(d?_%)t4XP6do<}Lhu>cT_AR>hzj$Mzjp6W+s zoZYFD)G|f~brJ&x(x2G zC<(ARqKESYZWzxJNpSO$0OjsOoFIjXjO}E*4IRzI(em`^Q+;lEoz?ruJd$xXgc%c2 z-?-GL&8C$nBw$s-7{?+adClFW@-<#WoZ4}%-6Dk{spS`Vh?keh6FZpp%iX*xeQO3CW{W03w4-qjFd;FK2T<14jVl*~a49x;d7ct-WA`YxV$0Iz zcD`$7T}y=;mhWO~FHyagAv20UaN4jsenxgVdClVqUfk0EfmX}QCD^?`H8@ua*0)njn2 zDxnuhU5G3R{)~66;=5w;@W+yuaepA#XOzWTRx5@+6N$t3{NP$h#8nB#T2dMqYwLI@ z8)R<5&`%IojlES|l-rv$(WM>#pcaj%qIC_+{`j$Q zUBf|Zx3gFi4{G*F?N9wz8%nHz+eSNqd5NRC*g2#BL7z_ppl?~pR2HN}9^Xxyh{(7%6g@IE`5Wx+Y0#lkCbYs%`C+j~*p(dXk|yk<|k(li)3GH#IZKa914$_X2ADWo7~lMtC@XE{w`SH=H(nA63$S&1a0MJHrf+C*q8D;_ zp!&$_StOU}TzlErS$5@}aghng-d;9+38{h{E3hGWv?wAnMs>Fq>nKfA4S+Zuyz@D zMbO)S3*nJ-iO7(%`6agB(Tjcs^zH2iRFhzQ`!GI31gmc7O2@~R8Jla%h=@ubJh!eYk< zH?r0%brKVq_IcFG%&Pf`17+57KWw$1CH&1B!h){GCI7{lOHh!GfuUnC zOR;zzdIJn~M6k6q;rifCXzr@`0*6z?%la`FutF2c;zQFi@6OK zl83+g&O7MFHyG6fToGjA?pcdUoLgWxn(>^5gr<0Q@TalKvL zkiC?HvL~#em6c)d5!WEKV_ynU1xJ6`dzG!VGDJk_+=d2L8oiRw$3r&Q+V0a! z*R+r`JiNSbbi`OI4x)WHuC%Eo^4fH~p}IOkZI*;qM%Bu*Ss@dx1mVqwdTkrsz^)GxJy!a@RD?dgir zsT5+#-Y4m`xh{Bx)8!9z1B zy#2(JrsEVV&qJpx7ewEcfq{RCz7^o1$P}VfkPVP(GJho@A;H96LQ6A-SyJn4yKK+= z3Sb@E)(U1K2VaNzIYMp;)D9M9z|WF|CoC1&*w`$_t8#PO%PwNV^Rp8pjHBZiz$+7r zU`_1#TvsB`&*2N6+1TpZDUaTtz+KC zOWSYHWnoBZ?ChQU>^uuE>vum81(%nXd((kcRM5i@omy02r=3`UTB*-j{c2Ef4j@qY z{eK7t+|})Q_96eAV5zo$RL}5Fjc0nlf%d8A=JRV#$g@X@^Ermr7spu4eo?2=IORTl za(6&BBD-4y)n2`M`333ge~!8EhkCbSXcGq~e_EDLkRUfgvSNyof@gGs!DN&LSYBQA zcoGFpRK&>{SiX|}OJ@)W<-W(}YVR}lm;z1h>mR!#e$80(heHF=xEy$@?z}<0QtWs& z|JH|)Yei->kE~t>%qN{Hl^%O5onLQQSb89-^o=3@xXhc-B@u{%KYoZ+&@j<+F|uj@JV69A z8IQd5nbvXX3VzUu^TopD zrqiA>Vzfam#uXi4wG)ZD`>NyZnQ6>af4S>>>m}0up5g7ttd?Iyf7l>;`0kV!pzbHZ zE0Kk8>)~@AdQz1aJlR2{yyT)TQYUE+EEghArH;dOB#pcSTD2vO9@0#Lmp;BH*54$k z^yw5poKk1`G6}B+q9<`yiYeYc@RKE^fbC$*Xe27t0!UMc2QzbD7U^lo?d! z3gKnfaOU45-D;R#gBJjrJSJwLOvD&=zP76QT zx5T%g;KJeMpj}99!kU%D#U$Xko{LsGo!z{LBM5u*^zMPdIfbJRbQxzu!V@q(=+Sk9 zUtM8rX|pH~TETIVNevu<6yZXOy02eJ0NRgiZ_<{Ff&R6ot|27yrE#PPM)P-^wJ*x; zE|kvreq`CA@!PV+i2#tMfDrzc->Gn1n}14FfnDR24PEKjIfn-z?~j(5giK@nbEOnZ?4^>DW;K zJ$!x!Jbfu;aud=L1=o0+=z|Fv#d*f3Vm;$0Pq@$rni(>F^c>LX+yWQSPT3oCP6_Tg zSn4r@+8W8%0;+c~|BJ2nfNCn(+CW25L{N%|fD{oaN*AR=P(&1|QUz(!J17t!G^I%g zktWic^j@Te-g}1tq4ypLkdWjZy!Za=t+(DP!Rh zLFcE0SAP2^)xuowqu6KG=0-Zq5*OeA|*!S=mKfK;J4>vjmI zJ(7TfklzgrNQ&SHJy^|AUr7_P{Xppw<=WH~3Ldq0AQ?KJI7Hg}lx^?$3f(R)M=) z`#}U4zbO6cbU)Mj5>WOMETWvl*kj-WAT{&OU9Se**;*9rjeLbx%pX6O^}%7jvSEqq)2R znw~lg?EtwXy%;vmr7bnq8q4rG742+yZO#kn%C?HA`^v_~Cg`%Q5p?&93kCUtw~RN9 zsD?VMkyw@62am&!AR%DmZH&4TH7Bq1m>+^(_dGcqe3Xpv=8tmqHrt%1aC6m+o|SqC zQgyF>xhGc_KI*a*dai%rwMMhli1XTuFVTZa$)})|w7sk0=A(~G=jJ{Fl(ewru~t%e zS>~6;|FSY!Ej|&H2VY0hWl5YjhgxXH+j{8VNjLL z)J@4rV4l4kCmA|Ol>+Rf1uU*R(w*Z4qkOcFBTLf<*n3fZ55geSp6j_d@BvY1`1pHn zsB-F)qjQ62pYbRMVP8QG%ZpkvmCH|wdx(UC^CB%kQhd_TvLK`N{zTig-q<$^3ayb~ zoTXYVU}K&zehG5E<`2}jSeWpkcJZ{q+ZMP(c*8vaktKjQ*x6aNt8Z5x4yA%qnIzq& z_v2qtcvC@pN@%?=^7wbeH(7!3Mg9zrvuNDygW-|=#}8W}z?AlNm4aTxo)KPU6AuJv z^}6oOvVTA5AY2wZtaci+8(XXS3UOg8?eA9%l_(22MD>*^zg#tm0?ds#5PBBhN;Xtx z))yz%A4N2OaI@$#Liy_!I{@xkmZfwUiZ8!a9>D;=8J-pG#BOjcMWabc*<-^GP7KSj z@2ysRt~Gn!X#{3UWY)dr6vIB|2P)X6u+%d&#WSDo{rP$V&?LSu7&oyZJl4*}dZcx@ z>@GMraal+Tanm>glz6LQz-+)n!8%nwLDd zg6X%mP8^A!u~ReVv+l(4Yi8%AGY>it}+yJ#ioStI&?x%dJbjw~zL^ z3qCkyvBXgdW>(=0mDTsuLhI83-eQxq0qeW-s6F1Boiwdv1#;~I9t11x7m*^{W5>yy zA|E{wzn=R}<-xP@%kM-^7+Z(Zl1rg7PYvg=4lKYu+JxtN8+Hsqu_V6`>(Vll-#6+2 z!d`*@!dYy2gaY*F5xa?I+Z*jrNHDFp1u*+#i>YO#3h^>W7{Y8ELaKp|io!c08ZXJ$ z_>lRM5e9WD2r(IfqMb-IV2?g|k#B+>j%wTzAFVgMs%Y88D=jsNbCG4mkL#Yf! zLZ2c8{G!7dg=i-sf>?4WP`by5udk*GGHjV!b4t~}90$*ev#V@~p z6VYS((#(t<;7g}xDlG0Ig8TvV)dE&aM2iI-URmu-j%l4L-iQm*Z-=+|RK5~agIz5) znmbq;8(F~rU)$I83h4v3&na?sv;+C4Skmv(4?}a7Bhcv&d{EVQzaGywYe>;_Qt%cU zmU`KX9lVp43NQXxDotWP02rY~^7VFL?;UQ|-o8FTvtAm|IvZ=eyv)Cl#}aL@ym!A4 zDWImWb!soxBlkI2K3$X^-WIKNsDX>LAtw)b_oTd!xshaHGvFJ*7M(GWUFAL*1Cs)C zofvbHh=bP0$9^rIiTOWR{u7?LGr`|AhC#TAr)CCe*GUAnjhX#fA~|6KU&QjZ*%Lm( zoqK(ixX*IcqSdJ+1OxA#2Tq4u;U;4sP+uG_wPPb?w|O0mrUMym?AyjS5?G(hoiG45 zW0*K(iXWw9tabsm)4%S}%hV(^ZA5;ku}|)h(kR}FUp$^sSe}O#ZQNm@+_B~S6KEL0 zyut~CdI#k;um0B(Ya;;RzpUPPs{GsWBKz2s`Kl;|c+ECO@IYgr9Sr4BD-v1neY(L4 z^QwH~%c$?lv;U@Dp4uO>x#`IH$jAAsj`DA9Wk93{lvQuR7J%Y0-g5CR7QaPV7iVn} zPii99S%Hq=@A_RjZ5X$*n(M;MmD(kS*2m+Prb1*fu57@n_~>eF*Y_;1re2j_ST5gH zLdGKQ69S@GzoC8Q8E_RCO7(`Tj^aPbrT{;^O_~JoF<{A!xl~0xx0;;jhnGMAUVY&z zy0ledcK&hcbG5R7bLndrcV_lbkA=g(8*a)2kp}+vwUH`a(Tb9PGE$PN36{n}n}J)drHlhV|maZ!pl`pd(R2+T^n6 zMk5E#N2&Xvb=}y5@cRzPivx%qGS6`E`O#E)($JK#B37<6?ZLBaL1`Z-DesSwR9SEj zXWBrX35%p7hSNpWRKJ7Ae>)XOAG}5xPjTFC$;*_dVqpA+bh$Sy#6f%4V(3AFp#L+G z7nW8nP2cU$)8(~)^POU4RIKsBC(}4$Lq(1|aEGVH3vDrn*pZitI>PjN>-c*$yX z1a3Qf0|_E{10aH=Pm2&#EW%*?jKNFmp5R5|k3>??_Z^cawe>T3GN-=7x4#Pg4kB&M zfg3*+55be18b`hZxpP1Wju&62arUW%UtEbV0fg@9LhNZ6|Ar%CzW9$=khg3Q{HK`9 z$#=PnNdAdGS`>frjZP~^dx1l?WM&I~J@+Ti+bKXMo%5{^p{JcQW7)M|)(@gj*STe0 zi8Oo46WwS@?=Gnii&CbdQ-x6Jf4HN}JRMoPbKUrZC5bTXC?o^TL$=p^o#S>}4-w|* z-50iPe@ey!ny)!^eMZT3-=2#Q8i9x=)2Y6g*24)&^V%0=a(I0<7H z?Gs9EpH3fJd-^;gxv_7)Pc>}GY56oUVZ^ej(j8q1{^a>OkX9E6@(d3Nx!K;?sW7HD z6(nDi=orb66cL2iD<=jWPUA5?O`4&^s+jr-qO1<8+6IfaO<{n={}c%N^q~S|fN{`J z?aOVz&?f+`N<5J7bD1)9>9Yf@wd#Io*2U^r1`I!G0%I#?fmZy@rfZX`*zan>l0*R@ zg3qw-`*%KlRuE-#GacnzYm{?74VF*e7ZiBo#^#Mcc|C@^?(x?H$_*c+F_V)MD!Xh& zTzVf_-lhh87yUrj({S&Z#35UOS!yN%>*$g5-Iz$w3tx~CexKzJHV+#tlX=<=b?o%5 zX7*irEQ6HW^B~aODYe76f|{o`AWLf!_&|3Gm1B3Nb_2?0&zp*`cBzc}yfFPwjfN?+9*H|~BL zet3f}7WecYc&A|ye|$BRt$8^8m^}q_Mc><8n1qM7_ zb01vuH#)j8Jkt$rdyH}@6My;|ZP-w6f?JXV#mUb{oV&JJbc25f0T!$gKrp0KSIkWX zP;wwhd$20_6(vvHmXEJmk6Z49gQ(WG%(lS9mHqjy^!mDEa*)wxBse2~B2ulVxdT}X z9r+}QIZxe1GYQ(aGVLB9d;+4U5WYcY8;g;auZ>%%vK9nx2i;y@I?1EXQb~BkPU7Ia z>3>)%;C%D;Ys>9$OIz!}Ve7xM+1redhhVeVf8^kXkmXr48xIC`bqLRzL7V^%f zU~eiLR#$1bm!Wm@PthN_J?%V8O&~EI)z{KMUgKK?F_h)eQQ?nbkQkHCoDdG7o_^CG zq=`uH#`WhyXDLwWjRlMKl#SoWxi76Xb|$?=>ur4c%a@?d>rXmaA7o}m$1(KmkC9|%tf*THy<4>GRMs& zZd7eIJ;y1EUwhiTc@E-`=dz!CuU_|i@BYQe^CijC+BQd}2?hhRwpY6i9(|d63w-OVzQnLcsgO*r)ebT#EmE_sUm7C1bqmLRyD^ENxsIbImfVTl|Tm#XLFbf%sU7eBudZS?h! z0ZFKxH(XTRx#qCQOl~ga`6MLcJ5*rNZcTLLw?&EhEnk4gQq$IxJxK6A*-MrA*lJ`l zbN$is-rk<$8t0w^lS-Kn#ANl>S%`1c4Z`axBGBZ%*`V(OGVSJRDhc1DjYGCDe+#{S z_sz-=qQVt@76s#fuE;~?jD=pO|JlrV_iUG4NJyRML!E|NYVC;lOCX_92-;u6;*)c8 z+>==Yic=|GUZtM?{@wAXJciYZigbzHY!oiMitysF+9hv>d)3xuLgaQ*^D6E96`tBXSFqn*XG`ut06x zm{Op67cN_LIW9LgdP&$`l0;-e;H}}&vOO>phl^Tzyu4b*Gv*3~g06E$F1L^Px$aQV zr#w_v=IApdBbgM^UnRC)Kr!{42rqvBs@%|u z=9OYMYK2T=+NgQCjk&R1L@z=4b7BI=Cm2eLTwGa^-S4qY zQjV&GZOp`q?>Y}LZ|4Y)vrgns>uUs1=*G16}@ zosZrNdo{+kVO&37b`#Y1KKwT|z@Cds2z=N9HKM1BUUj{y`H+&)3hW;AafYS16ue_h z1Ja*S0U2a{VKDH{WRcLCptws`!qW*l-y|=dB(*Z4*?#VVMV_}kZ^t#XqZ9u|sy)uE zRn_5QdJs%Jpl) z~z)}*CCE%4nA9W<~6SMF=9B*PTC#Mk^}g2)W#>R z_Y24N0Ncbxmwa(Qot|K#WCtTFeQbcWYEqRb=3SCs3?zBZ^rj-}^z=EIqV(lt$(93E z0%Mv};4Z5;$FI#lmdoaR1dEsGwHz-eq4)$Z$Tc860byEs`DmpbYIo+P%eV2A)LoMq z;%nC&>&o{;)6&vF<&kE0SXhE88edbtRq5CjbYt}gy7SN5xbJenb zS>PC{j69%N=$aZz{gq{Nu8yKg!?NCZr{Tp5tTL?PISvJtasd}t5{oY0uK$Jn%Sn1m zXyMIH$#^;{BY8;5YEoj6i$n;f`F^zcPR)W-{D8t?-IhqO`&s|SK&(%0US4o2ulx7V z0ED_Djt7w{HL+DB&gwtv(ENbvzKAc-J?p1yB};2-9j$WU4d71FzOIys-hZ&)oZ?RCk6J83t3tDwAG zznAz?LNNTQ8;P&~Eer#?Eqy{#Mt9?t9f8f`I@QgeQNk&iY_@PC&yY^t2iqfl(6AzB zCH74KeoWtzSsq@>v9tczdodT2gB{G!`c~7AeOvHPK0>$q?lzQtqQASAz1iTUb2=m< z7VGuB{70z%WHuH%qpsj)>QJ_w>hNCQgN(hW@yNT^8g7`{-s71 zR%#44+q}xe&u`kwzhEoWXl8U=8Z08db~*iWhxqREGmz``4fKM%$C^I)b38XGKODh~PEU8Y^gGa}JdF_IjEMHw)3`a9+F>Lh z>iwAs2t`x{gkq%3X%}N3>a^|W2Yu7%`eZA{f#%k!_90LPtn~YkG!C5m1bns5!DwAJ zt-JcjW*VV2PrWbQs03`4le#=HKKRu-fJ$r*8k*aCPf{in2(twOKC;PGlxa(Ti+33Q zVoLkUKW`joKHUdVLl}Kbs5q}s&)OB1X8Kt!5z{a;R+sggx@RJ=Ei|2QuhYo++J1^j zR>diWxpzSrgUE~X^YgT`Q&}|{lvm9)0hDu=x#IduoEVKR1ynxQf zZm_&{rzvXh+4YQlj6E5>x;b#)ih|v9Ja!1yGh5NNwibgrlf)DZQW$;yHhwUf;BipF zml*$QZ%++e@CW`;jMzMMr@Ue&?ZSItEcKUk>N(;s`NaUk*x9^Qo0zC{_|N%7M#j|F z2`0uW)WKcDIYe25FhHH-!X67L7Hy+G3DC$<0gnYG#IZRF-vo{?d)33mK03R(Bp<8Hwb z1$`I$a*$s82LNR&--Gx1d~gR+4PGa}0)9Aw=5H6dkB2WkRlq>2v6_T|1L+07Q@4BH zhunnY=kMO7Rnz}4JJYe`!um6@B9{!*7)c=pb4$IqVC&wy*T2Fd2&fHcy3XvrdXBRB zPMqB%j@z3jKpv+aq?L^ooheE9AGfT9^kcjLL2>4CKQyPKjR*-eeL3i#rH$Z{8C zC+d!_@y>eqT-BjkIcnE&`+U#P>oqV}aD@O)tdVwxUM-a$Y7Ph1PoD{oBmGzq@}A48 z(GYa4-jkN|_Vi^Ea8u*~a?p_#&lr<4V2XT_xY_$ZUx4`33?xcWc^vZhn=BNz6BSqq zvjAMk^(T;D<|A1aqhZq`^cf5`S)(H#(%@{sOy@?gekeq@;ycEktBb#$~z$z7$u*WQj@ z$)1M`Fv^!kmbQzE`yciVFS(pZ{Q?+bMrPXC$!RHYm+`-Qq(aln2v~_(8qWCb|6*@X zUP7Nsdl=r{!xqb$Ih~zCYNXw&vGYB}_)E>V_$7WNskxxZREIMTuc4M zL{_S+9QBmT>QSz8>e3*Fw(K~Wq9X(9GoB}ch&}M++HY{60)9%*sS8n`2|7ffULWjq z<+Av+CnNV)wBPO5TXVzqLn?iyMibk#iyu4|3kKG#_EQImL8V*1TJZ`!;t3t?r0U}J zZqz-RFY0d(uZ4Vm!XN8&vdCN?)HqI`9h4i!mZe>*Po|@QMO{q%!2Hz4pM3j%KkEC! z6vdyF-8{zEVe~@~xbR5BqaWu}^#`Jj61B5n!HW-W|j_39aD-OLIH>oTkGHQ&|c=DH;&*2tEl%X2pGT~ z39sKZxTEW5;B)oYk*QpOmhWD;0=uML`XWkK`cuJ9aWn~DkWr&qz7uqXR6V`C)M&1; z5(9PYjFlDGZ^G?Q)&%5EBWS0v=LGc|XJzDy`;W=#fA#}W)NfQ&YWfo0&zFJ%*tXcI zRaz<;8ff*9siF+BOSa5Fy(q4P$nxnG31yvMFudgq@FKVJrj*SP5WP3d&*Kc1qIb{H zeYdxiYQ5uXHMCmG3LA48y0TPSjRYtu>DvDaajG^r^A%mrd12>^94Mq_aFcHU(dy_< ztRd=5Gl3GuOgsyk^ifnYdrVapZ0o*}$h-uSygY1crLyQ8IiU{b9PTA}?+4~o7U1Kn z-Hin&?Ll$~)wI_ZnoKO}inzMvF!aMsSzsCQYR=VYLo&kJfG(DJL>S8^pXo6q+Hl8l;8DB55CiN8?c3DDonUR z9*rraQ$wF;+yU}O=;RTmCdi>j`nA7dXN@UKJr1dz-54+2`08P_&L_a5>~y+Bm-Np& z>T~o3{G-wPdgrgdl%=%Z0rPf|ZtMJ8L%UPicYQE6w6zL|4mdSqOF|aCdS4FUL>RV9 z(#EzZxio&>9Rt7&pik6+&q{Roeu+Y#1bIo+%w)&^68u0;_l%q-)8{vInX4t;*bNH3 z!@wNyt=ULmG4pKAbN{WY9ejFevZ@lc0#p>hDCEUzA5m{&tk+1a3dKX^;j*gJYy5%XH}zjTe;J7xm!e(XC_(C6)n zWE6mFd6ZH5W_+9ck|A0@8OuJ3Lyg_pbD)S27aF~Ye)Fihl!2HRc&842H5zkd4GsqS z1^D)M=%u&}@IT;-w6(stVBkecZt=?8Jg3<)XQylA*=)}7zZ)M$Pk(K@9kp#a z=h?^moBxoN_c^uiK+u#+B2k8QcJ}LX&kpg_$C?IKs9h44hh%Zw#L#df}WK%;u_p^(s+^9sU~hs5md!=%Wy z#p0Vr7a=ZL+3er=#x)+BnVY*>e~_FZh(n#(V%|OakrFT_C<7G|3J$ds00QS`V?c>l5@AqN{{Y(~X``HsCp%3@x`?=M({=k4=(CeUAK>*;T(#WnY%0qZQU6fPQ zDa>Xv8QuAZY=G`zbDSnXr*?$SXyEQk8<>5(`%9AljiPTmar>RW#e9a`?Z;z^_XYJ{ zh^W4O7yhh%3p=#jk({3#7nk#osp^w98XM)WYhS9+jTnCu$B*$Xf`|3_;MZgBfpp5< zgaH~%|LH++A`!X1tJK^Ur~qX#l*sqxyeO`%6_?cOLsUD0OPK@#I7x~yh$#(zkEa>W87i@>cS83 za8ZCes1-*LOkx@VJlEu+t{ay!`>#4=2dJ2Y3e&CkW?kuHpMY2CC#H9_L&D4M#X{ztse-}@frz*dH>JX_Iardy-RF3o^Uq~DgBQ~T`S-#-QnX1V7K$?iZ_U)|zF zZP4QwPUKO(=B07RO_aHLx#^aQVyu&e6Xx4Be+PKyPrU)XIS9=jXug^6i|<5AM6t8) zz%EogzW+xkvz5}((o<{T^~x)ZxmF81_sJo@?P{--8DNAMVy-L`b~u8V3+Ow2*( zYKu1mquhJ!k}9H&Y8l0GPtxNt_LiW(ZMc;7&GG1m095E$W2cFacXY%rxf)vQ`fhG6 z*h>=yXL)N+3Sn#;qORQ>I%Ihz>RWM@8lDG@N1x+=3%$V< zxaDJ|0!H%KI)3JLGB*JbA}oYy*c@H>t>O_or<%IHocX%+>+G=Qm&U9BMgBuL+Sz7R z*XXv9K}+n-@2cZx#SNr2mWlD{F7y&4nwb+~^(_SUPH)5!fNF{?=b_GM%m-8W0G!k< z9jBzK>Z{+Sp*cax!Xj_5;Erx@e?#)-v*v^NR!30Pn%yOBx+P*F%TwepZ{)dai z_{>DU5Q6t$Ybd_%(``B{e2N1;EQ}m*b6={~O0Pey0;rC|RR^D;7#LP+0~w;2TGaUM z8{v%`j}sM30<8_D8q(`PL4f)%CeR%*1%OQ-DNVx&t*8-~8r_N-|KO zWN>^}xwhd(oSuW3w>if_PIejeY+q{&I2FZhJFzQxheZWdW}6H3o%6y05P)CmEn+FR z`4RQzuLN%B=Ko5rLS|}-Tfdttr+)9}7rDwv^Z;B_s%a2+qV%2M!4sZQbH~#9Q@eC= zFbF9mL=X0s1j6~(ud<9S2Hv+%tFE3*mjqUCaSfGw)7tlIy=*cUuEzsLX)RC|4y!5JTdAV7uPXAmd zNiA-eHg9_Ig20rek3(9zcp$E%{uI6fWTi60U0wjk^(3uyMc$#KlyOnI1(FTA?ILb? z7m^Cg-GRST8IQjm_3Gh~+jwv1Bo63!DhApcmBb`OJi3+NW4X0w`_BTvxWVE@Bgjro z$8fr=k`%bu(XH@b8?dO&y#KbLkR*9FKj9PlMDW%vUfs%Wb4N#u9gF=z(-F6+O?VrS zbWAB#e~7Cb#N@L zKquCR122gjhtT|dhMW8!7n{ElPlstB;9?0^@Im{b`Q5AqVJ4T z-l<=_G^6;}C|jw|h4bJqDCe<(>4}yW<*i5&Ekdgm2~JTl08AsKFLqoxWefB3Ss#n_ z*y^dN!H?+UYJn{5wKD-WeNHD&8PcR6|GE+6~iP>_nf3XLYka?ffc=- zV0>}0mF!;OzBZBHM5UAxVjie5w7f}bP+n#9zm=5HzD@#>_kyhKBMC{)AAqyGp_ z@SR!-(dl{ge&_rK;?5}(z3Vn9`tx%)02Gwnv2!fVtbJJA`QM+_Ppgo7m23Vd&;ENa zkz$JE2XgwS{&zT)OYPvoNg_7TF@3xL6*h6&Sy&{4$UF_8JZ3k%`de$Z8O?gz8oO02 z>;-`VdL{K13^?&to;Gss0A7LrK_WCz4}FjP|1=JOCT@(M1vUNySeS$UwfNsZ|D!3v zua=#F`Q#s(3GQOG_!jpMt9;f3cX(704P$XO9i~kiq$~%l&S0pE2D#G>5`RvnyTv#-t#K@9v4`!vQ zj+JdY!3($tMlG2hT`A!Y;Y1;e2+&Hon1O)-VB{<3w)ORiek354z4U7VF)rq)Yb=({q8%g;g!lxxS zNxJ8+A3A$M*oF{Z8(@n;#%M~G$av)-!tdr%$r*HD5eFM<>x{QID8F&|5%^I8XWy0M zn+Z?{2*lFU+MUbnCQS6k!3-Xsieh>I`uwDK%f|ANX!X~=Ytq69q{{+1*)5{Q@XHE2 zYX~N{S=`!J(4_Nw1YPsk>3q1P&shqrrbfg-oCzc?Ej?UVwCT(hBB;ko+-j8e_6Bg^ z9dJI{D=#VWm=$eVMroh+C6yZzR zA+4yPA@=N@S95kCl_`kG@#Q=e7aktYVJD|{_@2gDTG|cjzLY)23K|*re~~Lxt$Lp! zj0oVOfUx8znH7M9OX(x#yOC$Rcv#4GKXH(}U}17)d|$}kXYa))j=mp_eGRR?<>Pi2 zJqh-Qr-~zXo?w}_wiKtU`i!xLVi#`d?1S5VNXWs(&Z!5Dz_y1weN|)Q(d3ql+9BaD zf0?QAS1~O{4NDVKV?fm7s3(!DhG8i8AbuuD*Y>>MX5J7nf$~AI%6a}3N&a905i2a= zg~~f>8K%IXLx{V0ANkX&KQ9JEF3>M!9^`_UzQtbK(9PDTfwK_ZY*|wCb?UZ#ulmQ5 z`*!zZ5=-ap?%Py|>-7~CEQHNqJ!si3HPhfL44f}@sN*nYfrxLw^SYDWq z#mU-5{n=&GFL4|m^2#uj;gVcH6mA(BPCBAeH5&}0e-$A2^oiL|w$DXeQw<<*3>;BCYkxslTM>T0vI2cyKFnyXP|TK5 zu$3J>%fjMYwLoHVYG_m3J}#+QRG<(31T)yKSHnAY8pm(J+p>G(?ls?mUDy@u#qs;H z3_86ovco=yzdo#J3;IxD=l|}6w*>aD2>g+RiGg(rY8r1n964PQkG3BN|6URYtWfz2 zvArh7mUPzAP0N*vvze}P(wjFIo!2^q$4IVSivl+4&d){1$|3~P!$JAlzF^!@Bxo*+ zOQXFKMIK2*BU)$`iK|>S)f#-dFrhX0tL@?9%JH$**6u{jGgbN246_Keo?zn9`(-dR9um;R zmL&|nOQOm|^U_Gu?0z1+laHiZ*VqJovIHPkb|Lndt7={$*RHiy(MhH?g(sgr$&3+I zv~}E(&R6y=N`j3a5Ml*;-Xn@oHG7xN)!tAY)Qvr{#o5aV1tZM%B(Gr}LJn<`<*fqb z>?V4p$*!{104#`-4Ah<0K0ZJ4^TUFl=z647_}UD%6a5}Bk1p;!Uf0tx{qI$!XX}WRriv+q8g?M)qm54<|EYeu1BC@qSmv7&jX3r9 z8dne3Dgicn4f1$I-XWM>DZcK_{Z&sCgVt?5^g{P=a&U6(8U4!p2bW9ng|jVNTA6aY z;T3}_Dx(M?;J}h{I4!MwSgYA5D*i?d2_lEIlY)T3rklrQ0 z6(06stR0xD?gA&ZnXBojKA1HDB6604Aagv-UbcA&f;PWu&v5RaIt#7L-Fvm+C2wOm z#9SJGODS(dGrW87uE|aLW_s#Pb+fqlh>FvC1m5S9(f4!NH~eJ+!UljWad2D@ypdTy z+9V8QTnYRxFWcJQI_-886lL%UxNyRx2nCw);2A6@`4eegh(AAC$r%DHlWUu*SIB+K zdiLN4fbFDW_mOyQsLyA=mr8e7#m9&=0JV6j88BdwrX?s-{hNhXQ}a2EL9NVE0GZYq zi>PBWPtmJ~e;GEJMF7%k`F0%w53b`%weu!$l>i%sU3*U>M@iSZn&D|_!oVy<(#^a< za>c3xhJX!VQ_k|d(bT+kMeD;uLS|DW)&7GsH$MF$76fuaU9V4Oxy$PR^f8x)#Rkuv{^XnRCG^irRIStj}PZ=>eC-CDX7v*p^2 z#81AJNKoY(u@y@IgoYl&_K&PLsITur4*`w0YeCwk6ec+n1=7xL{ zK$?c4@&pR5OvI~8-)g7b*0U=qHU)-oM%o5$D<-qYlsj+!`N}f6x zFvuSs3LflVN&um5H^c8WoOm!;@3>=booS%{Z#Mu|zsN_j+DstFC}|1xQMeh#%*&KM z*g7$VFed3v7I`qS^-Iv?`ebj~{KCv&LcLzv{xIb1bZWZAi2v(9eP@=lMYPjy6VZEze?!0e~a`KbFTS9{r0+9WW%D+WhqF7}WF%t*Ck-!8G zI5~lY(bctc5BBZ9*1a=?VhO0Jsdck^1_qvcxt;=zx{t%KJJ7CHDO3muGtX0)yM#zL z4>%FY6;iG~A4kS7(skZTHkzB(5E$h8nt^=rq9uvL{+G-BE@kHB9CxHxor#3S&}zA7 zwiiB_J(M<-fangLwDH5#67Trc7PgDazN%--0WuHBZ~1}a1Tik9yq^1?<{Sq(MdO$!O+;9 zl5m8GL*PV#zK_z}Jkc7T*WM{ff<%qWul0PEQal>I2eNXI;nprD?)N#_PBk9MkdxV% z0}-TnY(H+^Jk-e$e>DWgOZxUX_|E5DoBM#CO<}iV-acg!wxts??=N+~yvi8Y(?if- z0xR-lnqcvKIHhsH8)o+*M6P~sHHtX*)XqsAM!W)+yOA;#5S8b!*jD~NpI;j|!uuN` z*A0J=eoUI{u4M}J_%RJ}{I6e!BsnUn=JET$!PRoS!+m{ZUt7ocB_r_*M05=_G}nl4 z68@?C_}0jg3w$&3LD51`E_rMk7gzHJVnYG*4paXduwD}@RDn(YxHJ5q^EaS_uxIxX zMH66$MzhO(YZB81NfR7@gVCk;iRI3-eA$!Lm`;ecgv|c_*X^5Lc0)geDNfNUN#^5a z9W8#Z;eHpVHL)eKw<((^i}dJgluIqD_mD|X&2BDwkh}ssc!2<_m^-Gyv+NDPFQVG)o1k@G;&-w&(jt&-A1yw=7w`wPH&x(AD*trES(iHO9p0V zZ_piVsD#xVi3M&+H_~}});wmh@Wzkgs*i{dQuJp1Oc#RGGX*3t_sy`~Z!t{AH-V zo(DWx8$BLsYKDvYmG1zw^4l$vHyDdlI=WUpY>bl4=W#EM7wbH>DG9DmAD-6kO~jg8 z?fxa59z_`F2lH}nUTmaV06uX!!4V7Fsr@V=$`$#A(^lAPOKO)Y&JW2lv7j!Gv<060 zFEbaAYTR;1Xn=U-U)Md|F^u8He4kQN6G&1`q`rLkf4%@({h>>0c6S>!>xN1`F2xrh ztYQxU!R>#-TI8)Z>%1>MGulqK$m>@HG2B(I^Zr@bqLs&}8ZBDi z(r$WkrX&6cmL?M47YD@-NE{3E^D*Z_kB{!b?haLKXJE(W2zN-EA%@d8McOT*r36!Of~3e{QfGy6dlp>@-F74c=Q&Y$%StF zTj@1hHzgO9>=As?!gt&=d3=-)N*Z(RinJ5z5{H zyz*=L9whKT%owI8Z=j(aTtBAvJ{X=+!00Vop|txlu*KEQkt|KQSPaQxgahUSFoH|7}8GpiA(;rJ{+Gwu9 zv#}c5$~mS}ZtifY=i5;Cp6kFEQc>e5doshUZZ;tXvPZ*rVI)QOr+%?3;q7kEH9<>JJ))kK{@(%=e2I0sYOTHch~?TFFMgj zGuu%4lZoPEdLi?us3@b)3>w(rudKH7bra)lpMtAN6bc-;4YhX)1|#!*?2Mx3(bjW; zvoAFfn$mpY19t`h$H*t(Jrrke$c6ltnDWK71k{K1g6$96EIf_fR|@ye%vJICR`wo2 z>1Cl(ZpOfY(U#nQ-20RI-qC3~MkE^C+`KOF2GbgKp8xAMJpR>>EjCD}n8 z)DsssLVp|QIB+BOvr0Pm{QVPP1sZXUon?g^ph9u*>|R%SiqOovj;Ds2L&bDySF9vJ z3K|Eti2fWE!DEESHqQ3Ct|ymKd$ZwfgYf?P>4-^6z~&REL|Z5`RwNDqc8n1AcgW|U zAkbVoMQ76CY?X}?!qDqfv)Xnh<4a^&!XHU{Z})45PN75WkoA6?~!mPH|Dxe&j@lS5Daz$Bb zP7Es#DM%N^mmhHHXFJ&4XdWk;C9=WDrC7A3$L9zEe9hhQ1KPFV46WXmcSgND z^Z1@TxDH_Xw+vEo@;+$af%~6;w6nd%V-_7$B@DM>*X-3=SCG4}lMzVGMre_lLq#O>_#IoG+a?^PoWlB5OWx?Jc-P3ZAc zb~9k5AA|7(v#Zqr*)jq6uOInYMc?KNrRs=+@aM8A=!^{*GN4Yc_TljxU7Gqyl7cyS zZRcaTumKj(+uKUd%oFB5%j8r{n3zSUDBfzA^OG( zn}kpr`+0}|xAVXWrmO~ey?q+q7W*jighXY})o&Z$?2dyM8zY1jHVT)*Z@-;=L?4q! zj{Z~(4e~cOc&RAwRs!0;)6z#Uw7AbXYBBfKX0Z#^fjuxXXC;V=TFE(-yX21N5c67k&riYvtTL{i=kVJ-) zYIYnu@qHe37qL}!(P6Kg!AZRS1gc#-N!UB<{bMKo$;b@^K(D06pOs%172*6*x$q-Q zHW$~e&8@AM5(@FktJ_P-KRt@V*@e?Sv;+`|Hy1_Z6ZO3K(4HE{)UjFMGehe~h%8Pd+R(%F!n82@z4 z5aZ~F9ycNCjR48zRVun=_AL*EjAhG9N+CTB|m)=x7R7{IFhhN3w*kT5yu zFs2Xn{^o$*+$~3O6(Sro2*IGb#`s-|&d^h`2BYJ21* zfN3G0H%IL<4KknEefB9#7+ATrj-{S|ES4!VRV-$s9ZRt-|0(dOCKGY~Z)%qh4Djsm zDOi&NoVTE`MI{v*#%aWYs%PZwKWu$Jimph&JwsL#0CA1*qrHUfeY}ACdgb)EFQWAY zJDH^juxIbEyW?c?y>9I6Iq@$8<;`08%fx<~0IAQIl=Mg9kV%P)E8W0=h^AgybYx6j z0H*eld4NS;s?W*jgB)6X-^$P;3M44_nwOr6|#h7Bmeq}MqX#W z_R2yD@FJ*dm7?x6rP8qDM=P3fzd9j6j&=(&2}^e}8-8q=?(7XIy$yk0C6Q%XDH- z7_52B`52NI+(ey}TOD#A!hM+5+qlE|cF4(*?|CtQE`k_$JF`Itz|fiX`<$}&wKtng zP!@-2X;H_RTwj|cy zx-37^HIYk8r)qOtpE~>?EmN~E_EMg>H8)r^D~g9FvI&vVbm$}1J7U#@3kD8)N1x_P?0>j{IS`%6l>;zBDPnd<@3FIH z%FS<+KMBh?-y_78j+!ko=PqoQl;&PM;Y=0&IpUAoAF^rs7HCO{_AfqzJQmGP%)A_q zc7!8`6)>0}B_B$H$d5v$y$8NDPZzR#eR7X53m)pSXp_w;eUnZx)lT^`AT8P-Ohbgg zETJIyWYm`lAO`>`uud6_{Y$O%JByw1=iSWIPIu7r*1+|xX6WC%ON`~I#Dnk4=f$jS znK2}1TZPZn$#a9CUkncb7aUvr<&<^a=Ir!vT4KP($j)Qv@NDW%+|l7~%@enb)P~cb zZN|antnT3{IBn>O=htty0>}YV`k-TE(CjNrtA&TCipezU>rSN-baX`XClr59k;t;( z#t{Xq5WtwrCfaKSP!*pO3vOB7nqruG@v1~&Z#Gs}l!J^%xQH8dN>(EVnv-*f(?k|~ z3d!b=3bz~lU|sB7*l6}%1mTG1*$FB&)>xwbAK^=v72~_ZMV;awK4 z{Jl=jEKAOMUQqqnm8zESzjrl<##nDrP+58CE0JE6HCF+Mi*LlSH6YO}VXfZTdg+0+ zpID^S4ELM;I)2V#ZrB#G{^An6@Wr|rudqzwKWAs~&MA7gIpc4e?8nXN{^EX+=BvxL zWaS#8HGcwlA7P}F4$A~7x6(<6)?POnnoPG|(XE9!{NUZJ90P(ow;ycLtV8i~j8rq` z$4;dUfyZYjhR}3Hl}l0$W=kufq>_5QsntGyY!uQSx^Hq#|%eg@vEsu%nr`Z1&|;p~%*0TWg zG)!Dvdu<>qY7TJW2N+8`9TZW}J6OtApt^W2;=LWa942g7LMfn{UofmvEII8ki<2P| zh+6$>Lmm0xL7t#os&Vk|i=ELAI}l-uj(1PW`2Dq@UrN6;FaEnSrL+0nY(|v)R}0 zJav%-zLGyyOA^UC7`fJBLDRNrfE(FDmqkVK9sgvKGQYEw)y0_gTlOMs*gy{Au4_%1 zUh$DGV1-f`Kv00+Db;a*Rw&eyKjRL-}P}SXg8X zDgLOXUEQS^EB2|~4-u#w)A{M{7b^;|^7zZfe`du>*m0>k=I3Pqfa+5!=SDh&|I1Y|bR{+ZArhIfsfGvc zl@#;xJ(0548=(W!8_M2tRqISu%THbE?qqJfa0$L~Cf|R&FZi(1%_lXrer{vuy261(YfAE*m6`NSrr-^>-1O%C|NJ{=X(;)EEg%~SN2N-T68Y2e0#Q@gS0m$DjKs_Rix37y)7F+Ph$Ok`f3$A}0{jB1AOGpS7Ts&*>GDL3%N<)- zrbDlotOf9x@c&2Mby;4(FQY)}GY{vZ=BjN`zI8<-aTgoocBag@uvA(61)0?&oO49d z-5;Ahu=fH!zqPj+X7AXcM>dC?FPt3JGaGtOHf!*w35RVmL)`$xv}iSAngnh>&_y*a z%#08@TgXAb=2k+c<$^9QXluTr+c4c4Fz(5rKu$&@l=n4|M3vu_QF;g)<1jjp-LldX z6Bk6kDv4~@Pcosnj(*0-D7e@P?#LtK5FYvo6Ivwus`7=bg?cglXnV;dagh1&knsRL zS>-Pggju<6_|bLySQ(DNnt7^@?PPib`kYxO!ft55D9ykFr3%w`82WkSllh^B!l%QaXc21jXtZF(J;9J};l>cwesdy1i?&OBK*=YG4 zNFzS6A6fX7BR4Lto_S`r(bKN@;s&5x7beqUpUHLU9!j_S8$7S2y^^YcC}dV?aygdl z8JeaXHb!FT=K|}i3sl8Lmy|h_vC4+VT$*b;&kSrxDBTL{*?3hZZ+_cIFh4)@*Q0&q z=-9!{BHpGn3&iWwzjl0hsG751T0DQ0`1_vU9YD*1CF28$LAa^n#GFSk24W|hKRapUqR`}%!lCp*_Ap@q5it|hUhqitdyh<6^{P|rBF4F9Q3)`=D7_S zAiDEYc-&SQS`z&&xxVYnxnTSE_>4D)199&lfw0f-UT@;fFH0DxS~vz{Gr=EEfAt&VeDXliW^TP z@O4i>%IB`XUH#EGmYwzZ!o-ilo|f`Dd6=GBU@YQJ3?Ji_AiaHk#x%z8wtaTJ^UcQ` zGVek|Tc~sbV)My@J94^ye071Q>GsJ0LKpzZoCxCsaQx-2Ei`VJTi@-+Jkp|Nc2u%pv9Jk;@%xv%%M2mz4XJ zphhQp3Npb_dP9@%fA77OnO);i4ss4Gg?6Xctha2*Ra{3tlQE;PU=K=P=NwD@w9(I^ z05vSdJ7v=p9pm1q^_pc*uD2gNQqvTAi2iGYoJ#4fnu1I1WE<$cUAbrCDVDq^y=Zw=2tk?UYaLcr$L_x_|%ukP_}`WiU zktwhXcka;ATbC(}OUiHs{*`H3+-7AzwZ_MTx-jeziO$eHAY_%@ss=TOesM)syGi$=N zZ4`X9Lb}2@mLxOvsq!`JSj?T`oF1m zGv`QrtQqH$&|e2w`BMIG=r(N3P;{IwG~o}}EL#3~b<;G(<>qwTWkV-y&}LU23M2-k z0X&20Gj5k{|EVe0h}0+2X}<*$?`KDRui36!rEK;d3K5|k!bi&U+vPl3__6-kFZqTi zA5QqNbqL6AO2#Or!wsW_d)hGpN}|$9c(%F{B@g^HqxisR!uVF=>(nCG%Zz<| z0Hy2ZXgmqTlA9 z`k3_o%;609I>vH?y{)(R@NB8((NnG)&eIigM4i?oX+ybdBWR4Yg)Um!vKAKHP}Q3I z+p>nR@uAzbp;b5|X~wnbnc?5lJ%LBkb7vg{$ll-1e8g@GVV2e-Bnbql!)?Pt-!Jg- zQ5weRC#XLRnXEsEN^PigQCxL%R$Lpm3Czm!K-5EU_D)QJcew&bLiGxb-)VQ-@arp3 z3NbU$^UyuL$;&LtO3#yI+XACJEGdD*`DZD7{u5YvG!V`xUN5Gdc*NECK356EB_;Ce@ySM!}wzoW%k_cn1BVeSx|uQ zEYpQ$7;RdS10QVcS)Z2g!s2fS78y65nyZ0ezZbr4!a%m}PzKNiD)H)kHrGbGEQl3^ zl+t~hQKH1%mMwf`7k|TTuK|mqd`AZdj3ZBb6s{j8=yJhZ4Jk87h9%lciHnkz_7^gLR*WB?R;K6U3<1B+Up0CJxd9p;4kVw{jV^ooBdI^k`80o^y~IHw ze)Sq>98v-S{Lf~8FK2P!G**)s62NIh2&nA{6u$r6KFXInFbKt;(AM183*n|w(~nfE zYi%A+C&%o8X#%&!s^uGQb4a6tzRE~J&@@Lvd#4-1>{4BLjDrFiNotB)CHA8r=5~vf8BZ}Cf zY5VGn|JedSo#-M~vb(<|7^pyK(%6){a%%5^;1YI9B%oTUE7GP_He=bawylEm!_>Ke zA2XKsYb0>fdsk-^L8lqnMf~zSVZ*!MI$^CEYuOkRCxXiAK)L|7cmiYfhExeMr=b7x zr2~TZvos`&<@d2H(#ITZn~x|W^CmNU>mvvJJF>me4m~28rv>e~G!N#*S{j2FIS+8Y zHxKES-4t3K`Ap>!!cgMmB0!wgb42v%Y9_AJmEF&R((`Iwt)Dn%=WCH7(9J#4whzpr z#kf^mC5;{Ivz8i@|hj*Ckfi{ z4;bQaeN`N^+&JB|TIM#DnVrhsvLlB0&gHeBX6pg}XSboPW|khcP~6VkUa8475fNxT z_|)ONi%hS9!2Hmc<=foMJdjDEEzqf}Rx#5=e&l%NUN3f#Ii|^L=k4z z&o9^I0p}oDQSw z-uQNgt;i9$P2kIo7aXK5*Gx~6JZ4iFO#;`F%XXXXdyMl@u{|K?(v_%*uw8P-QM_8b z5UM32aX<89zkmO$8&aNAle+TScLI@vg!TfKGQ^KOY7X!|J>q_vjY-VL-||I48(uW~-BU8h)k6O45l*vEA~}{H zZ_w+bhvs5M1!!m`io` z;gVom5n`ws@Y`sEao02xPPnkF`{V9?gh9jBF6+m$?Zyv|>#g6vzGAa{MwpS%JxdvX zkd-iXVIhC);xv9S+c;!(-VM!!%>qu-J78lu#wBKN(0&T;=R=pwwn8Ubb~;}^72VpBtaH9c5vfs2Qagp0wg!b@7`d>bWD0B z4NQA+b*t&Yv7`0+aJRif(DlYfaOc3JuY)vLt58t%Op^%I`Q-NEQsPCYiRj;*1b{$y zmz7E{#6C)#w_hTA*l_J{qIC3BV4OMg94+*GO5kCCVqbbp#aBD=;6)N-O|KbvvLlnA z*ZUCHJ9GgWo|uSe2|OWQZ>j_C+d~Hxxg;dX@6qjzgMO2#CSS4X>1oM+)X`DIs)s3Q>H&}biljCwffz3WK-^i9<}Iv)+d|V-XQYv(G;uyI@2UZ zf^gJXK%PC)AGO~rXThJPzRO0id1Cg2?Pf2oU8k=obyS@p^weCumYT67r1gxJAkNBA z3M%dPm}5&j?6|%IaogZ=>B#n%YfYJDsTpK~DNnPN%wH*3skW}vd3*Qu^?^XIg3ng0 zJ5CSq^$xBM4~>kHt;~!pEJP>DuPMQ`)$vIZ5BsUT7RQY2U4j_Baj=lG?fbQL#QfLN zK%liD-5$$&gdRsqnrT#l= zLH>s#fy+$v4S0qaBr|#do;qr8-I}=QIr;MC;Zc=QS zPXP8QJaGCNOG^6N7J-w6AQRgK*}bK`QV^&-K5_B1T34J8BBZhW4DG_7&l|ApQ{#Md zP5G0O3T`Vp5`T1bbPskBbnb5Ude|k1j+)0ljCkLNln{6k)O?_EN{Ugzi*TEu&5DP* z_vIe#54>gAo)`=IfDQ5Eq=hW=y1lg0AD7((Dzz8|LMzsQ-O&TX=E~2{0ixn(ywB#l9jh%e!_9qe(&{a= zO_PHPdyCB|K43mUAf^(gyLWtiobv_-wsl=9tz6uLv~mKuUe`A_i9xouwmA#2V*7cnb06jRzF!N!awP&M zxfE3J9$A>0OZ@~#s=7=Bx=ID)mHfPzQ>*KS40J5X<2}gmGw5dx&OALFXAkuW?Pi8P zdiCH!y5#JX`WS<;{{7l1$>fyldtiWD4Z8B4?i9VMeW!*ftpf=epD>QQ3UcDYB5nzK zB4!@H7>nd3<_=8B1P=~7H#ea*{B)Wf5D8gJx@b?g1dcP%%g-T0vP2|g!J&Vx8qSan zQc5v#zwR3JGE>yToOe(Y6RTU|q25AR@<{zKRq$@S^qe>+QB*WLiwzP%claf}32M)h2EK#=F-{B{BZbEXF_;qe0Ifq(yuVf&-Ocz2Q*3N(5=iNziDMXv%GAw zJ_PJIhRQs_3j4-mv{x(!N26J%+aV1j9Evm`HbcV>Gqr zB%8(_l_g^Dba5qO4UB?hnh#%8H?-=L<}@y4fG^ao236u-N|Ax|WV+csQaL?Q^&{$_ z`k+^@PrKf|%!>wn>JQxD4v)T(zy9HK5Qp&Ns>AaJ*I#X?`Ew2^)W&I5Ha>MMFh6H< z?YM#PH-Vi9bS2-%=HmRmHm1_-Xf$|lic-_^LB+16@G1&Jqd%iOd@#Zwb0$D*hGXAg z9q+HWY2P+;wl`gO4J7U~an~8;daf5^+nd1oN!IiB9Q4Fo;jD|{1v*l>4P7Xf3xol_ zb?X*!+SN~fPb7`dkK|MUGP{>bDh#3N>y6-lX@|kYZj;&#`ZK+J6k+XmfwtBQxca@R zX+iejHZc3d6#lJyLCeHmC&xL(0$A?vF9QMshG$3LW?1nzd;e(V5}2;Hw45epWE8ux zHssCg)Tc+qnh}12dg=V*Om+_YUCMg-y0zMz;n)r#998~VZw*|*t$aZAfb)+P_IwNN z0JE`nfXNbz^>M}j<(x|>^BZ%05O@*u+ZtlCxyB!37(+ez>6{CTjr^N9fU&q z8(=1F#xEGIPlSJMeP_c`j_;JU7~ot3bq!rSuN0S`^)fH#*s4Bpt%krf*{T8gLR|=}#&<5XsoISEAdr&0hHHC_P`1UHVB0ob~ z(V0c0Tb|3c%f++c&2eB0;PWe+at#=4sk|=sLNFkF-#Zw7l6*ZpKa~ggy}6xSHFSnP zL+(s^W{Y|2sL~Ym1Cz?X&n$&e9|hRRoOTJuwmYqlPmT@8Gdgy$xq_^2q)Q_w9Wr0( zSfJGJ^Ah-SJnK;OK7>qnRAw?LDk^Gme~cjbufZ1l`rlCfXf)O!`6x#uAlkft|MCsf z8mwDCZVsora?O2Z+grvL$xcE>-L=|UU{;ZzK`7qZW@SvUAbxg@AS&F(9&(3chx5vf z_$*d$pr7H3)g=D?lmscuvG8!tIas(XiN4X&4xCLi&h>R~!QRJZ233F?cOD|T9|LDx zrJ@Sx=S?Gr151_b@)1^Zbef;ayR*!c;ze}&bK=T&L$6w9S&|@z`5~X&n{Du@9~&;e zw)F(Ie>4k-XxFnILDx2kt7{0FSuUXF4+U(q)Uix64UoOqw!aTXC(rCq^O?*QOXy-% zrjsQU`)0`do8tr@nm2gY91*M)ze@YwN3J6 zPu65$7Yc_lTwPHe?A-^e&z{J)(}hdNh&5(+Ru^gN>&bA2+XTa1%pj`MIbIoxo@_Qf zE74-qEsWlriFH!xb4v0v^9SS~hA(oX!~Z?d{)e{BbGVGkr4N~z8BEM@lt|L=MP$#n z+><15quK4$GpM}ODfpUjCsJo;KAMaT*Qff$~fb2UW;%D>Loz;cg5 zFNw{A57>a)sIIsawfPXJa=vy<(JlV=AN z$*{vs4PAbOI)ix-pC10+ON$AUF;`yX;Q5;QDI@ka+p8srI&?PMt-^`=`(Rf4@ZSZQ zZ+oJ@zHh#ECS+Ig`%Y23lEn@EccQ{}1Xgdd;5f_&ocI$RQD?-N(1f>jng4Vlt3A#Fdt-73CN;E}VS%GjcAq~r1bBe zA}J^$qHePkSwCep*X(aSQ_mJOs?x6o3j`9lPqK{5>Oq0Hg_C=|(HQB@)KrZu((~-r z3&|TIFX?^ci`Rk6nNSCf^E9_}&vVi4N>u7kbtF~^&?pl5@eKrwAVsQqzPV3JS2IB4 zHvH@Qc3F3lm2OVO>I?`jHiQ#%|5o2|=tLW;zl{CPB5!qzn)?`ueXE!P6 z7;1IITgr4_6euG&ul=E;mz0^k0DPF$?d${`9UY%06Tz`VN}V-!CUd-RJA|LT42e(5%vs-g_~y-x!HnImMj(i#0_JK&;w$(GN=RjOzS43(Y1_Uq zDJv^sl#{EOU`%vb#!wFHu4+D8-`HrM=lvt&x%vP=SX_3_4YOh6*aalY+Jh%Q~&-H=HaW@}T^n66o*+w4_Rz zH;lzy+rM!o+5sFh|2ki1>?9Vnk$rxLO_AZ5CXj{h9#757@RjZE%MU4%oPR>{Ml2Es zHW?na3ko&9EGP~{{df)zq|vFDYr-f^1vvv~-MUcctFG zxS>g{9NPXUVsZHggN$zx1G?_S^6#x7K1D@N^;^=hMG+>>@#pKA+(Yh!z;xrG*0ocE zKGuWTYdGkGbtQX(lHpV~t!n7V-`}CyqK%|v)ErTQ@1GkR-(JRyN%t@l{q_y^7^69k zKVK1M1pup1q@@92^J*g}s8#2I7~#2BrlO7Z&72&+>b_qbk)itCG64l##B9GMbaI-S z*a2$J6Sy8ec@}NqnJfrod!8Z+=O+tFy zV*i{Ed{_d$%7UV#XhvHb8n+VcbZ; zVYI6BZ-Zr3F8?N){p?RAY17^crnSWnEtt3NF1*+v8=aWsHO6-R=|h20d*@`#DJM{A z98NnenwEmMYeVffQCDnR04=>!Gj#%CPh?+CoP?7{mHaVZ97nbv{ZAtPn<-(~_?N7p zVIsb;q?>BtomMC08MLKS3w|_JrT2k;t+fRO__?UHzR}6>RAS<%(l89UM_ zTGjWYs~|doP7a_=cX5O#lhV?2_kp_C zAowP9{FAYQ)G{WJjiyuaNBn3e=T!9)|I;RCwgf53Tjjxm&jGhqx zfW9eW(p z$pCT5@B5sL#kBB?DkUUcWO|Kc={9mpyx#UY-vH66(x(9Tao2khorC)MSs9=9KFjJj|3 zs)OLU%DYYF1>kz8$%>ETsU?Fgz_RE^XX@w;_s&D^h$U`*iL}pELVwwN1?4ZuCjzlc zIq&0H%XQW9D$6!)2Wo^o6KfCFTw;9H)stIrrt&*yYN@U1&Ew4LN} zj!+&+VE^>hmC4qpohq4tIN^O<_X|)xHcvESJ38K_gr%jM-FuCY-}V_RRzhc%a#K$l za5+y^5iQ;UO;eE*IZy2q-w-inL?iRZvn8Ew7+1VvHNYG86TQbh4kM34DBKi|ZuJo$ zG3#FUF;qxEk?;AedgPpQiC#(P1D-f+C$+$Rt50ir3K9&_yq|wi@p++g3Of>!8y)a zTF{)fc6JN+=@wq!jLgjNh6dzY;fjm|Esgm9_DO*yT>_#XSx#1%BMAX=aym14b{a4s zLFZ*}K=`voRPbr#y%8EU^+=nskt=elBimwgD0FWQALUJDO*7bd*VbwL`b^@P!2AQ= zILL->y415cmV3mY{RuOOgG9x*r=T`SHvUnUJYjIwcVW|MbrDz)%gx#^r?x`^r|X@w zbSogeZ0wkC1#&qee3IhirZnQjh=iPbc4J-U`pM0`@_OLpvKSeLDK?$F2xba*geqds zOyVZZ_Q?6h6AL8n=Vw!X*yv_x8fsyU>#_kWu8;IS>W z&PjP}?^4cx=N;vx`s5XJ_+K44Apq@e?yU}_SsiS=y@9^jnJ4F!F(SngMHKN=MF-SvJ*V$s@Cn&z^b2HDubaWeR%bnBPds(m@|CsR3= z++m1>@1W$1YU}Wo^;kzJzv0@PIGGkFBAeK-93pKcpnCqqTe6H12HDW6m_J-=+uy+))%8Jx z!Jz0nGBeB@4ubI8*S=Dsj)C_+^mRss02$$cL-XhPTInDL~ zB8zVkY$rtvu`bGYtBkne4t5=`Yme%XYN!LPV@`bqiZZfjF$5y4HAQYdO`oQ{7t66!ldblZmhH0x*DR>-XQeKHY?=?kj{G%dCa)xX3B@+$o2Gqmj zlfTfCj=37XpI?#$CAMukxVqNqsb4Plm_Ud)S)YH&V7orBm___59u|rHmE?*H+cQAo z>){ib^>m2gqLVaiR+R}L8bB4$rsn*D2mF0G$x{tO%{jxZna9J?wDCzFa$i~v8kuN9 z!5P@GVx%WJGa(~N^e?%B1;fIX>>twpt09kXTi>I5eSf2u*nloa*2KL0*j?{GdoEyM znArB2q~Je0Q_mkJjy{>)3pVNU2>dt7H87#|5E5k5NXs2@e&os^kJs~FH>PJJr)uQOf$tqN{uk+}~Z(h|ZL~ar#ag9?8x^p4O=A%n0!FD&afsnUX zU*vsXup-e~e8wlGa*zN=xcbr;;`s+3p+O3C$2%OLdt`mqoFFOq&5N6=Bn8ive}C_y z9N*#Qr60#9Y_^ek!hvU$BaVSxWt@cP@_V3l1p3x5B5P_|cOC>g&nhT4Ta@=e<+43A zdh1sQM~-&S_y608PVZo_FWkue>(;iaR1LOABRDY< zIX2?-W6v2x5iOEiQLWYoa0p$IZNXEN`YWI-k90nBQy3Qw=oE7BNUX)Mi#z zz*5x}gi~(VIhp#KO`DTC$Qr2cSft8w%AHOPVe>jOa~;yiI{RKiJ7-}LZ|+TEUylqq zHYcy~M}R6)>dl{f0; z9`aF1KH{g?_RV)7b9RR>ZiKMOa%eDnltmelXhks@;&%<>C zME)d7%ChHg_28ywa)JMJQrTnCwhTR1%Qft{XBTnK}xeI-=K#fo#4I2cX z?g$qwFK_V_pYLC-O`1FjyXhT$9O#99e8G`po6r{YcBmKxVr+P<_Rz2-LFEd4B1Sog z^vTXa?-DSQx$^_FQq9m6P&dOkuUiwl3Oy%+gMZrWI)Y3kH`wXNd`_{@fg_pUtN^tS z75whguqkOusuuHYjZmKexN&WH*|l)QdLnX8NHf$}vjUN?ibYu}Br4N3R{AMiy(_uR zL6J793)pw#kt{^@KG(ZuFuB34hy>+{5$?y|E|e$eEStzw(rEc&eyU}=z3H)Ect6}c z)3qB(TY{QAAidBV;QSD8y? z=4-c5gIi*VoAyisN*Mwim2w~qPy>5#oBy3mn^3g}(QOGtqCq#Ly#!C;O!g}W%W<0_ z+6T`*9zF?E@Y)GH<=Mz0j_o3eyX7Md4@>F;C<3MLwG0;!??F4Yoy^AjoRG18BEEO| zaumjO$kE5+09&l(x9tl1AWB@IS=VW$NuKcOkvFMcol>oH&uIHE3hMw(C3A^BY%Ok_$N;=8&2tXlisI?O00!f z4)BE0N(v4UZ4$T&PlHX&$rO$IF)jHbN|_ENz8&4z(+@C|T9o*xA_OyFkyw^yRMd3P_F z^v&Y$$U}d)p&B%96TyegSB8yDv_j0c^HlC*ZJKrP2c=zuX1VmK{kMSlFs@(dqKf`g zP5vR+9}uq!ltoju0e@eoc4RN&za{Em20o89Aw$v}NP2eqlb-8;?e5>=6;P$GKe*R* zn^i6YZ^R9|o7ke;xhwd>7CjE`0<>Kb%r1`}y}j|R-29TkEDlC&cyjTmzJ~+pUKv4v9E_o?L${uKVYc^VdsG>s(aL=N|+>AnmMH8c@>F=Qc#7F{rAQE)Nic zbn%9x(mNocc77#eIX;~*`vhAz_~Ntsx}>a#UDpOPAjz8(@W;!`YaVD$0kiyJIN-Zm zu!@*kJwbx%?6W^hdU_-Z?|7x=>sQ`>V-piI$GCrkRZd1Hw_b~rSkM?0Sy}1tRM)cx zNA6>FsvYho9xX(21BnVnKZ_H|`|kBbl$#NO#?2atKpq|*AP`p~8A$vfYi9r8f&_UV z3l#w){~GeEUGhrUFBL-^IXC&=n(CdAdZr9baI_GZ1->D!v^8ILWfR_Hn}tiPywDjFj<0qRxs8^Adcp*Ht}~h1Zx8dv4z+j)Pq+pTS7REMPA}K)6aU8#td$%*$yl8g6&IJ* z*Ye)k+WkLOU7Z?&Jq;LoX1%UIxhO0HFEP?URdx>K%>hfX%ItRw&x^9jFWWd1t-AS0 zWBPc_9AHC85T>X*>mM+28u$BCL^}Dy!~Iqc`}M`0U$h=#@4sQ7eY>&6{=FlQk7N29 z)Ad%w;Wa3GJaYT@Wd7o5W`!jzF!mJbs3gSg%% zHXse$n`ZNXq-P=`BB17zc9H`>g%@9Y(n$py>i9`r3b^l5JWpu02AJx94a%D-CvOk= zhTOV`;1>lbp&DR%vS*$016sqI6b-{(n@b?=(!-KDIzbcDenyC8Vd2wDzTcI0_MGvC z)vbrVA@BO4yVX7dmX|k|XX1Q!rmy6mOp{v7YvgCT;c_mIHdJ8ClPl-uBea47(0*vp z$+MD(M;6EJ8uIV9-vYM|5U~-L$4S+jI^iGb>k@tX4}t_%XP>@*x6Zfz@>oKrmA#KUb;8zt znz}=#O;IO+w2E45n5^ub*_zBRLLgAzN$Tp{nr2g00n4#xbSCp$R;d?wvxFFS6V8Nh zqV30PgPF07o@*G~0m)?_5NO#kN#eb^UT!g{qEIlb{kVJ@CHlXse%Wbu0M?3=$DeR_ zI6nZpQGD=MxWRg7m2AZ0u%MD2>ry_4)4mFAygPOH0+47gUTki0ipwA8yMuPBV0Vu% zpCvT<=H?z)bP2up6xtYv(RIZ~p{^92blhZR6-BN6uBl0y(a_G@kd~IT`ul7$XBqqx z%i2rPyXOT=*5^N`&Yq*q68FG{@M4|BF;O`Mt8sIBFMAT^c)25{$e_l0AYc|sP+UBt z*7?u;Rl`pt^bSokHi6};`=A^oz}Y$q*ofHu zdkc#329K2ONwtvAyaCiIV(&LOqj(G^Y(`V?|6CHABFO(!+POwGb!7qg0;5nUM8XI{ zl>k8nL1Hah15QGLpqP=j8nKb!7*HxOGMX|%0%1~KD$)_f7lfxE5VSN6kIiiF0mJXXekW<*epUe%zIFSMJ^WJKx^-tb1PZs^FI1-jGPu;6uVg zk?e{#M|H_;#tg;zY(&W6zsiC2aUsGM#{(Y>o8L^UbTi4tYP0jp_3PI{FB2L$vV!h9 z5URzzo9JoQt=f40rNsR5U&#X|c^|*jFWvI55tvQo`+P$O6kyMR@5%BigT2fh;9g`# zAJ%5q*BsHB)?eSUTWJA(gN}BQIM62AOxkT-0PF`uX7JE|cU&o7Ea%L5Yez6HsSC3*~TD z%c*43;lHu-Q)Ye#(K=@rfR+%zY9)y=SOj1s4Aj@13?Zk83g389YTQ1_IImR3JOW=i zIcCjZ2ytODIy}(oF>3sqj`^PA$2||*o(}C^d3(qux1hlEu%M~wS#PIqj;c_|!Q9}q zwWIx2ipY{Nj=CeV!SIr-N>=(Zm0vKGo+M(4k>o>|_D?r$kjb6l8Oxz4ucyWFbCz~< zvT?%^zC30399FbSKzpFy3@`pHDzLI#yTpr+i)nooJ+LTA$ULOuzmIgHmSH@rGo?nkq4SbZHGF5IJ{6wi?@|_xHj6NBj4Sg2Ez$&COzml*_K) z^(~w9KfxUloU*Fw3GOGM|Xnnwk7=!1cPI@#ITEc$L+ z)IiPQ%V?PGTaDQ&eI}1%%5-=Yz*WyNf_ETj)mWA>*a)NR&{Gg$$VJ}sXq5d1m*|Nu z@>UoyH+yd)lxMSEqU^%eCsI=V;HU|V2{KEFL*$vh%j#KJcQ1i9rGU=j*z+(TOY}vz zQZKzyX+Q&$)7l9?YjQ3bWuYeexo}_oemsOEq)gERFexSHJS!na4t{oTI|L#&lu8`! z4x+l{8_7yd6-qSf@Eh~c?z@;Ip9eWMe zFkb%tj!5RLs01a)6V%d{j}b}A4Rah>Ulc~_bFH9jLFb>92nr$X5%&M`so#va_XD(g zc!7G3GW=I}`bUVm9V7k6pAwFjIFk{-Lx*zKs5O?F>0BpZPcWS=_fcD4`3Lzj)(z7` z)SBKUKFy_zJ8aGm^7qdwel3wmimbQdDkDK{6eN@wF0i|y2ksCrCOMj%v zd|ZM;LL4R--rBm}-tnyD!VE3$%d?a`%j3spi4p$~i6&h<%ix$~{#$D1OyGX}Mo zYmO`B9(0$W*#*%Qz2)hiN0uMj$OT9Sj$uZuO~<4M+-;B^1ZT}3z;lQ*!r>9GSl(0; ziS*6XERd+5C+FS-haQl{4+Fny7=ByH{p=7A^aVJ%{n#1<$JuCo?3O^H+PyGo>|o9C zid}d>p$cyg$NG%D@ZIO6t{Kd?|7xE8sSNZry!R^2r-k=b!R!3}(z_QL`8BSi0x3F< z``v)85Y$QOxVe6#03r$0;Qvk8l!y zO#`;jY`wnlb%rcj-yI1j)jGoJyS$qYQF%Snn{aJ6GeW@*Ojoa3LYl^%?|q~r;fR7W zq(jIXa_vqsA1;3Rr(eLYGiNgs9onm^ws0%#E}t*Q)`8dGLz-YKPm5fG4cGUov=N(T zzFpt_TxT$N@uvw8c=h`8UWVe1rQCQ9_uhoHuZ7-r2ef)G4SB|FblTP)tn0gl$vWea zMoJo8ZY#No{&d$*x`8fiy8z)o^3#?&uczPXT}^i`6n?_OLg3?13h=G5YTS8+$td@JLNdYOk=PbXO})Uq+t9>6p&Pj=bHm@c}`{;7Cf zbv<8AvZ9xKaFMp+=i`c7)yhB_u6*~+H5+Tk=u(D69Qm|_`D5-GOK*39wlIf{{aZtK z9esuOPtVa$MgDwTz@K}C{4q_sj1l_`K;iy0Qe+Yc^iL0PeCw~D*Y8=lbX$HujHAb} zDZ;P#u!_&9fNuZjzD2>E2J(eY2nmDY#%9IQbvwKU+2vE3M_tQ4_@s5|o}t5iod*Tm z++2i4!-EUZTT1IsNTmnUgjmuG%2K{Y%r|HaDctGX`}R?C0yo*88w_<~c=&BF)=a~j zpO$aV_a<`VC*E+ESgnSa#XFuew+vlGSn~R7C>5nV?B($%pZM5tOg;BCqOOQ^Qrz7tpM_K9@`XmTlMLNMh*Ua!$yYJTh5ogunN73U)mkmSt$~L&m5Td2tdgXG6`nhk<-c4AR_kS^EDmcd=uAMYqO140Cx1~#VDy5yM z-rPGq**|*H{kx4O8PBHZ%xbSTAMn^QLh_-PeAM*ejy9UqnX zobWLTBiUU>vN_+cBuZyj)B#t4vxZMf|27CJZIS=|wd!jNiwW+M^o)$&7_`hkw=rBk z&0W2{D>o%2le5T#ztCd4O~U*Ac@8ou6;|gYqr$^!EjDW;GuC_H?QC0h`%f%zXl8h% z#1DGltk+uU!5{HIE{i21M!vtG1uAVPg}zZXvOu{>&U$?7)WPk3qp{CmV`YUha$$CR zn*j=KVRMRH=o=UyX=i(BVBm;9admNV$*ibgp=97WSao!?3E8}PY);%5FB^|vXFIM$10s%laHY#Nfc4JTd7ii1O!~H6%viv2=-CZ*4>$$(@kP`?5Dk=wP zn{FZo^jxsFv0S&5unB`>)0iaL}_(X^aH@DUC zvDAT9dF4A&WF}u`%?o`M`?=NUGO%MxGP1_$#qAHhEa&ce(1^Gx)vH`*fnONa#7*b% zCUC(QIO?9m50T0jjGxPGN*TMkI}B^?c5x!Kv>2ruXAk!!t4T>1XSW#~xNv~W4GLl; zy-Rr&Clg$QMpjm~(N$L|^-xZ^K)3AtxpNl>HFcl!NlUW<(FqCdO!Et(zlMfJOt)w1 z!THL?Ij{7X8&ui3R=<6A@<0dJa25HTCO0}yc}a*WZzl-0g^B;OecMzd#WCwtE;D-3 z-0G?kS`_C)rzj~I$71~a9yQ8Ki65XMrtQ{tRe#M|U0rn;KQommuHuG-SlPX~t7XDB zAuHQAGB96E`MDy8d^2ro&5DH`_ofa4no*!ufN?4?Ow8yU0?20CQ@AM=3 zeC5jq)3132Z69yjWcFJDEq&+qTJAC+v8>J2m#yrDQLgK{J%jOpJ!UBqwgz|B?=p`Y zy{1>#dabC=RAM^S_*<>~JnY%?0JJj1d?@Qso5-m>u&O@_u%U*VF?!Els3DKg#HPD0|{4sjru)=1y$$OjM z4&(4#S64abnS=vZW74YmY92g=1=tr4aAXRJh+wJcOaDfuzwVYWA?}V-KPFW&S@f8+ zPxqxPs@tOm_^vG9xgU7v#RcrzhNIrF8~$F;jQ`~a4*-lHhW@2C+Hu^zq0sXeWu3p0 z6h4r3Xf@~0M~i}+qkoMBXw?|sEFM>)t_&9A>EeN7oawAV!`j+fH7xg@mzS)QlM@%* zt~ubGhwtV~eynX*7b$SPfW@ZrV7*+S!@h#VWSu4k^hTndE+VIe=qxtr*U}BL=ThER zTkN5pdY+Ia$p83YiwQm@g?gM_;@ODds(7c4A{P`JoZ}>>bA6(nF^|PMkk6x3MuQa2c@I`t?!k3gyeQz7Z-9;h(C+ zDS=z?iYEtk>4ih2S38!zV_jcz-&#{>+1`7Dgpe{lHfG4jN%ee%+ukhLG_A=m6GoL0 zGG;oG`H!!)+cWI9K)6Tq`lAs|J~oM!S#Uob_|$VUNXbfCET8X>TTC3>rj?PA zxhP7+bNMycmGO=rwF<8-e9rVWg9=a_5Lx8YP_F0yaQ9Iy#hforS^Nr3#C`(=Xv zOYWNk=6l<|Wc5cCreoR1jxy`8QVc_+Vo11IbZhT|b$(Oz5~Oiy5gmtH^AAf?BqoFX z&A=>&4q+Y0hq(yWc2U^EqMpmSpLOmv+M=)YR@LBD;$*GDFd$70!yhNO`o^aTQM_Lr z{)uVU9AUXfi8MZad0uhte4OA09kHpO64I!3ZtPlG1~jn8$j}z+J!oH0nnUly`u_d< zE8^n8M~2_5U?;Qlg}wa4&Gy|7;Cm^;uX`~9H8`BlT+M2-`u!aW%c#2Jx2S0ez~`Dn zTPVv$UPmqfP;{VeOZ&ypdw1@9E+a4O_qdJq9N2z@V_)-OK++PvBlvw{KQTG@KFfUF zIXZ2izM-YWO_&#SJGSsJ!*ko|^-Qhd^Kq%sqK@wyZ}WzxXTXhX0uKHy&ZEV% zkLJtz*@GUe53<=;;S@GOmzaxZazEuf&G7P}KDfMXP)<--6Q*jO^gwACQ@3*M>*mqk z+p;vbr0MMxH>CwKe83->IpC&+wv7~P(64VK?H*J+x=R~gao;_|fTg4T&J26J_oOBx z83br+YqPSpR(|s)Pdftw;PbTgf4pUfj^~6v(L69H08;ZYAJ~O?8u!MwAL=4o2@x2a ziHu4q3D?R%z#20%^HV~LD)8mKv6kg-_TOjoPQh8d|LlrMnaCU|ZEb2Y2JH1&-4bH0 zE+K~nX(AE&HP2$@AV;@QEj)n1bc6Tt)>3I{=@|JnNR1qzLW{$p_p-_MI>f6G;0RJZ zd;O*GAU`swv|Cz!Uq@C~&>M$l3U((IJmXU}oxgsW;?@F9IoNs<^gd_&rBe5+8pmfI zF^6CyaJO2N;~oRdUxSWkjDtWY1JqC(+)jV|<%vo{Q$^e8Fw zA*!}|0aoq6Z)xRAGJ(Qh+#N>GMM%v!SSz?#LIL^1p$`3euiFV?MxnQDMy~WQ0Lis% z?sGBce@?Zf66g-dP;${IZ|vhO3TgK(!%C3K1jA%2UUsVp3hFm zZa7gVRWg7#7i1un#t-K+(hSt7*x&8FIO%tL4br2Sv`M=T^sWwZCvR| z#RPXbK?EL}F`w9hj+?+tLj&lpxk`biuu|8U(n zzideNaEBA$IiHI$kH{zqYxW<3wrTEa<1V1q;kkB{--oR~$$W+YR*_bj!`2W0qynm| zn_X$iEFcq*(=p!3bw3$2-_yoXpdRh!=Jt{S*}1*hhnlPLaOxS z3H?QJrWETnDrm2Cj=)U%pubThiK|812-8L%MRi$-2OCl-Q;#`$GD%d?Zo z{lkCf7Dj>^Gy}fJfWY(0k85}Nz9EWz@%+KKu6!V=7PH& zXxp4P$2!Y!O;6oPSn%JS)4AP%&P#!Gr^t;id2`n~Q~u98;sxkD9^}V~mx4kW9~m%UoUB_5^AkLTI2$r+^o_m=m}_7Fb+di8gFUKGYCCO$CK zz00_FkL7Qh7Tt)0k-Vd9WEV=QU?mL*aa07*{odmQrHf)o8Rc+T@6$*y69j2t0--u=&Ypahf>Zpx^>24U@ ztzdUclCXU}FgQxaP|^O>Rd%|CBVt*!2Df}=T9YwdWse$}rClLUhwT(^^RcU0x;Rqn zZXXa7pkJ5EBlVGv5Yq6FAMB4VoA@%r`aw4;SaWiC;i-Cw3+$$={}#_uHjgU5|VvQ~Qd%wJQ( z?W_ZyxU-qHM>b*qSl4F6boJ_yec(V9Va_!hNE<=4@`t~Jk$#T3d2{(@1|kwm!+Hq} zl)JmT0VL=YpX=)IyAKL|n(}3kN8Ww9H4FzmkLF271ZM}3`RUW$q&v>bk1EYN=;@Jt zUf00R`}!2WT79jMLxC4(#(cV`^Z6xwQLhr6T3s#uWpurEX^uoB!DtKP{UgKdkxx`! zK|&&%wY5!&MK_1lEe^mzgl{hnJxP!-YcCE7p#mDWrfX{^EuWYHJ1OXHRqVLg#UpV#6L(`YV3mvyaLN z?e`bht5|O&R7@-~Z`k_6#f#1I=UVA`e}8+Dw*NlVufn{fYQr=}4t^Q);28KiY^|%W zPX#>G)C|_muP`vq9lV>>KYO~3>R7iKo%cVUxi_^l_x1bt0QDTxS!tw1KLm6;PM9bj zgAAaGu!v;9a_VIlBjl6R2UA4YJR9HpO8s*X2S%`KFIf&Z0cIQz) z0fF|(&=SH{kYB-12Ls4wK2(pMEi@`}w_CePN6$FpTZpo(0OJKVD!}TE?d|J&3_B@R zxbGEYX2A@VR`s5;A}^dj3RsNiBn1mE=!L>u$dUG*IbcAY`+opKLGk`{LLw!gZ;e{{ z-GKQ18y*UKy34EJ^+AJMCbmGqlL@i@2zZ4Tb^l{DXboCP34pO~OC@_%XyW^W{mx)v z&`QtuRjmfNnf~a3WZ)th-h?pl_MQztWauZkNTw8_U=}^pL@Ha-ZEl0|`VN4R@ zjw`#5<#o<6E<|uECSj9vSU`aBy;;C}s&k*Txb1F^!4`&P+1;8JKU!0lDuaY?)s1tmKU zfRAIj^7nrfp`2HU`5_cxRUl(zWo7MPGn<`_g7q4{yQXFfAmQdlwT|=zvHQa5wJTE$ zU#M>-x9e1X7JrxdERT&6v3gC^;1m^V)hK-U3NtJpIsTpOCpU@&|3n8Ue_0Ssc598} z)e5KAsS}{IptpX%cYRG=A=9bdZjm?Ne>o%^Tn)!vdy{a3W=G}3lq?=(itw8qMLsT4 zH&$n2RIeo|kZ$k;;^CoS>|>MMN77LlSM3=~K{?Qgw#Bu}A+DW!2C5{$&*=)93_Bu; ztuIp3Sf2*?+2hFtFuH}#`LE0%!3_(N$=D;3ug|XrDIxPn=2)lg_KYb>{InZkJ!vi4 z{*(sC_OGUjFl+@nB#V)-PjG1NMJ5oKBRhL|fjz0BdjyMJIT)ao_gu{PuCtTVBR4`R zMg;z#9o1y@TS?0#bLU0|1>o(r-PRp0LqbUxD(^l(wP4l{D|>;p7{`z02| zc~aEinlhb+P*)Ev-iPgD_7S+A5d@u8-C$+ z@5eTa-${_hzKLz=ZTr31t8^?GOznMD_ORbc5-mRvGz*w?WWN2hP~Dk=aa8NV4J;%i z?nYLvGDU-!p8L{tQ5fOA&*@xJY3$L%OAR1Js$Re9-KtM=(ztl_(DL%JMRqS>?C-F_ zeuFEl=V6AQZ$?5inuf5`ekg6V*lYD&wUma?z<_9Z++j=0fH13g_Ax0M`A$H!*tVAk zQ0h#_1IXgy8-P*nbs^CgNHg=LX3OlwE^!nYiQfYnix+iOa(ZFeF=|(MNChEdCRGIh19?lsiYAvV$C70f|91rJMth@U5PGXdy=7Gy zzJjtmHdZUdSww^%u>X|4(eipCmvfTN2i!?qwiU0V_Qtmn^I<0Q7q6i1vF7xb|!x6_ucA z$d3`z_%oq#`Wvt#TJT>fVDd}~fY-~t+>3+hB0wixxBpTM(BGV)quccF>wEQeD5EX& z?$d|t$){nbCXKKuvUL{hHyC#xn?G z*@6xzIu!mD9dh2`7LOB%AWQ}3H$fP0H&0go&OWET)6QvMEw7w{`*o0*A^$#a@XM#_ zYW*Z#lLNTbim&)HZS4|!w4$Y@c&P43_|R|1W}A_wzW#o{s+pTp8don}A~8=(TumsY z1frpE*g;ji%b{S+ANOx0T84(bjAuvScxgQ^A~w+r~M-}wR4HFvCVFqQzC+XFv4D<2O&({VIi6yTp~)7G3@q4 zjW#B{jK`bs{rh#dr33Q|>%aQsvRS1g@3oy*0Qdw;SxqTvAHd;?0H26R=O!mS`E)4~ z&5DP8cS4Jw7z6vuJ?6axZ12Ozk8jsBhKgctg4&A5Rxg5Lb|!5Wq?R)HWiWbuCsQWr zUJ07i8wZ;6`SWKj0~@PdQT<{iHb~E4UmubIdW)81p-VkJARMn(XdDFNqjXTJvnKoX z>sR!L4}#^m)8p;!r%*n7oI>~ZP&ab9J8j(w)ss+QFm24fD2z&lzl-+&@Zo|*on)13 zWR)ko2y^spXol7I%Ut%DZhq80JohT_;>C;W5)$W^mX zuz~WgIYE@G)#5;o$~CffHC&wt22PXW-{)>boJ&(|jZQ=Fk3UyDL>Tb(io z*e{e&D;XMcY3C2y;gQ)%!E#rox9R`q{cYyi4NB8s1~-gZNLZMeSABZf;Y(W6Z zvSr1xTu`E5mo4@*6NH)FuqM4KRF&5JNg@Y0wfO9<)5Tu}Q%{wp;R8vC+wEfVM=VydaldpAZ0Sfw|1ba`gDW?Lq(QIO zsx{tC23e{_U7cR+1OVWFJ#v@U#hXUA*_V^X%E2i;EKa+)QB&}&r6eif*CavyZ#NQ7 zr_&PzCO)wDQw6_O>N9k`Ud&C`!v0aW>SG=2o)2I16GxAww{+@X4(>0!m{dK@92MEtO~<^Q4^g&fh-KgVC zMkT5iPKkMk-bABP;7T>?Xzh@1z!@BZ?$e~BXR}z36nB`skGUno4n|L{4Zf#Z&z_k& z3*Yc89mAHuo`cqbSBz*Gd)!ReCR^RE6ubHlv3pk!je8c1*8oNi0ljs zJDg#?i;Ii1nB9fg5vAkJNy^4zC(5?gqz`#{g(}$2H~^^@C-ez~NzchjS5nk2pI{k8 z&3IR?y=?NYY%8Z?2gMWOH*+_|i_mc)e;`RW&8aKx(UH}wuT}?h8BTI(?}LZ|WR_?O zxNVI2fdTIKH!}enWeZPrbty!|Bz|lE2l&2Yw1XK)fzQn?5?2&?{7p@@w2ef4zIbB< z3MysmSKPxbt58$BU7IT<#@L;7^c~YGB9tB#WpHXyjX4Fy?ize$$CuVcZCrlS9OB^8(9W)qXO6y{f#j_t#9 z7mmqMGX4Gi*JTCod(_X47$jed2XYHZ`+j|l`6%FQc| zXf|{3nS6cvIPDG{h!oA`pcQkTRzC6o-|gEvtKaxh<$XuTq6okKQ}rprOgIQNBU%GT zRVtds#N~s{X->T&BT^vI8@QiAkpw0?o}`L(WL85~xd&*tIzG*Z@BoZV<1{6tLDZa3 z5s`DC(jI?+QB_x`)_C;r#yAzsXP4ZL>n7RLxjCwcC{=6gs~|MK--{Ez%A+vo*&^PpHdGt^BmaCpom;7<`U_eLbh%IdW)S2xEG)iE z+krgFM|M&9A<5rd!0P}_3>J$uw6G9z{xIA2fuBmEkL?UicpH;jpTq;o)K;`0)CDj! z9s>`J68PTUJ=2v!?5K1|sNDaeU;u;C^hrR~Cy6t-oM!xXgKo?Jvt*KZ92cn{~yi!7*K)S6@er7tQ6NQm)E^_1dYztq7f ziz1SgEh`im^^cmy`_3M}?jjoy82G8Ye8>(91`6N<0s;a&%yzk&u3o!VA}Y=R6qoBR z=kRa*=Pv@cZ?oj&^s6x>d_b4@~>T z^olO(JEcM!q{kv3%UvrrbtCyxc=Lnd(-aI1y>EEn;QVeEEn==L=fq9EwzHn+yvPDr zd2$zX!_m?4QPHS-m)P^aBF)lK3iH2#>T6>rM|q<>%I5>!y%V!Pzgxna84w!fveJ8B z(1|olkp;E=n@uqk#4DLUcf86^#1<7Ps^$x}x_ozr@3mjlU?%flaAZonLvH z_dK>h%0LwTaZ2#3X#wJk(CCf|xJs9Dx!V(lBgDjeooQr_hBgTo2cyzU z{MBpwA}!AKvLd{(ei6z~o>cjbYfTCr#=u)tY(NP9+?50^;g+NE`yqt*o${OCTrI_* z6Xmck1t1UF+?7)Hd25$6SVdL$R9f84K7c<=WeX zC|Zcq@u|SgY;GXBG`mFF-O&BO& zOu-v+U@o0IUe6I|9?HIdg1+qi#W*OkP;d-8!GVJ3vf7wP#A1o%j~6~b-F1MJ%5Nk! zn!@VyD{&}&#Ga9+9FBjW9(;?VKY*;cV`djObhezJ3%Z}xPsK`Fs(SC9f7>w0N_SdVbF*@hu*iQBx5NPfculOm=7IKE zdb2s$(M5tUt>*^YCaCpM0=QR8>f>7wMkya@Zo-<1%Q|&qx#I#Ga6d430R+{<6IM+- z=v_vIC{cqdCor6G^%TqrmjW*RV4toeVdUoS{v1*0`xo4#;)z|R$FU0_xsaOUm3 zGls&fz^XnUAhkMT2?62Bz(Y)x#?TJoR~4ujbO!jsR5|?)Pkd5_lS@tWY)b2xGNnWc zN)eDtmR)X>Jjnf(US|+MH`@8{F|zO!N<)=IHER}*zd$cv4vhcsA!JWRI{`P{qRAHW zuomJD<^9!6Q8g|)>L3Q3e7_qM9HCTUL zW@JwV+WtXT$Hj>3Cp|bEfGxH-79Vi)p_xz)Luf@UzBOMqJ19@=4y`8bKEt@J^Cs=g|0``u^W_eaCmjO#K*4b9j6#FTX_rfYo+9=#2h1NJZL=oxT12 zn%}=4EnjJRFLDnKZaH*-CPCix8suvHue|%lFJ5#)od!RgM;(oNkpFkZ zgo~wSqd3b#E_YW?E?cJD*(5i4xaCzpV^IT!jVaqN3IM8OF=L&`sa$5q!LJS}k^qu7 zRLqRf>b7y6?9WG>g#FFn55d1;YOf+|oH$#<+u(1fXz~E{r!WT&f%djBQN+B%?Mnl8 zN^E)&lEFo0CT}k^XW2DQ_Xd}08hs`EFykVAZ3;)HHH;j{B?K&@>Zn?SUWgkGBU^~4 z7upN3G>n`<0}r}laEZsru^V+Mu2S9(+qrhaVwQ0kL+7;ru6Yer2-_Qpf&zjxkR%AV zd2d`aI$6M_UjPXH#fh!K_aU@zD1lT(9ZP4S7=EQKIO5ayTG}V8q`+5k>4@Sc+pl?r zjigtsotpE%)pr~_#JLfh(hhGK5LzmW*i8At(MSyn=9?A>fhHP6I?+J zutv3=l<-~R))&?uU078T4=bxM7l{=HD;w&zNp|K?&9o*SgDEM1ww^37Fz{kVl_!;_m%^G< z$DhVlv)Y(s&)i|Z_cbYZ&Mj?uD~0;KcfE;S4@js_-8Fy_JE}pKV$qFIRSDACN_j`} zln_e?=hJ2VLDNIH~sd3{Jc80?GnK7u3Z;Jh9K8KuDx?JrZ5jh7((Cwe<4i8Anp zn~i!Te;904TQPEhBhU=oI(S_ik3IS~5(;;S#z9!c$Wu|C+@P*6nQT$ydi}Q3>FLpC z7$_e6nqM(U?^IJ0it=~J&!bUESmAH1v3t8mHh+$14v2;s9q?v_Y?#c#u&BCKk)L~dAi#$J|o+`U8rc5-!!P_4kzpGZPq z?^~lbFZzQFq#je*m$%dwkI=h&9YXJk>4(I&;e5TvUL^AGUlv&4BvKC!T&yZy)-Jiq za^K>hYakN5&&nzkJ+>8E>3AbSV&9^ZB~4%4Pf{Wn8#fBdPeF?aXBCQ*(Y@8~A+?Gs{dbqnoNln2v-nb+Lg!?@;K2EmYo>n}{* zjoU{7VAU9yM#@s$cfv`mfR?Y8%YyZ^0>Z)_bGgEgl8~dLg)Fh?${y#ti6cL@M(ui7 zaGjl`PhWa91d-ODS)?f4#3NT1Px71OJ;3t+k~jdNENjg?4RYJ zE9!fRB>QQ-w)v1ux_vtdg|+%&=_uAM_!}FFgtlH)#mO z?;ri667b3%`2JFuN8TZ?hz~nvkpYk`pbujeS8;MG9S&B>@_UlYyxc5|>PQd;%Wm0M zKf-FqcR+2jr)|D1407LV7~1D=oyFUPP`|JU_A{B152P}0IE{o*uHVsU5}A5 ztdl&@MRQIjET3?rkmDI`x8yOb-b?3Q&5t16e3q+_k1i2?bau8T*#duyXGd`p-8BzU z?hS9xmMCVZd}5vOLJA!YE^qrWuoDasDm0=2#)z%VJ>85!5KVA1rE83DS`pB7OS{%~ z*H&l<8M+T7HN7AvmnisrT?=M2wxpPH#i*YN7l)qf(F|UlITZks9?7{A z>V|t0{!G`3DYeu9w?Yr3QfZX#yNp`)ay3Lc3nSdRU@vw2Y%B=w2!*C^s6TII+LL_= z%R)8_x2D1UNf|cC%E?VyRK|8egyO8!C(jBjV-o6w(G%y}_S&Elw^`add4Vs_*`6p& zqqbagSE|;lXz}Uv?ULJ-06^Go;sc@&4&zxrmb_Ktla)n=>9NgMl|yP8=6LrKIZ{1e zQ*BMcdjtp!TU_BE5cmMZlqA~&U-8*_mY_+fEX8%MCFWi4Nz`iIv%1c<1&KSUS%>1z zxG8CnRO(1HTx)H}pt4H$P z*}*U4ET}_#ntJ{5f)q(8$hmv%GXg-&bnCi(HYpQyLW4bNICe^B*{MBYd&6K5ttGCE z?D^Q4ed|dun_5PZ>d*z9!?8dRW7o&AGX|9eZ4bMty~B~lhn{%XM_ZT(2|MgQI34N6 z1nHwz^z3s@WUf0L*r{sb+WPT&)ixY$dSVbeNvx-IZy+9uHHC&sln?Vt)o^4MK#+wdWhBM>OCFC5 zbRa-8!eED$I9H3W^68j*LJ*>1S7?U&IR~ZPKySh-R>BQBiOXM1T5=Hi9JG2z21l8P z8W49OTvjg;vha-~;N~-71dt?kTxFNm+|FG0%AbrN3q;y0@uxv!Q@}t$G77bu56xPQ zmBOW)_3w|?*mU3BXf{`Z4f^@bHGT^W%E)PG?+e8AagV@YHh1cbD{cU|mF}+n{aT0d zz7q&C)Dwbx!IC;fILG;|T1V4sBxA43%dq-4|E4uH(hTz_yZS91w=6_C7@&Tk+TCpOf_=gx#CDY6!tj)YN1WWo;UUp_&9m;{Vf0)z zigE&v}({|`h zJtkxn+AVIu6`!;5J%!C;{=g5(a|6u?c2zjU*zb6d)5$TKR)6iP?IkwNSz>NVNs()$ z<7}I%T(E*yEKFYS$6jtcIkfvIV7@Ob%o#Nk*7}v;)M{@+WY#nx{utdoaB3;3W*w=g zuf9P)+iY%P;xX#%9FFE>o6!j(_M+?w$uxwF-Ot6$&tr-C-YV|curSm$ zvZ*6dB{MUD6RQf$!b%3|pv}&}tM&ajNdhq$aUr@142|zLyJ&tVZV~WhI2TqUGvIoz zR6IhU?#>g!VBE>Vda1_etB^b1pnm*5>O-{?Gp~pm;gzKD%58kw-HpbFz**78?_WJz zm4tx-nukyBZ2Csa5fpaQf-?*s5`di!M1_O60#oZ=V7|fK1pN*hW2oz9Q^|wOeap&I8)Kml4(U% z38~DkM=k)LFGmpL5?T4T_j@6Lcs=eWVA7#RSAY;NKp4OaD!H>%t1vFO$YLpq#?&=6 zd>|2)_`)sfkBjWk&=BZEKBhqt>CCznVTPVpd)lDPF!NVt=-ifHDWLV32EDFW z8pPx`+MRx^|L;*R93J09GU@KX6^!tap;FS*F!g@L7T%TjxyVo4a_Xjpct@}Ox}R0X zA<^ZNQ%57*-{R!-)T|K+aai1*u9c!V;=DB&0~HcdNkX@r7G!WP+TrBT=^_0aMQq)K z&;{aRw5PTpID|rk4ZPq;N-KZTSBy}jDJ@0cC_g^QN!lpvYXiClYisKpHY3+TJ@US) zs^kwwEve7d)ohO+KfWR=>iS0#$b`C5YsmHb1^e3x?@bC_7U^6B!+&W6LH=26?EP*@ zH_R-Nc0MLw=1nHjQ@W3DW|YT_*@A3rud*f9j(j08i|l%l0@Kln@5Qcz!Poij zaEajk3cbP~KRE8*y{r79osEK)4VbOV-X$Juelhxv@|1fwf?^#-6<`+TjdwaRRfP&s zzkUhKRzr%rdW{5*x#@5zygnCd+Jel8K6_G7=FD&3sLL$6NlaGHW%3~HLR7Nug6d5- z4X_&(6hr}zZO$32ie~~dvPjO(D4fw)EfBrih7dEVAp!KIU9Xz6a-3BE3i5`I)1Lk)Z?tU;o;%W%Ql8R{Z53eFBB)5icKKB z`^1I1mvECnPUP}m6Q^ym3?|(fp95YJjg5)Z67Wb)K1{)RP~Wl0A^W@$SM^rWq9^rz zU7dX0=~k`B@w9t?`I;lw>4MF2$6Cl_XpJvocHp**ou zsm%%V!6M!K7e+?h2N^EY&tBqx3VhAaCpDvu>iG%*-YR^c7Wu^vqcKz?WM=ZE%DF!& z0hzGgpOaquL6fzCk~<4h!r;bbmom<7mBx~~h$HPDfXXNnc-+9)SnN;w9yk%<;+pW| zJZt;oBq+GD8EXqZ<7c#KJu(YCz zrMI@WuGOi-Dy-XkZJ=y*%@^-|mGJv_81Q900?oD1m89|BagXvVW#(iIm{w^OtDrD==0w8)qZ%}4|BiXqr|T&kE{*SA45%{ zX9cJ`5HN*Ih=Lg)iwBFV%3@1X#j%s{t)xy~feI;@RhRrv4O1u*8#&dDhO)tqq^%2=2&lwaJ*9+7hzA33!S9&xib zb-al5oCS5B&rjsQLZ>GMHw^UdT|(8t7t9&g6DGE)6)wYTs!#*?_AdUFW0)A~@89;9 zcFNI<>d5713-L`6FIoYXxKn^!BGq z;jpbu@W>a|>E|Inu}l2;M6VJR35mIAOz?bl`j9#CIs6l4S3N#{tE%$4JXmg8M0vRY92=Gz zS>YQkjOQ}@ZRbu3+b^Mj?a$hWSw(?Mw79hN!U(dMIBIXhjuFq0!i^-fq`+ks61`8a zP1}bXqM^=G#E%UK1$5MrHZ7q=G!`X=gG9d5{ODNKoqWf3;@WRRP)xWE7R>!Kz^W=* zpYFjyxIx#PD7Z}jm{WCq21hV3U^u|9W8pyYN8F^QgxDr~ls)39J1K2Q@%O;WVO~mr z*%7QVXgJ-Hn>#!^v@p89DaM8EWEdmzU*(7IT^rrDYShz=0+%U&5{;0iM0!qaTiQ1I z-wtX&D3w(Z6Qj4T;IOWEnRM|5qoDi>x=e>=HvpmbH0C?JWm1&2Yo$+=wn2Y;ucIiV_s!|G-P3KV%f7_;YCKr)LUL~%eHn$p zth1RcDJ!*SX+kmyeQrSG_@8xY17D-){lSQ2dC!}F242#ZY1%Y_Bi_7@be%f1U#+9u z3woNBdK4TG@RI{|f$$U?gi&3REnboFW#2zXC}}g2MN*9j2n|xQ41Nh3+|WUB6v&>788-!gu$8F z+aVhFNUo^AN3&LyhM)4R1yP}G7H^up}sHp=0s>8mn8Q~v`WOvf42 zO97`i{8YI0+P+;p9u~Tdl7oYEb!M74Eb-JI$b#<*ws#yfkN*)4d{g;@AM{5O-bZg! z_MKel3z_h+v|F@Cv&0nWu?nt|DY^>R-ep1%&{D@$?tFo+ZaBGRy~86NuQ_Dv;YY42 z&FnF7-l08@lJOhg{@u==D&eVl4({#IV!s`VNZ(g=Y6jD$g$(ym>ffoD71?dEj4!dzU(di^2vBl@36#lMdVwfU@Xby2GFYYVC zl1veQp#3EBP`nDZg|lSPJmKac`3f!P1{bFl+#Etq`(})h7vHU%9IoF%#|`pwX1v<_ z@ohfy5)PI|Ci(mhZG7Y?G+pGmQUmU_z!q#TvtyxZlypAg(4GtBSGc0!drI2)j+|y} zxjQB1MI#aroEnVW^bP*6U<#+U@IWC$0Ujxv`2EuSX7XIBZEd6VmqqW z(LU_*o9-S|NGJv5ZB>$;54*DJe4hHkzqJ6Ymq5Y#P7PCxe%%tv3wz@vD2h4#+S$<| zX&_uv$wqfX;Ev+Ghf3*3a^H~hyGOakFNl>)4w~q*!v5D_LDtIIfh-gP+JVvyMYHV- zzLlqFii3Nz@M)fciFVIQINmE|x>sR(o5~(*%T2OV4m)52oG~A%5F*O(#=Ca=Y#{so z^tl??_m84pY8%m7+)3n4?z|i^-Ez$i$|OcS_gNuc$dOxO>r6aSh-jo z>oBLB_&}|Ez0>dL`CCdhNet4(w}B>Yk1m*wW1ryel{T2$Ya#cXLLHB8VLp2-WH8&t z5V9MDW}T;894CZJ^h_XfFpzspgq;?KnsdxTvmLyMMWH9DR!-p~ac~J1zMKt2=XN@( zytHqAjw+Z1An4ySz&p;plAmU4I3fpj^WK0F=z;^p=WkDzIIWMo#py`-O_TzJD+5V9 zj;8{?oU6|5=v|)EO5{iwVR@< zH<^ZFJ|p&=8NpU{d%41g9i!%nw49&Vgp4G5z>~h1h`7iqJPrw6kmSX@Q4c}$EFRaP zjhS?naf|L~2Bqg=liF~-1$S>+qzo7oq+Ab>kxiq&efxGuWTeGPZw9NYq7c@*5>>|9 zII%G{5xmvTyD>$3j~d#mC)^}U`QT&U;OO5&F~_)14DfI;zy`HLSfY{g14l3pCEKvs z)lj5BCcca#ReJoG&Z7GxIhc`OUA20;axWIO@;_L6>#(T4?`?Q!ln&_>6;x8`7NnFA zP(d0|LFtlaP!Oa=B$NgfkQfl@7&@f88M=nfVVHO}pU?OC{hs>c{o}nZF6MAJv(G+j z@3Zz=_gd@T=x9AGk+vQQaS;C;Ze(fyPuEJ2cJ9gaOo3uYwM3oUoQp;;CNjn>tej?c z+ZC?ESc1JMyXszBV=1$^6b_z@Et+)tfk{yV4J1}Ox+R8F&Y{7X8rrQQ))a3k6KHR~ zJ9m&$dp7>S1b@+sgpEoQg87y7#;^0BooWnz4$1|^XITDS1^GJ{E5F{qD55m_iCE=@*qqF{5S>p8v;>4gEgy#z4(D=`F8sCqPc0?LVa)Lv z72_Fdmq$*_u{*s_?gyD+dlUqX`O0Qzl>b#{w)1p72+? z;l{ISQTTIvKsC1SIub2yDAeD%;YIS88a^|P zn82U3-elTU`U8y}Z-A;UI$0TtNLcwVT@h7M`g2B>2}l(f6j+Ye3I>$~If}L&S!CU= z=_Y+yT&Qu^73w#Q3!bF9*(L3VktW0vx#Tb0xteYBC;-QSVO3T3W3P&#=D55aW{z#y zi=V^33ys-pJpto&!K(oQ#wJg2YLHb{Uo*}k@>osL#AEl@TikFga>ay z674RMy{lcyf&lXPy|pqNSLOW!>5IVFKUrI$r2cTyLS}@NuhDiZgjV0qbUTZ#RDw`) z%KXjlnOst9cF(Vbm*SNs-S<7`G?-rgv_%BV9aQ+X(mt&EQPGl8CzW}Sy{=dd z2l~gr=JmV|XctVt4+M8rm!#clgjBgkrJo$pCvTgF_!klm;yh+63h#UhOYIX>L ze2A=Su#Uas&!F2y!ylHF6wbL8+}nq<8?aL^;X+Q|L`Og6v$QBs>~>^vQ|F*MdBx4^ z-w!lc&qG|StSI+(tuz%1ItB`on%?m;a`*->gvUJ9pDPc1x5Xwc{{G#&mdS<%0WP+% zw@TC;WTGxs5H^@3&v$2~?=hUQ`%=*@8Yy#R($pM5+zp6Pp$fPbNn_ng3LpzXt<5B> zQ9_<0Pp`_!u{-b73i`)n+z17}9Au0k6G%nW$#b%qLGC$@qN=o%YspKL&!&I}dC8ecvIo zQrf|E3(D)XRtZaz@WdCQe0Xd>ka4SHWEvW-r{vGf*D({a`S&jQWlEK}x7-*O)!RsA zd)t-9L9h5F>2_CT9%*8?!1a0Qs0SG#iDOKyd7%raL2j4R_hhBW0ufp%dAg>0Un0ok zQdjTow%m}jssr{YJp3Fgb8?O7D97>Jk?N=`oH* zZIfmP*J@J`{#fvk#HI;Bhgk~~6UMRNQ3*85a4U1TI()M|4B}Eu_F{hb>05R@yBTDO zrpPfoiV3HbYhc|u;0+0VTH#tS&D6dUC~Nx8_V#U|Ra0}XrfZh~9{?7af@dlq2HMvBuKd@IhA!*3=p_P4&xU^}tC&bHBIN;0eh&eZ`*i$vE zu(PsmxMYEV_=T4#L2#=J>NCJiYjKEw1ac5&AkFkHGwVEF{)IiaxH0 zbuB)iq*u&q>pIVNNaQYLyRn6V3XW*~rgUou8NU8l%ir#lHPB_{u5q|jCA_@&!4lJ_ z2`*ajyXXx4IYSQuCN7i78yzLC7N8ZA(*tM>Gz#?ndp`LKkENK_pSOpIFyR2m69PACe|Ll z5hy7v;=4-Ca!1?(b#NTZ@i7s8BO3_ph;t^QV2w}+N2I)8s*<&Oi{w8N?TEfySu>|l zj;k-n_SW7)%o9#r9&6vnfmvQUs7phh;cwUxBeg&M4JL9{N#xDa$ms`fPwcc?P@(}S zM|wc)Xqu9hX2WpVZmFztzkkCtL1D=v{OAc+pl-E(a$kp4>Jb?wo8X_L-VD`2dEUD> z$<|o2^Xg06+uQ5RbKFmC^|BhnmuWgHv1;bz0zA*ZxBaO=FF~w6qZStz_h!A!DWrT3 zUaTMc)^_Q?#?9gh(RNBr*o>#u<=S&MJpZuqKa3%OObLhOcyVWL-zmhwPu%0Rq7z)W ztHAW)~&RP`v1;DbfJ)SpJ&C-5|)VcMzwU)&IS!;atJEYtAW@2`e| zO%NU@@2ik`vlUje;)1r7hn||VSnXxs4*puz`eY~HlsDIV}UgYU}%rBX&AL9fjF%KgmO02(l;-w0nW&w(e5oReu-U^2XGWcCR zP1fy_t**~DUoh9zcaC?3@X+5sb2d6`n(>Q#VcNbt^akp3W~4UI{Ww+S7k}FP0|xsm z-*%9(lO}Ey<9i4i!P*4|K@zO&BdM?oxfZ$K$N*iAPVz;#eQ(DW489@#UQavX_B! z>}(o4f-;5@nr^y}cA`edg1U^*F1eckO8M%6p&lsU^MMF*BoaOeVYM47x`7paX_|8V_ zuLT*}_LZ6WZDs1}M{C)OpH7dxDNh{dE)I-FwFV}hN{l{9T<|{jLn1eky_`*BN9FJC zT|?Z7X06nHd4#&T*f_`88)`&Vc#QWST+Gcc{zYtsB`Xjbcl@Skw1s;`v}EXP>x_P7 z;gZSeopsIfEIOO~_*-CQ-@=D7%UdGi{z~|UHbS0j;ypKDMde~S9eQ;A7>rMae_2}2 zSHG>$!?#$euY`}Hv)&Ltyo=KqnUE8#w;V+!yu!pbs*me_z4L)H$IDn9@>9DMZrsY{ zIBMH*Ob4-Chj)PwKlG+%E3>8lfS&_q6 zv@S)^{T{=QYjA&V=<=udA#$)Ah1*wU{oa?_QID{E5uRIgcItWNXM&ic&12IrJ+ky! zv`%FsJbf4FE{?-qVP0imm~MG>rD2M_LY*qtVmc8`cDRX6p5XfKj85gvX(w6V{K$T=;&bx+$jvV+R-Dys_KZtf=j7xF={A13X~<#1 zxqB(#?YtpY>a{syG62HHUO5((RvWbdkgoiKBJ0l1(meO9n4Wtp=ADa{+yQpgdKE?J z=>4}i^KeAkKhjZ!@6*~HXJ$DK!nnl080mh~m`i0PJgopSIz5*Q6bPQ!an)&NVp@LY zL_l(i!F}VCS`(y;TdgQ+C}ui-dN7k(CYeLj=cajDbRmW+`-Q8ux{YAv|9H;r{b{rS z7t{4(G5n>T+mCtrv+A{K4_vA#Gfpy$R%K(d7Pd}@NReCZTj;$4ZRziiZF?BldGXcu zN^E{R{vhGG;`y>F^+to|t?2Y(Xc!a0+q5%5n_4p0todi%wkM%YKoq7NZ=JWfyz>$A z#gsO+wHlPt@?6K4^@`jYKUV0P_y=P6A z0Xy$}y@cS{DaPNBBQQCAU*sJ8knIjz<16Yq@g*p6`dQ7W-@>TheDM4Cki4Rz@>&K< zjWOq#iXNLqTNRl?VNqKe0adldd=H(~ zhNY#(BTbgdImt+TAlf-88lH=UgQgQ#8;kUf8Y|Tu9fuQ+4DhSjuE4+9W* zT!1SoLF$-hqv45qRGI)GA>jZiX_mm{ueFr~tLaV$A&-UE%I<>TWd&Ax6tWuUFv+rHXc-K^*Q$3ZF zJ^MmWid6qAenpLqb#%l1diGD zc{TM(qr8cjpbw$O-BZz5i$ybHyH0;hge1y6F=&3hKd+BEhL3mm*n-;g6s$c_rksR$ zuUYcXp;0%GD1x0!bqzitISMa~j+M^6Nr;wGg!^O?{66XD1a7+q=&j<_mCZMhog81- z8vOc+E0O1yZI2Za{_UnrAbw}4at_itiZnNm7hO5o{RkxX{=KT`I#R3NQ8<8%S`9Wn ze7!=h9(}~jT-J{oxwJl-3s0_{Cy2OA!E(n95Dkea&=gm~?zz0`s5DlM(m+~Vk4dw@~cmLcg376fbS608^ZD|Xp-Q7qgrQU@ob76D%Ark*t+=@IRJClm?Di$g7 zRnd=2uEMD`6SgLIDzB|F1aaj>{?SVf3i(d32+s8UpqMo4tL^-_)7Zg-FRp0uRuLf>Lu;6x7c+d9z;P9=!91;X&m>xA~( zYO&W!O;(OU>&H@tn+rL%HF4Tl^z3K6(rp6MC5WFeP5OHF@=5E?#2pfIY>- z9gEHyXwh|L_RctL?erHW=LBfVI7EE)gdi@_c9h&SXLv(EQ1Ck-a$P)F>88G7pfR4L zdF^vd54b!*3FfVVSzC&QfH@}P>a7$&Mzv=4RPt1@F67B>pkSi>kwR=me!(2pc;njAr2 z&+o8=hs?i)>GM`bCb4Vo>D$sRqJE3l&Ax0sfD#RbuQ|A5!!L(RX=>=EOK%z0WuA|jc9EgsiPS}c^LbGQyu`Mr77C^o5QQEB4!y)lgwTElI5uJLU| zG>Wa$cy9`zlg(7R+8^pGIwxT>e0_@G|@w21Ityw&BizBekMrpGk4TUUj7yY7UTxt5Q-#_sj$2c3OstfP3Aw_nqJ=@Dz9 z{5{NGKDYaUgJed)pV0J60pt|1Rya)UvvZuExMF69{z!1x7!3dAZ-kq$dFN{Ju2OSm zU;yfz9p)zP9y_gZz1|%EmJ?z`ze^s&0*@(1usF*=qM`oCaad(_n7A-+IJjAnB+naZ zByxo4v&ox~nJi}=jh>6aa~w4?N?$YY{LQi-QSd_-Db>K#bNZup_)@Yr(m~(Uuy^sg z(sI4m+|PA4E}$w{#ok_x8x+&dkWBCz$HXg4OUe9@vfk9*AK;5E^_+hD_d$eAYH4I& zoW92fQ%5k3(%;P|P<{dF@4bAKW2kK0wl0Bje0s6~?v4WsL<#T+jijbNy}SKa!T|15 zw*Z-_-M)|I%{Mh5B_)~0(wR7$=Z6}?%70d?H*%sm74Qa@o3*M4--YCZK{-qw;Hg)(epQ zUU!qRjTydql^%c^SF>v}c|_TwiS3BGdS$xjj(Q#668b;EQ_qqne~Zuglq?_!Q}Bo$ zITZ@K`_>inNIkwtE|&YRi!`-;zhQJib-(-%1k;r2#f0<9Z79Rnx0?j%`1@5jyLG#^ zZHk_DwVVulq3wP?bR8cZb3rF>-*CHb)YGBNyt*ct!sHcY2js%ZM(|1V8h!Zvp#~Q_ zZbQ0( zwIAnAU~_V;6!SCIIgp~=A*);P#&wzYg4f1zi8mmLLTSMwM+7N#Fyq&Akv5YDD{~Kn z3-K}L_-*3cpOCpn7`1y^bm0DbD|H`qxWK`qM+PHX>p`{Q$OHkdbw(j@NgI-_2oNV^ zR#km!{6xFC`G%Y^b7Z{it3o7h$KqYd?@iWZ^Y3&Anc|?@-~O)l<42eGW3>!ZsCI?hb-xL}>b1P4{!^RY zO9)MX9E_)9YQhcZa$LT=V5})^dh3@oJ-xbcZ+8GzPd3na?pJ|n_Cok7s(RPIMa%ZFEjIY zSCiu;nfG6nuGCAh6Q=3%58Q|B)qi+s9Cs2|`CTa5@!q|6y=!-eRtc|L2n7FRg9ff# zsmRSW9a?pLf%WP{JI7L6F_6tuwOQuHwj*AKs9lVc0}f*enNi%e=q9o{T*EJR`%rX| zN7`K-F{q2VFz%YK5vzS5nK>P>VZ6fhX~2tC&ZgEy^k%rKR)F+KEk7CkVrSHDS9qq? zWlD9o%{S8CTjZoUgVsX9gPlz_8lCwCS&df9_aBLV-CwPuIo|2Y`mV^K4I^*@?1%sE z5%A!-tphVXn)NTyKp{G(7e{JziCcBu``7;CjD4F^3v zviY@)dgA1;7lsA~b$2LhEOYr9I*uKG*FWJJW2@0FBM|QGd-dkcua5FjG(R8vzF8lY zA>Qxrta5hQYh3z5PQcItkbt#S5hiTP-AIHNJs z3bN>TvN)O)=oH?;%s;Lr-yQKsywqWXLoqy!ys>%FX5C}e&%yAsP0wK#ms60ZY}%u8 z9Om!s#Qq|7Wxc)+eVV#VHJ$zje|<~TPA@ec9|+8>oK;)dRFv3>_YmRTHVk$Gm+2JE z%R+^|e&rgr1TS-9Z#B_p`d;oAE19<&2t5kXG;pN&l?*D;aXg7q%0Z^y?pss*uhobI zc9u_5VXUv+Cx2re{-j|iYj@i%3bxY>-h?;_o+m2J9p46OVabC{(2Jlh3l+IDXr7$X z@D+jC*eyKY<7AQfR>}63naxu;l0h|$kQRUsP9eaBgHS5Ijk8nh#4QDUuc`Z$zn;4Es)5#CN}g2kkWRc0PbF-OwU&cp6GiyJtKKJr2n zBf4aJ3*Z4U{Lp>++6u>PFT}ej7MY0pS~!W-6}G1_tR1h^_$*Qtr&j{(cU5ZjN0)?sA-=XH#VHV^LaK z_m1nHEMU`!=JSo zf&kerv=I{jp8HzzQ~)-G%AY=?mC|vD08&P@PDN$~*X>CD!gzx8=#>rX``)w&nJGp^ zwhfwl|M;D{c~4b{U?d=9G+iNC12S@YVo|W$^wzKWQ+x;NnK5y}!-$Ekd2t}lt1k~I zeQz9PVcxI;TYdi1BS>Gm`~#09LFw$?E<&XG6r z+euT2_w3M8Q4$stNHh-a2|RtuCTNLNAMg5;sNf-60Lq!R>N&WMY1N%)X8^= z`}t^!SLkL0{VVws!|aoy*JVUtp`d8%$nYO>;K=zL78(3iqwZ<@uQ2Cr;-F1(L1)xV zS>@Gyw%bEPttUqwKY#wrRunO9Fx&SKxo`fuNb>Ee0?uZ?=`TNwY_FXWGR}^pne%<3 z&#tz&wO9F%2`~WaG9>LG0B7LV@G7f={`k#d?pQtquo%~qR_pGym>9?ryZrmR9W*y@ z-s4@geM&(DH*%|fwlr~Z$tsGsmKCHa{Dc69T?qm}vo6H|N{qM%l1>lo+tKxP6`SE) zB=AyEJ<{;=gflHv){m4*6cMvjYO&9(K0g_V?UL~ua@+P5_h)cY9JqQ{=IhjyiSXLm z`!3B40@V#V1bYxr*$@+XpI_zjbL5opZCFs%ic3DhOwKe z7l(6r%;-v8p!0$X!9XgJ=q(@b6sFm#Md=C2z3YV8SB@vyTcEeb%N>RX#G})5N_im; zYqkm>5<;ce13w)DbGi_JvJR1)B-hku6q6jNE76g_L4FaH*zFJdSD__p=}e#q=RI;r zBm?A=zR_^uzTTFUCJ1H$G(*~JC~!$0jIi2s_`Q+Qu}4pQsI2d}0mtpvuUozRI-cPG z<#0c5A}S1z0Lkw3A(@8v8ELLuIaJXKjQnu;+=FJ{DTxKxyYI6B1yeiUj}-?liElwc zkci03z~NW7vty}0r@p^GOv^SF4i+D`zVsLWTcCh|fM7XQ!KX!*UjDOjiC;9yjz;K>uG>Etw( zLp1T?_WWv88DK%J!?_&WxALEq)xq+Me^Yi8AWSWdEG?aNJsdqF!-q&o;{g8lYDP9; za4GjAk)M}1yM;u_m=}ql2}XSMNdlx0Z&kihqcgk~F^h1p^55Lv(n0i4P*ZlnAAN>l z)b&Grb>OCJd(D#~3CwH_8BoM?0$O^uSMlRxq30U08CTQK&JG>UUdaK>>Q7=6)Bb96 z-8j^jxpdaXl+w`nQD-b}v8rrKay-^QMIfv9EczBvo;g@*i)e zAm8Q1_i8i%c@I9)$+-JsL>kilb#T8vUf|{};vQQC8dixIfW=;*n})fFzOdc8l>ygq z-~d0qFfLodXx8?Bbenn*-ax#~H9qTu6QB@D><${&6pbBys_l_U!agsASP%OZF<~pm zGaqPNJ7#1O#V3*2SS}?s`34UeqlkwxUI*l$L61qp$IPn<;(~qCes3dRT3c9IW%f4L zge0Hfn$H$W>tEqihDU)$u{Yb?w zDFAuXk6#Xt2UIklp1A&KLjf#98p!F=rTr?|H(>m)SwVj_rA*V--lY=eB>j@&p7>F- zj5i-vpq8fI*(+mzS9V@7%mZo4d){H`0wyt{Ghx zj?3^%2T-$59eoJxgZ{YywOG{LjF=a-b1{lNFfdTi;z0FAZ~Xpw+W!=ePu*3g;zgU8xNrK=eQ`M>Hy2Q$}-5?+(@I;ayqUb1{- z+`5KTd{ee>#Jsxg>nX+nt*dFO7*XO*pA>D(^a-^A^*fL?T;$C^SqVZdH~6K z$Gha?u46;la+)buNeC-y^QtZur3%sA=hfzF+ewpE-x)6Tr!-ozij#w z3=>xl!!)LbB4Dk7)z>5koS)oWYL8~%C0eWS?ybb*_~UncD1%}xtNM$mKl6v;w_Q)z9{XOZ9eGkXJtKk(oIs;ZmoA^#QszhyTjD~K4DJaDttV0mAR#~I) z{ro8aE3(PS$(7kzLb3&3?97o`N&aCls802wQ_~j^xxJ5$*!e#JcrlUI?wR^%fTCwp zQDztaj1a*cics5bxjjTb27OP390#~-`>m^0Zs`@BoQ#g&+O*wCB`oRq9?w7d;y7>} zrc_y{c-TR5gg=w*J`cF5DlIPjA@1CRgDpwryZtmP@bR^3+q2Yy9NXg5f_h#5zhLi> zf0V*!eiw0f8k-w)e>o3#)C)!p3{5*=(1VcaA?f{&0{!Sf`*y^v_|CQ|{B)Ty=x>UO zfSz%*Am{nEJOt-FnNlJho%B?sG77SXaG$v&^I>+Wr0`$JL8vGOV(biAzHF<<@d{Xg z!sc@Se*x`h6qP^3Ud)@-y~GsUdLSTZH(SNb#AxtDf9OqB#lcV7zlAb)iGw70f((^# zpOT(h!n=9TC-qpsq=i&CKeXNa^B8>a-^{P<7`|~axa>u;kPD>!q$tHa!vB1%_hPL8 zpiH#~whxAXI26Py5b+*Blt(c53-p%H)jV$1^P{d79j+W)|_j#R?RH+wkHZ8w9C<I}0-@Cnx4jTH`<;@4FMA%T5>Y0LNtM|S%#Kl8u`V~{Q7 zAP`Umz)|Y5XPM1b4WJp{vRg+N& zh3VBYz43aAi5N)dIsQ6*`1hM{IfMQiazR`+Vzu(inlm`J4Ldm_4yd^7z3< zFQ&O}4eq*FTEd)rdT;xDxXjVw`{CFSS^nMEiwx)C+?YN77i*~Io};Hp6&zI@Y1b@t6%Mnl6b0+H)~s4R<+N3jJCekfd8% z*LT%>znhpSreu@vTs?1YPL!hgd;z})b$bzbr+@*t4Yk;hLG^d6<}g#CeRVnJ^gu#` zOj1H`J&lO z+D=pOGOFpf0&RC`m*eH6Kwgo2*_QRnv5^HmSjIs>kDxqN$t%J-r=wIZfP%_&G4d4Q zH@@N+w0!}@?>7e1?BiD&LRK}A|c`GISU}|;vx&9XLgze03~TT z&nJ$1jU0zk0HEwz{wEoLA*PF53W1l^bK*V?hzh^TxVJy-J%ftH@94Dxdz@%h%_~N* z$FPNC5_NO*%JuuFn$M?eMgC9_p+*e#F4;y^mn~e(?E2wWf=A4F&b|pXGnLOPBXEFU z2icICN#GXJav+B{-+}y+M@ybb44HQXecq!M43$=wCmj^e?WhzO(6mfkO_(#UvJ>p7 zoxgHyP97OektP0S!j%=Xnoqsv2x!PXEPC%$%3{TCl?%qki2UHw=a$pIae=?K)=p>> z7{f5J4>hmuswB33Bx=2Wt-R(NbUlwT%c9`37jI-$$al$EI;+_5%04EOqBF|6DD&yT zH|41^t|4?b{J#NEz5|`V2jaXpPaF`-U*PK&YWTwDea^cP!GeE{bN z>=W8`o)vaT^5DC~OtwRCD6}tC2J9#2TTqjqpRYnC0_F^TxI`iy#C{2Of?n|LR|1fK z%@iA9@cXXXPooYZ781Cz1qeHTw&DG2V&=8gFRxwL(^nNsxzT7@z*j=};b7=0B`MMP z-)_wwik9ooZvb|KHIr`_ z__XLN3V?}(sJ7D%SL0H+l^?iKLQG?w z_DqNh-~71NQSy9+wEg?{iSNCJ09B4$nD$*{{QLV_MY{9{809=b!2oX=p-xDf03ctC z{rQ7${G!P}{HbptBkdKLnT@N503v%wFCyLu{5*in0hF@xd+*Z!irA(>{!hgAB^Jyd zExD!@2?*E{WYKS3Xtz=jPrnk*QhDvy^+E}cudj&AzNPg7Nyggee*Z4eo!Iv-%AwU= z#-hu)?7#3(DQ;-hkF7O`ps8#az)fLW8dipQW=!2vu7*M=kl|}R@Z=Z(0tVtHANtq4 zie4$xd(LklyDiolQOH#6LGxUVX*jG`f8a>p;IoZ`Zvfn^W+Z0{Kmo+e7@q4SpXurP zR|fKLkf!yeI_uHEP3?`>rtzH)?&zmZdni$qNRsf&hm-xV3*=Dq!JjW-x%>Y*;W-_yO$5wlB40wld$2q&m4S> z4wPP;T~~R2^LHnToZ1Bgity~h3smX1Tc#fWi8G4(=1nc87G(6o=>;MU*X0ka_Q-FW z-yYvUfzE&#<1J6sJF4_d=9AUI_d=?MU-+2Tyyb#!?rWDJyu`qL0TzmSPE&usd=O0F^6~L8IWO4q3NXDszw;Fw0EJuG zCOP<{D5%KK>c1cu=*EVAP-xrRH!b)kQ`poIxkC7_G7tz6G{psUuU!ZYJTp~>-x&G- z1?bG&emSU*gy#S}qbgapSH9W(pjAu#XnpoM>i>3aNk|-KO4Ptk!b7C1eQCGp8R++h z?H)niP0rghwqa@(?#6e8Xpz$r#t(kfCkOh1jGAk?@g31ye3))5L|K(a@Hz>Y@`~Qb zQDmH-{q?$^vA-S8+}g!^!U{I_#ec<2b|#U3e42SbFLaz;;gNk2fI>xhrVbp^)b)lg zI+=Mgrv5!G)gUqprMAeG77-MW8J zocUfl@@Wt80qRXC*dmS4sy|&paibn>g7{WaLK}D-i6^oGq)>$><$s+fl5l(MDk?2g zg&RnWmq$QX^oJ%ZNKd<^J|l*aL`NBd3k*cP7AIFu)@G4lJ7j!k5lfgks$$L=k-Zm{ zZ7ll=%GA8-wF36EoD-FlGL)5NlX_5HdzbUgQo(Z=-O0$Jv?a2j=i6OXU=e+siDcIF z!|JTgdNR{&dekL-ZU)?1-$Il;HyQikdxHD*^cPO|Y>k)K>&uPfXS?g@n5)P2IrymT zkA<~6*+%{8fQU*wFc4%$?Z(2@i6Y)}ThTYmlURvA7yT+aGHwXF_;Fv~vsMIEx=GRM znfXNXLyQoY7Qw0-{h`6ZD*eB+v+b6S9)Jpp2W+Xv!zR_7Zo;u&ZC6aE zMs(2q(=vk108xp489j$zWQNbvKvAmk{p{|r4D5CwSR6L?^6Fvj3dQZwCAmx;XC`oo zIlo;6F8{rIC)?8<8^gJms4ivws$m1$ijr1wz#?FWh{0n{wM{=GX!dic%b~2pBDk(dsbqYQLM$>KT9 z;S%2)oR8VdR#2`fr*y(Gf|_K?S6^pVs~MfJt?ta$JPU14x**?jP0c;_JogY}UE>PS zkPblqSt+kgBd}aUT*t<3!*TTq(4-?dWt@3dou5|;8^Od&+fsOU7=hNc?GIzVmc0@^ zy+ScWC^Ql#M6t|a&aw8Z!71aJWhKlJeF7q^Kj#l#Qgg}M`8+ltbMSJg#drrI*CQGuChiP^LT;LjhH;@`i&-3un0^nYqRae%S2@lS&qAuXj0 zH2!9tJi`}l){5bUH!2S?)5!A52RYSHzjp46<+~~>m$^gcyHejF8q8u73=W_vkjF+( z2whME)-Vp@&d)A3t-BMfXwqfy^a5ehs|j^jaFNzOJcd zRW=s0|G5B$9y_hAd_nvp@EncT0+Yk_Gg#vX|I3uCnN=#!S#XjJuv|i7Dm4O*>)x&E z@_a$3kDs!tke_{`IdeG>d-<1fq0dDsr2)o$(bFMrrNBD7je3yHw}~*Pks-V=kT_X1 zeCrM10arm6|1raO4n%qWb2Rj?zyF=+zyJB)r@RQiTv(CIH&pc*yDtYWEN;AWBUZl1 zLin5#^aVz1C5clZR|_zfBkJRECi>5{$^hzq8_Z)9gQbSw%^~ zRI7uL{E$5CcaB+yEjH9mYq~`HQRLgFPbNZ2-_l-;(w}C)$3v1_*?V$$2yP9G(ZIk} zR&h1`Jdlb={>}oHTT#ITmK_V2E!c#c(=AL4SpM@!JpM}wc^2ED&AoR=0r<;nTiRt}cE!72wUa|2 zyrQhpEFT)JL|x|R?@@C|53Gu#Zs83Or=1wDEj)h7wVtFg|KQGI6shd-fV+@V+ zLk2%;kw@KNP|u;$w*)&kHX-1SQd9pZ5XAUDw}byJqnkbRd`$<*y&Qaxh!HJy&S5LQ z=WyQ(_t;{<7iU5>zeKoK-T;d`J9WfSkp`=o{y&!>cN#UAl-|JW@<&FtS~&&(+btsA z^vJ1sT3g+=h9xk`yudUOkTr6W>_v@chbqaHs0^Y#Zg_3%vMHs9`<==b;iDoejl|oZ z1bl@eRsnl-cF?o&{{F)4|6W=Mqq{=7?8Na4NTk?TZ2>B(Pi5$_Dn7i3qE9`wC2Bev zw!4Fd?rW*}mqX>tI<`Db*5ko8UH{1iK*(-8HvQW=f)fw5JucE`KAxpxA?M9XB@!op zx?<@-|5hv3f<=Fwag;<pk)11dkS(K{xG)4-ln5dngnvxLf$xvSUb?{h zXqAK1gW*pj;p)Mb!AYyTyZ!D|T&aB8$)fl2`gev95`pqTE0e4NVGK@T3Y9ZMH~x7% z#EUz;K{aS!N_9R@PtTF3Mutz!bv!*K5;l>)ZvC=HrZ0aUIx1MDsQ zhZN56gU@qc%ogKk;$!ShlHj#R@F{0uuVc{u+QZ&N9Wtla@eMt2=fm9?Jp3+tEH4s2 zw@@>oZoO2*<@VR$D`4S(bXk&Md200W~%5yAG^uhfxy!rsY{kh(82!DLb zJ*RfRx4y@>88h`24H6I$rs(Le^h~^@>i6kQp56O7*xC3|Gd+5JZqpNbOJx4B4{H}2 z)f4N5)LSBDeo{e(as-Lb6eMZb+kZ{EPs%$a_pU{ALryCOlz$mBD>k;)>rl)+!NMiP z7vH4*8tX0Q4p6>*9FPa~Xx6XXkZT@|K+*)Q1>z!aWJm=<{Jn~AzY#*h9&)#XGL+xK z0m-IE>`C}7F`aJ26D$;X8)jUDx0qco4w7$(=UefcE;Lcc5F2b_rz~hiLyP z3$jMfHx+(!#2LZ9DI{HQ%zgP%r-b^iXAqVYfZCUzS zHS2K>D2@53n7J}KsQSGj={Qzb`f}soB@LehYsaC=jtTt}xSyj?9i~GG;$nJ>m_&lA z%w6wcX=RK8w(B${n!E9$Y-VxO`bDAK=I@630|e^TVZDg$5xdlK-v~as&>4FUb^SAP zTG4QfhZh|?$8sjD`~_+)u5hrV?AQB?zhe2a@BbXMJN@<|I<)ej?{-A?$K}0FCO`cA z;xh=yfwJl{vLq~7E)bdYT_mO>A<^OLn_n;aD0h@HTr+v}P<@=}(VZHL&2wewM7lME za{6wM5W4SRWz(UXD6^tsqs4H`%qcO>0|e33|*|b=(^M3NEtiBxh9G-781^0L#F%#D5%+17m|) zu2-rr(Y=cb-ifx9crQ0DxqYS?u)AK+uD5xvZYhCFA2I?or1G%+N(Z_+N$F(moH+1f zxbiY_+&(y%;P7d4zkN^eIT7DgQ#0a;pTiJNM~twwh4@Qng3RM=3cXER?XQFrbE~|^ zKN?`ivpP%dxtRlXc3qREpG;Z?+hGy`M%{>K*dmP?)BofQ()ERf5bT+#v4UI_%BYVH z2Li%9YvmDlQuc}l7umorA41WqIMX}0xuO2#J0AdRX6_IVX#D*6AxmcsDE2+ zsn{a2pdGHT;jFOek9`=BzZ)3PfyYC_6IRUbEvU52dTicP?B&GUV`oX?!&#z3TmQP5 zm@rK&ItCRjcUzl@;ecV>3EBty+qkdxu(t0^EbNs>!{Wg!R(czT=M6}MdO0={7PBJQ z??I7q$Q9{;s-+bKN*27-oV5pNJYxKe?2xh1A)4FhQKvZDTzJT&((k_MuYJa_>=6xuekDvqI%(_CrlkSF}{@%5?AAucX@O>OUUbUrdw?!_p z4RGoWFT_1}v#SzKL5`IZh{=eX$#ZhuWIENPh12W`-Utho@+*?3HojUqfc}&U00!8M zG#*-hn!&(iJxSh~Ko|6@#D)HL_jU~7%nZMp<~664cGMxjIxJn5uy`AaLrt2?t`n$W zA0dzy@qWO?fZ~v61oysCa+c&DR42T(ek)JVsNv4HJj!k2`I3Dj{T8Fpw{Kjjf>H_p z$%_Ow#azI-(DwS;8;<`nGnCWLEm@>!gET~@b|e-*G7L z{7cw$>&MuTwS>#&|H4qHWLVUVx2u*`KvcbJas{`F;WwRqH}fQZ4d&KGr9HW#O$4@MRTDbB+jgIjZa6hdM zKv(k9_NDy6M?bykBT`{K0@NlAYSK0%Tqi|x5*xVM^L55^++50BZAK8(`vep@$A)oR z-XeTop1g?^8+mtwoDpyXe?2*s{IOEHqQrQS@JWGtH=jG24a;9ktMs?o@;Apdj8$rA z5@zcGr{RYuI^*QUNtL z&PDKrFg>ZWz&?cKp$V4%b_98bY{EMtvfoxsguiLhn(`VK$}}`Lq&Q|L`PQTN=CKss zYr&p%*q`njK1bm{78lN$_U5KMiS0^SWwH@2;)Lj^t^OKMq%`ntuS{3QZ#0Jo_gzKe zWjRZ6&cyz&gP!EtENj{cQ;lW#O|iNr5iNfq0u_9zO3=Xg-Eo-ZZmH7zpVz~!jqg^^ z`IrTb8^7MQT}Qy-D}KjV&@AMlT@clE_q&d&AzQp1@IT1<>VT+%uJ5~mfHWe4qyj1- zCAHE50-}_3gCHQ?4ZE~Ri8PYZ(vnIyO6Stu-L>rQcX^)o{k}iGKNR-PGBfwgnVEBb zr*@9<wFZI*?*q*Op zu~!Sz7u2)%Pz=&a4EKf%KS-4npX_UeM67QG>T0VR>mF9sDhC0kzdzxOduL%qJLAp4 zu4Z+qu`OIK+U^?VkDbofaUqvq3ZSE!>E#r6V{)-u13er~nc zi(%yW`E+0=;+a~$|LP-``ATU7bqfH;7p6R=G%H6enrxCV+l8jNJ%++Exkn9I%`RK- zW0I2OF=!O%-#`SW5iZvM{r*_TK+5B^^L(XE2$HZ}R& zm3TZvNO6t3GBkbgUiE$!D;Zo0z8v~SwXQ@@dHd|_l!R#6xb?}zIc@*(x9|u;g1mY# z$@)PAeBe~1aqwO=M>9+ZbH0Utc3}CkY69&or6mE=AS z|N3|PzNl_I#=2%AQ30&sVsOKlX3)_L%rxTaowJnwR}+)9Y3$GRO6!-!g`Phv&u^~$ ziRG=-a^QC%0#+omo7!C5GYq`)HF;pI5UxJ~WBEzg9HIEZ(S~es7QbV=O}BP!Vf6ZK zA{XWM*Z>%V$vFsX#5~@|C&F3$J;G!dwLS8FiBx!Jmt}T zS6sGHX7C}|$R+p*wa&eT(1otEwUvP9P2h8GlL{i?dPX=Uho-~cv_Mz1viZUMyRPWB zvY%9@DurS<(!EJ6b@8myns1JK-%)4GlHs23_f~a`7pgr=;MBuy`RiwT`RU_h=W5+1 zgjkr-Mw+RHonX;WdDB}hzxV1rTqR)L%_7Hw$KTEtMCo(U-`^5Sn)SWICGyS~m16`l z54>shY%tk>`hMvb8ER?Ti0E#;LvC237Ki>u$X`XjZZ7tqI8TKeq5j$2Fq@kHF_0*f z(`xxm{<-*uqhwozA1m`5U}*FR`2W<{VYhW0X1TLog)h4ykrDeNPf_b31SQ^*oRN|( zuFpFD;F)n7y6@;k!=XiGf-T$f0oS51v=2!8wz-NoKDw56aOZ#kop@M982TGSqkM4* zq&x^#TJ`yC2O$)ONQYS3IZ_$(ZHVN1H#9DrO1~;yt3D&E5ZL~}D@Sze3F>7=2NVeh<~D1=i24cb$vCOt4Ehjcmf?0O9zh+(CdvUyWW_erm(2+gSAdYyBN6+ zrhim*yZOnFKYjNeFh3`$nnq_w)KE8%{D|CBY8F6_KJeY?^xfuZ`q}KRr&T|IHyI@v zk>S=U+x*+3wKWnBY9_iQ_diGMxAm;)f}NK?TDGbjG!}imHt?eOmXu`4oAMLAI^=N6^jjuEU0yhCx(kL4`x9D`%|BspEtA@>w;M{PrByRD z#=7V%YmREsHz0?jRh?p-Up-DZpy@8!7MPGwcM9H3VeggxsC41c+x`b{^0L|$O1X1M z60iSBbAdq$|D&}IFY__?i(X|D9|wG2X%XJ81xC!JjFt7zWU_k%Ek(^3FW5bfPKrLU+2?;=fr<0`KLQqMfF;!Wfq;TE1KG~$#qIIkqrKz4)`-Aime`pj@)-- z+y7cyw4ja9yG~mU8P3NnnrF=XXf}^zdhncQaE)8rVa~GXI)<0;YB6v}?53-rOX7uj zUSv}vNOE#`_lj4z1@j-iQA-AesNVXq50?#f={6%tkwbc(8#6b|ry;jN{-6k7F)=9a z+-4^V%A2;Q%JGRW#c;L>eR+hWZsU_0V5l?1RE_QT558?TxuvIU3Z2GIrK8!8LxXD4@W|)k6B-y~s3_X==bH8_hWelE02t@; z`Pr3%cz51ANTxT&uUNbK3mEHupK6`&6>Uek9HT6Darr3rY`trdcBLIXnD`-7?5sM$ zI+0UHsx`S1AeyTP>?;+kOU)omN}{G27}^I-m3@NBgs1^aOUEw*h72E3?z`8u-Ctw4 zKOYu6`~6Lb68`Hwa*dSiVfS3(VKoRJIUr-)+EOVPdE9~+U8zaSn95?p(y zb_^}o)mJsl-7{L@dXo3_h(Xwl;jV+nvlfYXDoJhDQI4X__;gnW#po9{9P=ZvtF=Vi zbazb+eMW!Fp$t0<%ZisMP}01~N%pXp@qHZhgR3fNCmiYyUQ*yC0Lt>0EQ9{(YM>+X z3AZ-Ql%t1LzvG|`u@F3vRGR7!vxQ-N&@3D^C!MtcsTDhl9b&g zk4`Lx3V20Pm!@vCK}Vzc9Nv`!;ii7p4{=qJlo#NV*O4^ReKQ9RoX{Y!hu@km$pdN3 z56R|}@nby)kYLOmWouT$u+)k;TTX02Nuhawp!{xOne9EL30QY2CPBr!}2H#8m*^jq$R9x0;_G`>_ch26N0YxLT$gX1@P~#Tz zabB9%#psqi*wI)7{a~J#S^q4;x1$cYbL+|IDF)vE*VkU5r)nau4=&uo)@m|Y)7k4g zLIU(dskU##8~Cm*Pf}M2r}8-wjUa`a#}P*y62#oe5hSF4*}pK2S^LqG^@M9io`w73 z;=|$JIBtF||6EI%SWX`mGi)HAiY>E#d!?oNcneV~9QWYAd)mlA-9jui4fcsq>#d;B z-I?kc(~gew@&=HTAXT3j(B>ltbiN{DUQy0(FlZ#@(P)MsJ%n0pdbY@21H6dTVlTn0 zWz9F8K8cdyB=A3%MCG$sRdsSwmERo-v|%teFc(%L6}FdN^Y6z!FcP-$*L&?a-ZJ5-;(i<5Wl3j{8TC;&}wp+UohioGPY2#^eRr@M7HrVw@=;kTWCt%o*iV6dCOK4gG$7+QLa#YSYDn}s8Y z7)S<$_ra!v> zCIq|6X#CwNa0Pg=Fx;#%n@rh%S?gsyb?(w&fO)Rj?%HAAIIpZDttsw^TW{DSH#-uI ztTY~)Q_&|lOfORM+n9o;Db#5(N+wyN9_XOaNSO0~BKM5qF!`G8RpXm(X1+V;3tq~B zHQPnsu}TcAk)GisEm8lRJ}PJjfxy+Ijz%l^X|0=F6-?F8@_&&u`Cf%ZO|?0avkW`A zD_F^o;;9m$l213jdMC}fRRw>Ucr>z~pt=@bzPPcDw8EL_AT{p$&9r{L`9#)mV8tQY z(56ph@U(~84KdCm^faNYsEDUVg)zO&lK;4RSz3f7uQHvPvzq zEABoy4I(;}E7hg&DDiBeVyC&vGW*{6$Ar&c7-V&ho+^Y3vistp-^C@+ReLL{pYlX8 zdZ~g+k<4q->_^HQ$8-&27Y$8sS3XXh!2A0lUNnUVdcF=erF{P~Lm#-=o>ckiO=>6Q z_w7zgM(b%7aa|dz!B=#f54zi_lq$a0xqZ(2*ef5}6&g=A&X)Qn z=-ZFGWWw3=7P!Ep*A$P?$vhGEg-q2oDc-`J$Js@m5p^CZeJM=1Zrjfd-47GW62AV2 z19A$;;KidbT;s#f-6=s}-T{ivU|3BMDd7%+C1R|(;#AKSh`<%gMMLy0lQzKQ*82f} zWg=vyKYV-{WeW;)|BFC|P~95IqnujJm_TRqQe0o!vHlBf%#wQETLgMZ{V53N?H;$4 z3$gbmTMjvATDw=FAvc>=3@~N7fo;?JEB?n}?$;4!sm+?Zd}GKC{D>387x2LJ0PlAxnJZIWP^pSkF zuPn`${KS=LG@}lm^SZaWpK$L%>O!jL;r5fu^jvZ)#d}SxtWsswgxn;jOBW`VJjiD? zsNkiwcLooHIY)Lf-Weq5dF3&FzkaMdL@os#Y*rcUJT=vmc-E(&e^<#{6jpkA)O5L^ z^YYRxlTH4iFbA7&P)!qhR5AAOtY;k10edN{2p zY1({p${sTl))r{|+JGec*=!aGyiq^ZT3?O*zRUbYAES64^L5=HHZwjzE>#z3u&4h` z@F58je}Yn}o0hoxQBaHciwHtus*008YucG3G9~2T|6kJ(oZZ18;pNdpfn)(fG*%U* z4#ITjPEKVpVx$A7+1ZTAWCmSHOFjxT z!fiG#R$?aOJ)%Hx{{lMzyy*ilTop7PYD%WF#d9a%ja$WHuQr_&^T zDu^Q3YnO(mZLsR)jfUB}OT&4Lyq=#Hi zPW1a4ySF5yZ;2MBMi6$-jPM=#&pr0$CCkg0yhe&l*I`=`SN&x(*|LsRbC4{FX{3&j z5Oo)P5q13mw>q6Sf-dASt?CHVxv$XE?RohrfIHHhu{To*<*0%kPZ58~~ zbNe*3Ml&KJBGcnN+q^yBvaU1VdaZ$@CR#!KTi5QvcbN*9+zdl$Hma)f2>%RiVfJo? zQ7!g2HOXjnRMTK010!A`xb^7}Dm0$(0rPrS&;&Yy4m~A?g7tML@kH3CWKC`DiH2;Nkmw6Fd z{UctY66VnL3x(>Z>iyKw296P(-lT;miI1LA(Z_|uViS{8Xvmf#Kg@h5e$@!MC63e~ z0#c2u_I^~=(he7(8$Pm!#lH6^jK?ewBXUy+!yU7lsoFf_t#ELf5`@wl^m!h-g<@Z% zN%(8fIpk*IM_X(iQLVi3Xv%!eF7a0B$wk6I=gHjD2z%RBL#zgISB5cmN-*gq1XHfB z>QkCHWh8F;7cF(D(}Z>eZocn!1dYJ&+K*ZDi7}4RnqLo(yMM)o$7^FlqJkj|iMgaO56-ZxK>%!&tGlB6jTCF-{R!^7;i6`E{*sU<4LXE~I7Qxkh@cX?196I5F000ds0Xfs>k*1(D3=E2!k z=iT_`OK8j5U91Kn=+s2X=VzBe3W^F(l>?`iB*h)!aOuEmLS|;>OLj5rT7u|9GCVh8 zVw1$JZ!C=h*I{OnnmhV(unkFxyo>3~VM`tzArdy&9+9%$-C|!+7K8nPMF6ybFCH|>nI*@jW@lmBc8=3kDOlMF)I#^@N_2pcox}O~Zr9qPwnhDg5?FzTu4MraPfGY= zQBnfEUlD*vq-iQhukw1{Ey9Hdel_e~`*a_A)eMv2qRJa_NlYJ=xC#lu{Ra{>Gv&2Ga=pzEl1Fl2p?qfktXXvE*7UQPZ^bJjzsp zK;sD(esebfSrQGUPdk?2zQ7O*Hhal~c9itxzN~O0{cVp6jA0*OxPcIx;v^+taop4> zSc62G0g|}{xtrp=fz`xrVuJh|OBW_%*l~R^i^)NtOZ3vC3YwCNXW8HT_DVR6DoTEQ z!sAM3yb=`r5Br%??U$l*}!+S*3EgrnIWCm@7lIo^^p>>Q>1FhKaB zrOj$jYar;q*%C$C6taKrOKwk=gfd|Hfik_5b=)sJAW=Hrc<2c%X?0~Cw_X3vanWr$ zsXx-EW$@m}`QaHBBHJK2il*hrqo^E@$`JLz28DTm?5C|+G%$1w-~S!TEHt-z?bl5| z-`#MQu!F(IgO}*V_l9a?f)^yhuBY=Gqu4S|SQwD4qvXSQ@Yyzj9C;W$m%$B=nnhz& znN{y0_l_4p0ze(MSsWHK{jo9c#Uk7|%FSG9PCxm2c#9mC;N`4s41Ryk;?nh=RFx8ym?RlXe8Oj2 zj{8ESSU{fGwOkUdqB>1yB<1K|>87hQ<}U*B!$Y5`ETO0f8| zC}+#Cp(n-CDxSGRioSIH_38ulK#1H6x1|iRgP{1t zC&@d1Kg`fH(-_5zh2s6p_t*<}F~w(zLixJ3^hG{>z02)MAh`=!TLprHTZ(l`QLe5x zZbwH>Vws$JP^WJCmaCJNvBH}Rh+5}Q#8|zm3nnO1x!I62Z(zowQ zq>RoNvC_jeIG9MKZG`0Cw!Xr+A2cSrRPDtSGkzYZAx*_xXxoAjDSXbt#{^v~H&fV2 z0taPK_jSnT86xYb?eUGNGG$)V5orNF&pRklAe<};$GZ@x+c9Vb&f*}y4242Twq6=x zC%y<8VS8)x!Z+j-pHTLG2ZFcS<>B)ZElK=W(c>Xpy$mlCSMO9d!|t`B!Q(?`dp+wp zM{h^U$5;>2;>fbgyt!KHby*5SZHdG&YOmRm1E^_)HL0s8`KSB2FdCpq-6h))od(2}yXWs>2278GXp|-FLdSFQ-0Qj2Hbl>?wQ{;QG z106AB@lM?z;e)F9_!bJ~LkxGR4YP&v!cO&9|1t&3-Um^AX@r|DEmTHz;=$vQL2E>v zhKUl}))^tyrW8+=4Wgklf9i2bTchUF6M3x% zPN1kxQZUyT^M)s6@l0Z`Vb6nk^I908Y?kOd+sv*r5r#7-U%68Nfqu}R=ywP3xMOw0YW?us(dxJ)Y{$gP z=k5C?)AI|(ACn7I<9u)bVvnn(MlMKPAf$Hv!^rLRUQBBz(<*|?sSvk~L;cQ|HLWWH z!AC09X~V;IF@O2(^!F;B#wWiEDzp2{_RHc)v~wc(>$0PpsfQ+X;$DFZr>(3#tX;(6 zB-!9$hY5?}u(*3b%{Z?ZV?lP%{rYW9{4j>+Qvik0scp0=WG4L`*N$f-hwqx@qx!m4ko0F<4S6Lp8Rg3hLUwhO~wqP4ksR7S@_`dJxwJxweR4R`bQz!ISH3pMltN zH=AQ!@t6zIMgcMM<7!)474dH0hqBh)dBeDUGtQ@Sy}7lHTJ!7$txI8T-?Oaj+qEpv z{_DNnF>!G?4(!x}b~u3kpPttBN0ZkNzAig5kN}Xw5%WcFaT?H6ftc)xshxMC=P(Ca zj@KHxI*Rbi{uc6luf0qA1OqcCRHOFjYj@7(xlV2m5zb)js9e6 z!kmnu(IJU=M`MBcvLKCNW%gap+-YsUe!bgp%OZb1njdM{KFNH2zHyL$NV~YVKv#pB z69&*B>~~0?i`Y}v*se5s9?8SuLzfodOsX0h6AL~5o^0vSMh_~ z7&demEP{7?hS*e_>geR@ncDE2Wzp{wyHv5IC6MlJh*<4kSz=32Qlty@Wn@oW8T`U) zYM$7miw=$n)vj*l8K*2orP0HUrOQDs3S_~@ z&oJgr#zu#aCrk9Mz9#va)BzE*w^epw>j(VuOlK_pF%gh!?v9~Ks>4O#EB9`<~M(z%^Zdhu`_m^UCz2>6xv0YJaDEo!$2 z|NV;ulNQZDAC#`>MIUnV7nri0k#uOJC+30#YcxSUyZ^L_Z!bd#dqYBf9|O ze;)9%5rel!Js7o+A9)7=rx!*5P*uHqD6z4+L6eN4m_et5HBIgv485Ro5-kVIJUSgN zzS5y|{P^+78~aZkwj2iOwvnwQE58Ms<4Zxos83VGPvs6k3|xMSnE&zSYY}&gx6eLt z;ZbUp$sPjz0=uMUeG%_EYkVT&_R~Vch0Tzu*umQ@rN|e)G}}AaECiCbed8S>hnG(S z*)LG7yWBb7MR;A186p$@SAT{dyU-ffq<=HR+#5H$Z+0JhQ3QLG-RXWU4D6!qSQv=) z$-~Z>TCgT)Ss*Ls!TbKrOXT0iEW=?AHcD||CHM-)CS4v->wGbH<J45t0}0S65PS-G;4wG>pyVp)Uti_m#vVRZd1;$ReyDD>S#O}_DGC_R?}K&92oxS(Fp0hVK683nAimYiE%g!Kc+WPhl z_25U`Y7BV3#c9p}hg)_~Jj(<&3ygt4B$)&WYe(m$@c!I@w1FPJHYA!*CDGG|Hu#z?l}`8P4fKUqc!{E#9v6YI!2;pGzm2${YQ~y&l*DHX zf(c5N?`rIbJtTZI2mTa0lKp6jv@nwVyZULs7vt@+U)+|gYvjWzjQT#Mlwz+%^(ne*(y7WUH=#LhE4y^2+p(aRGGmXO0>CxqW z8i$Xk&WdnfLZRQ1e?KV6yNHQ*rJX3FS)GVh%H4j8P6Jx%zCDDVT@9vg1rT3E^_DPE z3hlS8h2%SSo)#{wB;9T{z_>zNMTo}aIniE9iCdg!5cX#dV_x&3Ia{Tw(o&KK;dkDX z?}Ue@Fcz#cHez2J^9UTjasb@M>s&ftg^Nc1Itx?dFoTB1(0Ng{_ z*(iPxXM3fzFEC(=V=o`!kor~dSq6-bBPpHR7al!t$0tU*GDY<@rGh9y@KJN-9e_tv zl<*TBM%vPvQ_3oY0aZg22X3^h>+YkiC95~r?SXPogL4HZ*8~#24I9Eq{QE}L{`eO) z3+ECAsMGu(jocy_>))qt@?ry$HJ^Upd^y3qBusy0)z$p+WOWcpo2d8Nd|)cXQAc>p zb==hB@Ng4!XMMEPPLCSdQ9WmN|=fm5>`uBN|@m}m8|JB_aMm>`tlUk za6Viv0hD$6b?}nrjy6OaX(oh)a_47%$|Rx1PDR)fv^e9tT+C~*vd;&#`upAL^s=UJ zlLK$JhT!OlywaP_{m~-ePz~ZAV(e?OH@T|ODkKE^GIoCuY9U!79$DMY>_NqO(v>b?Y!VS z{3~Z|yf@3u5e*(i7O?Qn)#dp#`0=rD=6v^x?maeD#q~kRMV7ls-OR!@&fD4JCyYyIp_eqNSA%H| z|MsXWLal3P8V6J*QcC|0ll?+zSsjP3yCZfV$y zdjdVLEO8!i`Ysfavo={_Z|!Y$B~RDKq^5+NPjEnC>k#dF5#BM(n+^_`e`yUV)OP!9 z^(Gk)yuV-BwR)r$Hqr)>2`Q@--0<;@IIgZ(O+|u`5~{liZ~=07l%jHh|P}uVvI3%E_Zzf`|C(2ce}UWo;U`* zxY;hW7exl>ZOAle$G|s0v?)5cn)f#!f z6q&I*o5!g0tQY-3sv1MYhzyuo(CTK@N8;^xB-u&>Qk5`ydu$>>JX+#7zb@#+X-OLL zcb}tBOim7qWvp6@W2*DZ$^XJ_0fA%=ba?ea-9O{H#9iWgxwIAOf}k8QxY4hgau0eC zO{d;H=&Wep85(t!Ji6gUMjIdr876DeN{8b#_4rbXlL4>U2WjMLrkkyQ-zKxF3S{3e zrIPJAYw6_0Z(6VEpI|7H9a^*X931bZ_a|fKhrVwZ+zQF4gW)+?wsA|1+=2f{b$i}; z!&kP~HjV6Z_CKNA{^?Qi0n;TUPCSFo+6*V>{<%u3h;Rk5v<1Yqym&Cs!^jE0?L* zy-hUu0XylIk6s8e%h>Ez&bhS8gqMsQvDvV-!&gGw6B-YZ8BUJ<$@NJB)(Ovj{h!KV zJ9rA3&&6+uh90tc#HVMp`Gt1|FeAUGU2xt9RU^qRuKQe0a}14HAnnD zK8u%qGU{Gje626AC*X6{X#koGc|hI*mFUSoD2abh?wDgbDw~HbUA*3< zQzlIbuATySQl%@iowL%nz>w;pxj9a~3`V8&=OUQB9~f}M4)u&t@$Hm~Za8l(E4LP% z-P}J1i3#E0v?Ms#;=5nEN-Ohnx^1Jl{&?s#mxffwqnP1d? zsh9e5PudKIIiULKU9q{eMJP$f(aWa^^OXHIuZhfI?o75Au+ZV`O{D0?g+aYrtJw=j zpu9XMD9P3V7aEy#sWg9-_ml(xvw-SUnn%uDt!lOepwor0xOG0mCw5y4! z-~MsWGdVNx51&CYk8X@!E|vlCh+>81@@V6Uo95-q7!gT)e_u0dDjKd2tv_nN8kDEt zJO7G#T5l{+sD13NZ&`)P@-Fav)I0{nae8i<&;FCM0Ij^k7D~U;~Wxev2NV~V+oHHuDZ#dDJ>xqC2aV! zs^m9r_J8k<1e;Uq74uNH!`{*p`lq)WXT!J zuPzi7S88ud@k_mmx?hoWFOwLDWsMy_(k2U7aB!s}?_7J?ZtnjKmCg1Se0j$xy#bFf zp&_vGAouCmrV772KQdI;Br5)N`2=*${qSZ4vdG~E3@9IA+BU31iCH-~0{@;SGr55= z<}9J4w1SwYbv0;&1*j$M4?J_Ck@OL`;;hb&YnZR$8;k^=54BUf!6*%Hs_vNuad!7a?@jfrPCuZ>_Xlnv)y4!3OOdRvNSBsmQc)c7ey^Y0jIste_3tZ0DrCO44rLri!0Yj-}xhAde_{R9WUt z0a|5c+iSBF6{M8*$A{K@7$du2p&Nv{IZO>6UDHQQ!qd$iLx(&Hy=a_jg z&@WooedyzdZ*SjpSo#TiS?5YuMDREL^WvWmHiO!>Z9fE^tnM(n%gP|%(h^>SumCH& z;b#yZ`m$LIj<0$oRr~o+a^tJC>R+$_7+ezvV0Z=(_`vvDlUk7>pQBIj*nJ-cckY<& zP(CPQ28D6ilg|9xrt$GGuJDJqUk5VBtyI;28CL87NhoQP=To40PKIg&A6|D%!K@z8 z_N^Ek*3YP%$?%T`R7sx0+#z$Jm*UG4-_{*${d6Pfb-*+H!}&~ZlnU!m*%LOlSXCaw zXpa6w$(C2&XTxG*$WL9|nV6kVT_1G#&(EK1R_(^;XlYl)fC3#P>VR?DYk-N5gO(-| zS2}QNQIe<0gGsk6iHBzht~rV{@ecTZ^y%JXgM;igKo$9!-0<}AoeIPlC}57A<{Hl2 zG?oh7105iW+D1S)TH~&hc#F=*eS2Q24B`Xr=ALX zd91z&k<(uQpLux)1wX%ZE#*peZVVI|tKJtgIZqtWu966B{mcc)z%mAXsBi;cWrzsb zcn|>dvuH-Ya}2=^dapUoOG)EU`nI*zcxb(U592Q)bn|a&65GM=0>O)qqj&c!Xziqq zfWETaG+=1H2{C%KOVZNyWeW!|6g#K zB~Q71VduL^?Q}))a|(cw&XVWsxjUUQu z#PIi7*lgg1C~_c*Ue#Xa(+(dsk!&%KJ=*5Iwl>*&-OAsTS$UC^zREuyU=LYYcUi-d z{q5(yCk}Ym)?9%xo^)&H9UM?@1^ofCn#5NdUdGH^hK`yzSoWa38 ztIEH}ls@pO}K}Gqw2iyBpq=I-$p??C&8Zp0FckUk$I&qfquE(mlnvu$>~_c z`1x}g_90x5m{!E76T}U)D{a0Z{6NrkLl_urbfLyo%NShw@uu!%0o;g7f=&N3SiquK zMxjJtL58$NrSjTXFO=#p0vE?71hZy@A!41cYd6)zNq0hy? zRsJSZ)muk|56PY<>scEcuK{>pMt#V5=ZsP+l-K<14!BAxKT<@6yEE2n47714ZK_2u zRAgn?nGFGUyLx<2<ttTY~1uYe6 z-Kwgp{s=>FPRl<#Wz7t?vjI(rQ5W;rfRB*Fb2*zG*bDyi- z9RcBqZw^7!)NDvmS@OeEXx`vyvfuJHo+&s!cq%}C-35dgg8&gX8)-0m#N-BvR`ZV^ zSY-{z3NmNeG}tO}qfxnuu=Q#KF*J*=ZNFp}Tl1&jPI#P*r4QsV@~~uqX!9_P4~g=v^)Kql%t5<@z1$S3qMFfK2*neq5_!C0-UVB)$v2j*6^i; zS~uG3fFv3*U_`N8kn6J5zrHSumzWQ+@0i2 z#Pi#cvRFxUJYfcanRLZ(gJ+|8ZzbQPZo_7xzDN{O{%4jDplE!1w#Mts>X-M09SIPW zj_GEkmy(rbk4i5i^gu^MsNYUozt)%`$AkEP=NABNu>-SlK^>QaPShg$^BPVbzQe?8 z8MbngiUnyIdft)nT$UprzF=AA1r(!jADL1SP#tmSB@0+T01H_k&is5<4x(!68XCWS z36TF${VttZd#uYE*VjB5uZm7XlrurFBIkEO(hw%^_&NiI{ylR6#(#cIO{FW=t_bkC zTneRYp+ak6>R$iq>cTrnynzypT3o-Aa6H52t@O#OR3%=Yo3Zgt(%BauHx}$owI^0> zHhcfr@3-~E$ zkkJk6<8rr)o><}ep9R8$i`8E^3zZpe`5a4H8e=~eH{UwzJz5Uu4w=Orp162D_5lFE zWIB(^;$Stf<@@OI=FrHeaSygq7sP4}{tOYBhEw8Z|J`^QFLmgm?0&pZ_LoGQRQxjS z0N`%yIDO*Op3FD7Q^A=M-41$(4xUnIF#>tYoZZ9Oaut@tOm8B$E}AjEOdFTlh>OsB zyueRmJTPzgz_*-sP)`{Mp$8&3HTC}t?K;o!5-vRENq(n#grP$e z@d^hv5aZ)nwY5~BoTo_x)VVBSH6ah%+t$C9G7q2K2@oSWQMrSG_JIsdD)-b3^%HMv zTjG?=09DVnGuq@geV$*Uj6}=nN(_ft5lI$TI4nuk-m$xROvlU*k49Z~e`&bO9dl-{ z-!!IEfPJ>F_FiN1auHSMc=f(^&)nIgNan?V7b{~)Nqznf8Aro!UlA(HNGrCjWWUSV zIv+N1^d?zpBiEsVF(b?cAHL(5ghG-m*PPYz-Tq;+II~QgAs(EWrPy6WCjMh@LJXL& zZKbHJ>D%hxe`4udc;;wVXK8eWe)DQq`9^1wIJiDxMH!p3zfIcJ-cLY0oRQ~73gT>! zSxV7%4M(!~{;ni9VVdO_JcFKVm%~Mmdzilsuw8ikXRJ{RSQAEY*0EbH$Y=d##-W>D z`D*&W$8c5|E$!H3F9ev-h^It1I!d5_|jzl(J?P^T8-sdn52yz z3m7kxHn)&pq|Dbc$l3O1%a_<%V29s#E~tMmfGTQkuaWjExPoX%i*Zk@7FmRabgJd` zvhVOC6}-=_pIQ9zCko0JeFTSQ^K{QL&Wz;$O2!@KynKi$7>-Qp*`6f3_bp@J<>yHv~g_gLboDbTTT%I}cV93ECvQ$`>fck^eWAWG@= zBSQ+2StMJkoKlK*DIiq=D;R1bRdA8?L4{b3LHJL|_U+TnuP$KkR!fca?LOoZ0mDVz zaV~)R<9xb)_`Ud~4aJCc_oM2e0zj(2j2hv|w7^VdC{MmCM^(5JeJ=W4J#P0i?&#f* z8Q<{N3~ibnsy-ngRU(g;(CY@oQZE0RwMQ>_V;cRI+~w-I$PytmN)d5hQ0nKnaB_DX zTF=jd!+qg(BPSYYCWFV4YuKm|EK(?GHaeOGXqooWh1l%62A*?HBvR?Nk z|Ls^_tuVn*RiL9#6MO#N}6fslz$~-*4{j;YSPb{eIw;ICcLMrN^2(QTfMsMh#5Q zH(%0NdSEI1pVsa*sEH#E0Qe^1DNzC_L=Y072m(bZ6afQ75)9HoUQ<8<1VKwsaF8Mo zZG?tbEGdWrGmh3IJUc1@Y6=P(Km#Z^53`-YKs2{knK zi9&ct5x!nb=rATl%yEXb0xQb1tY9GN2=Qmp1pU46L*-~`*I8Q+HS9?ms#pIp*qVo?D^lfO$fE!{Q+yiG7oA?E-OquY zSVl1%GfjpIf{O;Ed#RfEZ9ET&H(VG@k_nw;6x`-9^od2tI`o_y>aFf4KcOqMq(}eP)(h^2P0Q>Go^;WlooP%vJ zfm*Mo8c5AzhipNC;wa=pkGGUPFdU|@vg$u-fJ{XmYz18v!VH=-t85#_a)rBjlJP%* zYZB@=V1b6^GuXsza{gu@hapordbMJH^7OswIFa?HkA5T%4Ptn7sh+!_Ji7YW0a_k= z6~ld>w(#DEztk0h26jr7Sez!5tq<)bgV&Pi0(<_7n`ohO{fC+~*Mvw}?&o8bA$qhCtZuJ%jU8cnnHpmMW=Oyi_a0Kctj9Dcqqo9aitPdI|P0Gn1IY3wqf( zk&sS&_@r(Atk?l=2<;WB^)t%P;1^R+Z3i?++7(~AiLpswdT+J;gpU>l4&R zdHiTu^mQ!N5jZb`Gvf)*)mL7-ozvGD3App2d(l^;5P`KM-->0G;T%-m9Ls*gg_e1S z5uSDI8G5VJHgEDEAHPO8{;u9@;6WCmLnm-!qgvl4Nnjk;S5lDt8sUP(D#zPE-C}W> z1Xrg=w3^Z~zpQJ>B<2=k9EcyH_~xVD_^FvFUyBe7AtyVwQ&u>i7dTtKqq>)~tLnD0 zeK~&4D_HH6bH!1Ge1UQ;!$JA$#5p^mAyP7=^Y%7tme`xI!YV~#{Xa;%3_5EB{K2qC zxTK^k+3YalqJ$d6RHfT&M}5O*-(n)Yf)a0v&Zg|DC5L+FtFGtF7RV{#8~=N2TWU;h zZJYJmY?(qDlnF`qi~yCy&%Btgh?R!a-sF zwy7%=4M=8!1C!8~9*b5~yDiudn`QFq`X-?fSLKzuDohypKdF$*UuD$RaabazW>*bZ z@cyf+LIlf+z8?sr1~3flH6+`VKGF<}n|c%rrqN?tK@tPr7~kV?f&ueGrFoq|WG;$E-(c!lQ6j{)3mNaOZ-uXp037x?LgstNF#iO4G;w19 diff --git a/sound/effects/beepskyspinsabre.ogg b/sound/effects/beepskyspinsabre.ogg new file mode 100644 index 0000000000000000000000000000000000000000..87be7dae79825aaec868f012dce26d5fa696e72d GIT binary patch literal 44367 zcmb@ud0bN2`#65V4RHw+3{4%x4RA@^MoAk$a3M87Ff}dLTr1bMsRk7l5zPfNO&!4v zP#ZNZbEX+JHMKJL_Ht=TZJpLx-ZOo#&Ai{A<@b7hzyJJ>m&-Zlp7U^@=REtl*PZe4 zK>!r^r=Y(6yOJ<%^8{iFIdm{RIx%CT3rcVQXGpTj=Sm-B=f=$cl#Q7Xu%)pfGcc#Z%?EeN_5`}_#a5-I-Z8Hw*kZN#DQjHGY`6C);# z{`-V=jzt52D!|8UmNY)`OPX|#$5@x7H@GJTy0v08MC?U(&7t>JF$Y?DT9OY;5-edl zp=#g~0~BAgJQQc+6fHE%$AG5-6C;QlzynKG#I8eew+?09I&>oROy2Ik6QO;1yKm=3 ze9Vi&$bhtt^Iij$iS)_cLOve*0lV8j(wr008mKABWcFtAT>C4 zv*|9oGCXf(1l$5iu|bjld&&OHFCZdjb^A^y@nKG-QJ=}e2f<>bFfZ-De+e8Qls?AR zOx3)-;jUZrbAtkPc6P9kd)E4r;>_94E0{8AxB{*vVWN7Zp?az&W71E%rupyMQN6Po z9f}#S&+uuj?xRr5rC2?f>)C12iU!gcp~2rq3C z$i=oUAQu<+KB><*=kA-_+`ABF(=6dI3C({?6u79^*ix#x;b$SqKa)N|Xa%L>zc1Wt ziHl`z{Kc59X9*tDj&?y#o;)sZ*P;EPRay5g=0)7jdUWf=qg%y$H|PIv#`=%s z0HDwaKFg#eT1>iHn;S^e{Ck1_EjekZt7XRHWfnWSEdpk2Z@h8d`PO+_pTTwx2tr3p zqqAlW;(}ZwW?kZDd2#cH;_h6C+kNpw=!Jg-=5MiibSvw>NzR6d;M_}Ae9Kk;OL7|U zCChFl=6>ZCq2*RbPsbP5D5~q%6f*e#lAHul>lsn2Q1nz-f-gLsSXiUHBukk%_pJZ_ zdHhFme9|qz1C$&_y2XE!oB@)t7bs2LwgGSd#?f;cBxojM^M79e02nCM-tk$FusL?~ z9G7{H9gpkzf0r2W>b!HntTRa1N&qkf0I!ZG#sX3~N0+JXoj8WqAXxuQ5TF|G=8m0- z_Kyy1i4hUhdoSuawrH1!$4p2ZbE00kXHF7?ewtNGO@%tB_EZ5j0I2)n{4D(5ILmzB zS==xec_8@~B9Bu~{p!cw9x(;{P)AK~R(O;>{lx<`oDf~`V?dLd*+BVj5TMB7sHxu@ zkMhSyodZy2qVkqP+)bx|`h6n*Af8nDPqW6l=5wSd*y72+B)h*2n*+IWJI%{+?Ui@+>_rH2?X3HOnJH^KC$HVak8@ zbfN5-9^+PA%{i@G^Zr2>3S~C>|1{CO`O}J)=Nw+>lm2e)Py-(CLbcK+=%1!Kc=w+R zU#`4xgBw?!G~sxwGH&b~*bH!qt5$%`-ng-D0N_J306w5UK>q4n`KQ_i4-B-A{uw%V|K0Nfb-N|};`7&mM%0mT>KkEB`n z&3fE?OP_Y;Rj!1bZaE4Pwnf=*zX9>B2RI!ha(QfMy|qY|P@{a--)Xz^v)qB*AmBn- zqEh*6!ruADX9)9I5r#ESj&6)x2l4dSi3$kfMeI7g;WPb@0_tUBH&EwcsMdx&gQ!N$ z&8GZ+GZddBB#oS5`!fla&P+dorNo!%+tGB|&#$9*!I7W<6_#al&*`vhO+5=?N!60M zu;dN^=v2`FKU&hyc$oq~PANz1{?ypTn=o3NTWZvZikYM)AUPru%&cdDID!F{C(|(I zx;u=}EGB_+AmNPGX6VvDH3;fvET|Ac`(6TS#h6KVYXFcBKmhE3ci9b1?;N;Js3y<^ z1u(`}yPa>$(r-H3`OP@r)Mrd{c>(4B5TX*atg9QuA>N#I-icz&a(POks70|sm+)O1 zRN>8M{TEdrz@nxuKv8pTFG=M%8-yf`F##;dR3vq?SZ&%EMu4J$H;T{$0Eb1;ONyi! z;+>5!S2xg*!CL}#=XqpSlN5o9}`6+r^NTbG*a!ye|jF^hI?8TgA*5#IR zl1Z+WWDT?Ch3J&YY7R4*GxFYu37K18GD%9?V@`n!({D5spr}6U;zFcZ`FUTT?2LgzY$&$714}L0Y8S2{sH{ z??O2TCn#ky?MBW>^vncY4%2S5Nh01DlH6t4oMLO)ybvZPfu3fvU2jN?7(_WdSpn7p zn1r9dF0vb~Np>8?e7ieIaUo0#a5$O@@R^-y`ISxQho%=l)8P{6$CY8*%Yy3R}97kyW_Y80vhxrev4S1H7oPR)> zNf1n;Vxvzg(F2Dxl`}O#08E&rK#%6v+@!a0fyE?9LHq7UsN4Yh+0siSAXPSMmf$p| zWhIyPc?j4i;SdRx;039GL(^=Qa5;Voa2!|z0sJ#}gQ617=L?9VWhFpc2U4e0-W zpCAJdHtX`Y>;Dh=0>cM~e30qVC*7MR8B^}+CY8Q~rwti_H0I@uDJrZ^z&-X9E77A7 z2=6gocuSDA)=Bw+AQ7A9l3!s#HcC=_G<6)8H_dTgUG8Op&EAJ!+gLVEa*{7UeHdiZ z+`Mq?m3u3fncRT}BK4L4eqZF3b(l3HCL1IH6o>|0WiM@-@81}I7N7rhf&hF_F949> zPMh;RNsWDqiXT>U2dp!P_r;DibFV+9Pno;SMO)sMqVF%NMQ+#xz!3n3+1GnV!)e6`@6s+=6Pt>`u1KEDgJH=>nIj z1zH&_FhCJpSB0vvB0)8zi_mKV_(M>ytEost>5ehH1KwDF(yvtqpdfHgbX+va*I%wK z60HG|Y1w990FKVCGxqik*MQBLX}7WwIS2vPK!Zhr>IU{L6@KZlq;9>6sw8iOuN$$# z5zzFy@`VZep16@cwo_h7@j{FR$m4kK3<2%YQQNU*MHl$&P)e{OM`> zhqrf}UV2u%jjKOcA-c2dKbvbj>!VgD&RP?j&+aYkmIenyhUEq>&njP5uRML%TzI~7 z0pq&dmTByrdRDuJ-~H{xSHC{|Q`hqkRcZrJ@}69#8oFI~m!w8^@h;iyPijk}9aZ(@)rsuU^Y7i&UC=-3Uw_<`n$n%-i!V9+s z(gE}HT24Xv+65iX8>y9~eS}o=SKErmM$TNT7086Pmg;H6E598|>w9zU+*tDD;Qq_M zo%fmX8nuz!iLy{^-RlyKi#*kM?ylOwny&j236UAs%5`R2DxjA7%};DBwvE+Z(P8>t zC|wjT*%BHMY6rSbez=y5OU*J}CkcE9d0z+aea&Sw@)NKP@W;gqRR`Yhm8obW2P}G` z0O%u>zwoRUA$<9bUTecGm)!F^_CUw`1HSng%C~9WRqAVY^%QsSgPK4#9W|nyy&_z` z7rg7oxqa$$Wk_YPN%XK~2%F6n#`Pep-3*80qz-e=C>eX$ zu232Fm1tB7Jv|whH&SY#h!QYNcq{}j3(FVjBihu};F7XTn^xfd{p?ciL0|bMFXMG> zIA1xdgi8U;dsFT*0@dtB}{DZ5fG_}KS!a@Y` z!W6DaptzsQVCd*3qaiHyVTn!>ggd{KYIN2?iUR7#{TKb;s#7;{tvtzk_4smA@2v@J z1L_T=w2Q7vxKLSoJ#zf|jFZ>h7KySYWkZaDT`cy@b?tbXaz>6Dci7@2I5Q_Wm7AI0 ze7yY!lo+tI7*wl*52{h}qAA{aIk4`jTjNK8n(zc*dl=%VkT%xiWo7DaYV~&lr+mDAY19h`bEiHXAS_e8e(of|KX1F}p z`?P?m3JJ!LCa%<`h3!2$Y0o(08dl=s8$|1^Ddo}U`1yZbFRX$6Ail9V<>-(~RCfLEu?NC$u=;_2-ZTpqtC<_COW~RMc zP7Lg3)Oy9#Pt9?*qh16z&2eaf`U~SpU2bDI% z+x&uNbFOqMetbRo3o>}v>Y9=JgtPj!p8-8rop_%TcCz2aFFmIfDi6=n>4TVIavDq~ zM^dpPCWqXPO}JJ6@UfP2!tLETJkmOQ8};yvV47Bx;z0rE?Q)Wc5wV1CfFtm0TEK#6 zmbgfBJePT|2}ljYua^O-@>YHm3N#z7VqK9Dr4kAqm4XH>j51`^a`wngFk+&T>A!dY zsR9{M9T+Iq|F#-djz^g)KsrCXx=UzkL-F?r(Rm(K9+pL@ucALlXVM+4};kDE#v5Jl1+JLA_ z$^W7yq>_&p=LqrNH9j6&Wi?C<38`#05)p%vEBfDU3$G8u!i5rCxjaUgGWfG%vh4Xs zYuZzTKQe;^MlrwNEnWHWga+hio(>o`kWEk4KDn18%W0g&UEx1(e&OQT=*KvOH)`Kc z3sVVP`g7jh;uZ`j#RK1+kCa1(9Dq~?=;2($Erb@5;4H&-&@w>TMnFO>4%j{+ew|XJ z2{gIdJZy0T2J&S7sP39dVH}A$;ai<}qjUB^&PLeG!Xb@kI6E&{q9qj-ziR&U!}hIP z@!1LjDmt#!E<354qlgtS&^20@*D&W&4ic)HN^rzrpW20NJcsGLWHQ)fskSYW*AX<( zHy>%8ED}Xq%-!|vJ6(JuXo<-+WT*`;0=B4k>_ie&=PP60ONd%^H!4fMRXKO@3mO(R ztWUL1Ni#H^?5FY($T!VNe%Ah^UNGoWlqsJ(z>H{$8IBl zQp^A;dvYS>U5%`BTBYqq;6Vah!z8t=tc+RU7>G{ywT)7@oHb*I6r1rj@cpG&Q(}JY&LmCy~t!2ZAV@XUx~q zTPLj88%;D_zb;15+k@a{1FM$5U-uPX7o+Z;b}R&UI{-n`uG24n+ZTT9gnU-?=qx)V zGd@Aap}x`Y|6p?K0KM^r-KT^1-u3C=8txWuRFwT;3wtNSqREx0ClV2rf$UaZ zSg+c9wZ<3bF6(XH z#&0o4$^o2SHS3kvQtU6WtL7ejAdbW(dqF8jByN`dK-CP3ND} zshWU4Zb``&1b+xW>+5>Hrf=ATY_si#W~&8j|0?wY1>XdbcOAO)%&d*t6yC zpv>d{y6wc+#*8<9KYeu9Mg20x9sRIh6VIGu6ahe{>m9gq=|1a03VA$druY3|O9JC- zoMnI?ZPRPisj)0#+iZySaFbWKnNoKE4*RW3PWO0JY!`A<-{M-P z>f0&CUWXpv?iJsbbS&!PH@|VcCWcBkJulGxk=&tO6HA2PmRPoXnDx5sDqYoH-J2p9 zDuCYjAaHN<;=SkNrqf2jjanfNu&m!%eRngS-FG7@=8S@Y9|FJq2t8Vm+PAPan-_Bq zv17}@_~tQ3+=Q$?uDQl0NmnW#Q%QIA{_yRVeQmSr#hWiG{!|!J_g=+)FdUrLu&k^# zC8Xcq-kJpNTc7oh4`YR{45YnjkAMH` z`5M<3AvddU2-{-=*mgFR>;CU+YP#F!lCCEi#M48SwPo`hOGh*#^gEvb388Im+_Plt z4U5}SIXHI3W4kqI{Mxz5cyLS>C}|#-g2Lj-*NRX>h8KbITN$JeL5R++`Yi!WXCP~sic4a_w$a#%I*tHh1gpr#O-?gJS-;G z-XNA>SQb@qerzL3KfXQZhr$yP@%^x(?*xCfjciYNYA)99K394ZV|Hr5KXqVfMUTbA zyw1_kMqds>;*@p~?OyS?d0iYJS!xkxVuu1U%FAGeLKfW&MWiv+c0e^dAA2jiTH3SC zkY$5J;lT8}cXuB+nvRCvoxrVgyD*imi!7DE0{vvJwgKW14!6$H88zd%bOR(Uj+~j3 zCJjszF7}i-2lBSwQ-mHoH{u4g>JMK}huJfD0v6GXTiG<)L{oBV4Mv1Q2v=A*RLO5) zqJz=H%ZMVf$+GIoP@dbo8)(n7qvx}8pn*tpEZGfbfB6?+ox1{H%7m-}du5C^K@=v& z>vDO;Dh!_S0vrp)^tyHS1TlOPE%YIqbAz5XAxE7Y^p4!bz@b(uuY~L2Rye2upk||6 z0BKv!TDqwJMUwbhfyLyQnR$*`PW~P^z!i&xX+*a{GxH>r@sfm&dS+{)B<9H5g1T#B zIjIl;2hasy4XveS3mZVo>(!1`S7RwK!=fEb;Ge{YAGj!B*+_hBMB6L#zrc)GJNI?^e98mA4}IGI>4ZORE%cGVakFIVuL-=%*=>ZnT!rdKulXd4Y+J0J zUZhqmZK6rbL|2(~e`0;A*__t`%Y^00%*%OcJz->Mj$0bB@vGk>u|8QG$TXcE zp^YeS2W}D3zqBbhgWhekUtZlN(qoe1_y<4U3-2^hJPm65tul<4DpUbetc}couGOp? zclH#?D+X{n3NPOk=iXk-$yY+U8v)?zzAyT^%H4(^S8;SM_~Z7BjLwuICDX8h;Ee)s z(zvN%QX$GD&%(eV$)ur^TsBG8#s#NgT}FU7e*C-o^^)xkZW0!4NmCaIgd0qwVblTg zTUanK)~U-Q##yKmWZIFNPc@%(_xff1*9Agf$#ciecP}VJkUf1VUVy&kAE>xFl9Sq3Am5n#)MUN-++CMozvjd-}hvV1V9jWZY=Mi&= zy`^*0y8E|e)g{y+=X(38YHe+UxBZVou7YvMSs)AO8&Ua_op%e109tYShg#OH0fw8cC}?tM9o{@B02 zPF$@EXznpl`|5`wNwff!W^Z6t*tEF6^UNEQ2etv%e)$W^u8whBQ>Csv)yJm;Cr`&+ z3N@WT_?Zc?+f9eMkGua%u*(#)M|WrHQ9UT&VY=HQV&cP1<3o<_40+k?PYb$-FOSLD zJLtW{?(6c7J;h0e?~jp^n8mwnSl$vM<8^gpASFu%)VD1?ynm;(^0wMU(n5Qj-79=kKb>H~pME7yy zhmyzT9v(!11^}_9_q5%%47q<hQi zO8C3WTV|1UtNO&yo9*LcN%EYXM-{K#izt6YoouYmpzP(iARrGVFB2O?v zoLD_iuNV7=Tk$=H!gaSwe^39zj}2eTe9}{!=zsWw%}NR^u+<@#Ls=V zD>mDjv((kKF=M+cupP!}bi+3KpF;I}c{sYB5K&Infad_ccN^(*>(0UDG(QXPIuVkZ zrgV!~Of|!xc_W&EE2#F!!ARRCloIhHjTm{kjbI+8wK;g}eDy>ghA?7vAco52`bO|~ zs~%vO<*5R91y>srVI2K9pCFnP6+T@Wi39LC*@vQeXf$%7G>08iq`P?`q+rLOT$x5A z4iLF?8Y2kZEZV{5BCK-&yn{Ld^{nBm-~Y4+xCrW86oWxW#~`zm%3BPCHAAi&*jh3J z(@^FN%DbBM5lmZe2PoAckjtWw`@8NH1Zh~Ok(($MT381d6fgGz;%|$ANaLf-2%&K9 z)+uQg~N;rPBc{D$OkdOuSe_QT{AJHbgeYT8|tA z#PiJ#!1iOAugm9i=rd+deZTe9v0t0Vu9bO4#M0rj!?DLAe!5*UGW0t&Q{IB@#8mM59qsA?p&pyLgaH2;l3+M z12t6A^>%I^1x4@Dos$X~sxdk;w{{nyJVUi0N6T7>_NkxtlY12iwZvgAN+I5x4rs^$ zC52tAOALM{D(X6NvSU%fHNZ}H)rCx}`%Ug=t?FRHZOf>ZEsO6~tVPPL=VsyvFb9zs zaZt>-X+BIAFb6_nx)y8F_JN1!(w zY^K=))$Hms!j&y2_WRRGM(YIr6dn&I)O9!+pI-K9s&P?_o(AQzjz*uFI*&y~d+dZO z^#Dm86?jM47*`s=QRihRe@g=LWaw(?FR62G7Gu6 z;k7nkn@=)Gt`&u#+6P7`ic{D?F*bTWau^o1Et7PnbdG;y8IgL)BXZI3owc{m#V`K~}muev15rpNPM53OvhzkT$vTTo?G_V~LQQE3B? zvDW448fWb5*G%XgaqI@P+H`qT6I?K=e71k=_r@PriE5jq!G^VrTx8g-Q1WYb00bMlBEIgHo;Lc+}mn~0}gH|P&?a(P_AyLMXBLs4mT9+N!jL%l1 z4#3^)_(r`lsBRZAX&xJxD;M?R`9z^o-^{*1s=nt`0}kJyn=5eahou>M?Y+U`DCc9l5`3%7K4fKTs;6QjM+n%Q0F7XT8akI(M5dz}q}#&4og^Nj z0O5_mc(Yo~P)IPK83ats*Vjd1PTKm7Z|Bskyq+K4F1ItSC!KF~dcpE|X&5QC`w?y=%{{I+)KEivM3B`EH~m4^i*2f}XBm|C@Ms#xGBCpH z*UQ**in*v>^9`!k)`zD0XwL7mS^wHE} z&e>i4PPrqQ6=-?k+}t`7i#BsBzLGF436!0eK%qwX%t&B;1u~15kf2h_{w~1lC&?KXta$ z0M-msv_?)9iQr1ntelstqG6DVX$;hulRZ>9wySpa@CqVl;Y$(?^-z`_Wg#Ye(sV5Q zO9Sby*aqSv%0?cElbf1K^QUw3Ga0gBzpSaVu*`^z+d`a7AAYfSa0Ak_g^JJv`Llh-s0 zcv&2S-l08#rLA6Wa%lGNvMeC<_~4@UVv(XXJ~E(k=EK+& zqOxu{(>dKc>&3PRH{-xZ=ZU&J=b20^p96FC~%%WW&RHMo` z0xurGW3y9^3GaQ^Vv)9~&&16sFaO@_6XIsM?a1BCsmELKX z5B*g)=H$>fA%C`(K#5A>VfA%wg+7-%S14)-Ziivv>s)%5{7NA%htc6Sr$jPzfHc9> zrhcqMV3NmBfAwVUdw*3}7N=k|r#GoKgu)$>H-AO0(exHZ_+#;M_DHspBykvG%UgBr z$PveqaN3I&qlg%7axGSjqC5+nQe~|p_`d*+597l5)v-Z(6-|?^Ibsn?m zEuNLi$^hd~aAUt;C01K6XCn+zmG`4+mC6vd8t`!3Ipu7qeu`)5ow?M{mDgo=i%_v@ zJh}z+Qci6{{Jx3OC03g<5wQ)VJ4M==80#_qb)INARSH#YM+DrmWN^8Shc*7XSh_@|N20dAPlH zv_((LG7jOsaKZQus`yyqiD_D11J0XkB820Vx-L+m5edHTY)|h98o@@hQ3Z@n-DfNw zuM2ZspqCyIJ6AOMmbCPPfQwLTO%SmQcCfGb)&{yMAVP*)w@`HYM@A}pAZIp`fkx(b zEsm*)(76H)MEWJFQhK3+GL(ZSawQe61^ehm_iH zVp*%q8|we@z+mZe35#hihINh!6!>dgyj=cT%`bk`3-2_M9A@iF)-s)Z-Yr+v zG3zepLLr5frSIw;onmK7gU?ncg0lxs9CFSQ{r*MM0EgSjen=?w0_9MEQPA4t#PY}%R|znK_M=1 zaDRsDcRzCax1v+Wn)e7!%lCukP+nBcc}U=)v;x?!v^};Z8cKeBTakHW%l--^s}88292-??H@ELl>Xka= z`-eKVsre=bHA|FwBOtBEUaxJUp$W!R9h;jjaIaTZWu##-Q&b_HJ^RLY?t&g3aw*$o zwJk8DF?`(SU};Wfm0ogVo$4<%T#1yfl9fn@P9VZ>NpqnygJA+qz~t=MW^bz}v{$ps zLzq_3mF`^bsr3H&(|!4Qr7w!n(HqixGT>>`_PJ(j;i=!{vUB$#=jP4qjTaIyX$m+c zNp&7j#Sv7(7kd^dBgE3Y=@tA>u32GP(ge5fe1aIPe+@@-5u5P_Q%zP(LS@XwIauRl zlm*LkK`IS(D#7>h*)UQ^JEie+nJ; zRU!%^1r>u|Ygsw73r-&Hxn2Bcs*1Q^lh&FHMw42jMia#czUf(gGsiGl50`=|vGpFz zWF`O@EG`MbM?ZEuH3U-FMJnv+?lkSuyXiQUe-a#NAW^}xk>J=!Ksi`%u(2|pbJ|MEW-9x8PHRj*?R5jX5E8*lcmLTKfP$5!H>%at0A=fV90 zJC1L)u&w1fC-j^L-jXnAfN7`3mc_igF3cqRM{MkGh<5&VBypE(qGNx_N8vSGi$fj_ z**6S6Cw;X+^{19M@w})AdB?uH3KeQ6zG!&lN**4;+efKRm*(+^?mi-ZXTOo{(fzOT^mozd154>iQnbe{gK9GESxyNpKxH!lJjZ^lK0*yblB3wF= z&5u-nw7r^nY9fKXgY@fxFOJ8kxx6I! zx5lKxE+4+X_{0~Hzlz+mLn@&*89)I6@n=)ODm*z;5eS?~wf`nye!_LY&uzA6d$X zAo6bE7jtheon1KMeY!Qb+#d#f`u2n3?2gf&eeXKgr{&16D9-f%7&L!cxz2|@up~z$ zghcx$_#d!Zu6|UaexmbwT-Z}2P#bvB^R=gzVer}D^`o2JUv*MiR%+*oaUW6{6LRA6 z(tW>xg`#SLqs`kx#K3REetTbW(Abwj6d56rm5wn#w&rA|G`8>RJa~+3E^7gRml17a z-NxSam?xob`}V;e7Nu;aN)c;U?jv7*`ADvj>w?&{EMR2k4leHgX4^M+BZt5D-`cnT zrTImVwkPEu7x#aBp$TL>n@G!*d4t1mv3(DkN0lPqM(JFZjW_rt$=#OO5RLPJZwe?{Qjh#r2VS!=otCt zmz`Fr-|c?=HuY-=aNPBe;+qq%bN_f2UgBxBnEQQkalB{5wYB_FQ#Rcg|KlV&KKL55 zS?EY~-+i=SZrpe>x!t8rm_J5mTt^fp8Psq8gO%2ujLYe^ZJCeVw+R?5IvnG1@l47W zPxlq}XH%i2G~>njud0kg|0;jK zKCce+-yS|*i1-5F=$)k~s6N1A#rM9kc5I$L&ZbfVq1F@2{PuAxv}0mR{G+_R&&ZM0 z8%dD+@o&A!+p=xo{oD_hgAFze#hDn=s%Fg{x&FoLeHBmVdo=AXMZk6H=;ura8#$R4 zYVETwFpI;_>E7oaa^xA0L5ulisV$0L&YQ-ghfVq*%`EK9vnUG*C*raWU4$z#(cn1j zB^)_dceJcbRzF>6G-eflyU;{I#S|2tW z&5rCMdK*VCLJGa!L) zc3-XH!kE{4w@#P($vo-|ZFJ6*m3n^f;G}43VcuYFU1@6rH(th1d|>cBwcw)fl4dwkRX|^A(%+vDp>I}lAO_qJ*LXK)hF8O9*3((m zX6j<~26YFkZo_^nvK7tPjxJ=Q(P#!dX-)`lP%cQL#j|M6%>)SW;~mNK@;7RkW2Rfr zYNyPGHt;e{_r&hjV|5@x%bH6AtB?lzQ%-q}vH31e@*6};knX>(=AX7d)b46`V94Jg z`k}p^p5@xnc+xkA2zjICuwwFl7a?Y(rm)j{1rLx8s-yo-`1a zWkg4apTc034ziHVv!n{Uca4bZ(Sb6PitqAa*@2~tbiu6b$E_t;IxSh^d|Yrfri zBd3BzolgxgYrFH^l-G776S=85*NLh%xD*BZDdjTyjQL_{Y-s8hb7fZAoa*6Ro|yuY zn2$!GRXKbfikGW&qf{~J<=Vc5h-^;?FIS|`^@w4N^t2hXj}(j|&=U6xMrhJ<&T1Xm z!Qp!r7ez_KBBF8nn`117mH0q&e6VKTEGr3r+@kfG^a{)5!PK<%DE`p*I$i6XP#nxV zH99o}MSYzH2Z*98Vc-LD#(1a@O3(k8&!*Hy4hWSp;`*>MgwFP$>8YDQ%#5TvilS?U zXApmo>27tzZvFZr>QL5Bd~s@oR$ky?g#-YzR?>f6siS?<D+e zmE{P9r-^YUNM397ocz3guDyhOC8PkZi{wGrToV}asYcuK0Op8KnTDoSAV5bz7)ZKt zbgevyhl`gx40L0dtEu0gA;{51N`9Eeg3^vXK<3q1M*l@jBeyF>iwKfIk<%Q^Oef9V zE0l;29*&w9Quh;Ka01q%i>0v}k{Vr1!qJMX!T_;Y)p-b=AC~$%tU#J0gb}fB!x;4D zK%RK9Gde)7p@PsHWf-s5QGBin17M37F${+fjA{}ueJLDerq15y zjUsGTAu(@qa6?kFd4raXR4(hokz?AE<)Ns?vtN|ZSfw1-sP=8e^}V;u>cf94D`4!9 z6WnMkFYa?#l9fYxC`690WE8+Z(*#@52ei# zys~MQfa7?V+jM9iYq1^nS1e4`a72e#fk=oWw&Ko=%i+oWu*R%zy{;-E`E{tI%dDeYHXNq2gkw{c)mza0@<9`saU zZ>-BR4m9UO1xBxo797^@ZM>Q%q!%B~*S?aVZ4OZ*9aHfZtht8m<#CH6Yw@u4bk0q{ z$H0#BMSj__U1x=67^$yG4h%SB=wfyO2ECm2!Oq+-fW4wwnU4WCis%TKIgmy+UlTUs zGs)op`j9nxQ&U4sfYgh=K&1Wqb+0^|o(HM`6f3{1>)ExcGp};tj`*EXF|C3cGi$i! zf`bRBS8k3AwZl2GVj?YWMb!fQe`_oZu zyj@<`3JrH__l3g<6jOLFcMN$uW9-R=%3J5)4snFXu^vG=V{bYyg|Y|r%5C0cryA;B z@z(v~5yfKk_EHv#8<2ZLuh-mU-b^53nVkky$}2fZ7FGrv#mgQdxIxDj)&FulIVhZc zY)@5CP+NGz7xIha?j%)pgBb6Y{&?GtDxjM}i{e)h*i+SR@Ce%KmP)d8Zy6 z$AKx31?a0i2kVk}j49y0!dq`3hav@#)2n1n9AvQBjdwock_n^8aC`i-D;2sz3kVx=@0Oa{Uh6@TT%O5G)0aLSU9jQ8ez|ADiEq6b%t__lGwkq zn{%bu)Fg+Z-D)VQ=q4b;W@P-i?mxe3mXiQXQ(vr43)OjVvOmpnhnvY;<{SZAf-DN5 zc0!eTeY8XmRN_@^w`n`Myqh?U4XMpOeAikhJj+4}Wy$Hd-(LLORJ`ngDS$3h3`mCH zsNEjt^?5%d*X`Ki2`Nvp{64h%(zu78yFNjr-JV{O#?=Vb2lvav=xyurdcw^Nw%551 zh-)N9(YU7A_6tduRp!gmI7r*%PekAv_a|1#hl7$o(=KY8!WvJSKl6Q($Z`2u$~4DJ z=Y=Z*SHA4wj4o}@>l}2jJ8vbrwkUZS;AS z;e=z(tzX?LV?R%UtV_b*O3{D69?7U3b;lT9`R@U1`}%b(!NtWI5WOKs5 z5zYL=QXy$y<@&6Q>&~R2kItkDm1<9$Rx(1o#dGW=zij4Tq|w=+WRZ82u^mW%8@}2lA}E#N!uZke-?bNN3_Ipn|T6RP-4)XfS;Blv7J@h{#a_L z49o8*=U_QuVPJWLdGC9d5#ku{>@{9xQ6fpuIls|~KUN7WHXV|mMfEJk?LvKjb!=la zD<$jCjV^bb|9#TE|Fvt1M0%%wRE#f`TzyiM{!I4a)cYR}Yj?d$3C-eq$}U~%nR?`1 zqzC4tcl8$S*AEMM_1V8)cpvo3AH}~ktXRC6 z_-X0Su}KHW7*%x9 z;}f_5slr0hb2h|Cnm$Tssb5y}Fiks1ze;Tr8n)+Yq<~#HDpBZ23s33G9%Cg(P_6!kl7akr)SG;yF!xl46kE; zGurRTk%G=2r*!-7ZT*n7mEY?vop!bwmWf-=Jh+UdXb|%VD-ojDb&tb*5 zcHgklG%s41rZK$a+fCou<(K+mm1o3})2Ch6-v6Vc%6VysMcV%Twpe2pvNDlGN_v)7v9Z z>oS}K@;q`is}W&?M8IGZTcBC=CU5-W;?#yywFSyEh8bo$l#dFaHkO!57Gj>B0U92~ z5d9!WFsL4iWZPq#br-=i5|AZLY6!Y{3KbDgsMiN>Bx669K9$iXYF|n=oh^j`uxD|S(Vykar z^UKi&<8A-t+I;{*dD2e^Qm8W`#w3)OF!cgwa=GK+!FBiQN+Z_H5BMgw&E;({I3%>l z5uD|_Ezj2aC7*JPQO39{#Wy2(tsL3%>*2WygGSTfdBo-A^oyJQf>cIU}2HNo`7b8Vx4otggLmoA7%7a`z~=$xDTngSduN z3%;|uLxZCYHIs%NFBn-*i$!WOZyg#wgqKOerqyabC%x$wCJ83o><3#dTFjZioLSE* zi%seGiN%?NSNY}ZHJKS_5mvzJ4`wJGVr&}XxC}nne1)`o)3zFv#P^MLeG-ur$GKM->!MFB%@`Hqdv$}vu z^$Qfh+`=qBoWobuU^;5Zs6e-$e`mt>GRJyv)OkIe0eLAE2j~w#i>h*J^*_Snn4ROa zih*6WMd8;STrm%C|1hW)%5FZWjPed|!_PPxV)p0bH3$|R)G-hdan%CK^n4*1TsLfn zt_79)QJ39sD#vw;^q;!#^%F{v0@~%nYgs-pYf>e&W((l#I-4}6(j?}7#qVb=N3?;9KR z2MwohX33F76=QHkPnJht`5WCx7K?-@&|;NAF#y(e3z zZ1kwS=OT4HgSjR7SsUjT+~n?w4Pwc zJjN^Tl>m-B{DEr9EemN_ZI@q^=D~g=&+=1kk1sUYEArumg+0vZVe?2V+mXJ)b1@li z4r=hj=ABV!>%|sva5PVJ2qPirb~Q>})=+{QvQ3>Jk{}v0!S}tFyn`SEe0U_=e_{;a z|Ij&{=58u|X#O2}(JwMGt>_fYoh3<(L&U1f7Jnc7`*fV-!RtTIfcJg?wl1gO5VrDA za!A^iv`Ggg3ujj6`cD}!QRMEYwZ2!~N7IV86=k4RN3%C5H4(}fv|K}+aTGv+^|PxV zikA$E<=TaPQ=`F^n}{BrIc6M%S~-sJ+&F<#Cqz}_q*)^8&fwH|QmNst3Zvq0VHj~g z{F=de;D8a@=YO@qPF@LCT-@|~z1jAgdn>p;gPW_irX1=^u-<+v_<@8SJE#nu?$;{t ziMz5xjNB=$x)6J2!fj|Azlv<=4GZV3;6A<|L?3K3S!*eS*`148q9LL6T%WGtt6QR7 z4|9gX;UJ4AqA7?+l4@18YQa=82hp~IT|lou_c_kQ?PlfG6s59Lkbjgp;t@j2=w^{c zKm(y<0yF5-KZp|Cmu@N*>kT(I$=}#|5N_5&65qM8bRAaPy6;h15OQ)}6; zkoyy!99ted)$<6LdoqZbJGl8x%HI0gOM&(u7Yq!ZxMLj17Ipi(Vqo!Y?*V1fL$O5; zOGAutH`G^#18Cu{4#NM*eXf5y1O6A2`5!UvBXyS<$bQKKWj=!}R%zimQ1g@dwG7n! zl&v3I{XOIlIDL)8!`IhSNS%b3nHx~e;U9w#A?0WEI&UfHdzmF3(+9Q~fL~mFWIpqz z^T;#OuRr`zMk{?cqSJFkOt&vPA91L)^wo*ycr5TJR#2n7ao^PYLYAY>Gy*fb%f$tC zC?W^c7@KssrffENUr<%Fd#(?9aHVo}+H4Z(6vQ{445DL(q9}5;&MNns-rYAnK!X&% z+q8Pv^k;79<)6KXbp-UUR)N@kyh0wMWXP?xVBnVm%Jhzf?}PIoC9ZSMBpH}`srq09 zZ#0@Rlo+WOH?21iL$JoW>f-!9N>j-upcO*~`8pgIV9)(={KwD~li4C;wrRf9e-JFP zXx;7XQ1xXi=C$ZM07gd%RFiBFH+F3uF6YRj_yJhdnL9(v7OXAT;T`er{XsW_(pdfn zPNrJrl`jrI{_COi;Q6gyg}D9gA8acpqI?Cv`rQ>cOKycVnJY4lbY&NgL5UvrQ*jLd z(4_`d9}Q?PjTD+f)~kar6DZ}!@+^QGSG21kUBPwgxxbDsJvTpSW^0o9$}CckXZ=WT z>O3{j)Z<8p?e&CDihFOC+8q-?EDlg2us3xgjnvyNp`IMqwfpLl^}5TxC1ZhpsD_}} zp?O@0L4FYC589fP)TwOyC?%Z+&4#r8&WS@<9!iDF>A1vdvQW4OE!`Ukk{xm2azEwa z*C;gfqA?$~RTvMYp1Z=(#ywU;Xyr4ME^Mn~P^flIli$vyz@TP_S#N#op@O$1nR)%k zl>}B9slFfqz%T#Z8T4D!PR(nTwm{^Rph$+BkTC8+Y1Ar3nC`_t!XFctl}Dm@{(YVn z0copOIX?dR5pLPGN<*OnI}1fYC=il$BJUVXVhUQjc37~c!E$(bUe_3oKQx;r1*8bq z)wFci@jZ_ilBhmeoD z0IP&vlUqXsc5^x5j-9fo)nT`@p)S7XQua2I{b#yfqrMR$ww`-!A9wi45>hO0A3cWn z?wsD~LoCwf?LS%myi%>yZuNUT6qPeml-hCeS80!aLUu9y9I6Qsq}OBg+tR0>dEO;+ zyii_>^d18aLE9{=DT8np9}93m8ZXuZ9P202rx5(!W>0zLPTbSi5VkB7DZz> zNG(kA#8Fyxa5B}GPf4P%n|CqpH>o?~@_XN3^Af$^$lyR;^qRmZZNdmk^*ol!_73N* z+Cqo*JQ)E$`fcwG!OCfePuiYE?#PEq#qJSJVzmW)1&w|n>m%U z>KcPxLDLKnW417|2d2-6EuV?S`5$&;N`%%Q<@QMZLvDkTT353Re>%Hrf&mC1fMi45 z5axVf?ym>zKs$Y_oW7hLJliXb^gQ158ql1oaK1zm{qVA`k_-uS->$QL6 zw(fEYX{1w;2XoHh8r}je0dotOx01@7&q3vg$Y-(yy=FvwlZpXL?M-{eMxk+@(@Xav z3*Qrnih6b;*QX5QIEa`>*vR-WOWg%G0j!lgJvZQJ*y_z{l1@AX@+)?g*0`LRf`HpApNDA{Ge)It4G-pn?&oQ*}7^rEtH^V9|oVxKS<<> z8L9a)zL@~|+8mZM-vvEen-7zdmU;d*heo|-9bmoN;0DG4%k13({dpK5@i^FI`*7oI zMq2Wgv$iXtTbd4E`V^=91szA`z zv+e%rH(gtUvF2IoF;(>*h4-|)vXH~`;Mb8G>7FY$TRO%+_{RMd5xFYQsJOzSBh5=Z zjR8N?8$WVhCH^v*ehrgtaNO8oq0=Mi1m_b;wLU8h3#pP*_s zKRt$hL%$dcyMG<71LCExLM{6?7+&n!Y?bDLF8HN{AGsI%mvDP@7Z_4{q zCFG!+KX{l9n%hsFb(#n{wDH2HMeDOy@9dme**OsKeMCWDx+$f`oBh{6BmU2c0C`lQ zr2QL@ri|H!iH-izfz+R5`+8{1N}Rcj@RmY4p0?-vQ{7WRseTFgHN(t;no zF}TeDnE~F}=6a(p4(Av@!Q(75m*CLD|RW(lQr;rkYP z@2HJ-CVjRl9(gt{R%+}61u;g2Kx?-+E>)zas)^n$csFHG<(cVe2za4!1mNa5QQqqA z8IiY=IMc&+H>6ZcW2y^v<>{a)Cer+`7t)Gezj;%DN=@pEAsm>4CjtLyldaRzA33MK&q80PqZLq3>` z+eq@6ZXkg~wRGDO-zNJc68G-8Aj*Z!r~565*pu%ef_m?NGUUNmB+v;|iwOmP>CNLNY()LdaKY!AIQo!lh%lCAA z*M*kU7X=cfbQ_b9!eNfJW+qb|*g-NCN{u;?4iUZ)F^)o0oY~U7+3UOx(`$oz_y8x~ zN)u5F(kn==20j{F0fd4XvZ|sBN;;OM>Lim>*e@wrucOiT-al{zLS!e{Wrs` z8B^rLRDFcruuLqDd$O#@@cn2BN4NzZ6cxT)o<%=cxha86=5$CksTOYH2g(@HRI-{% z%rZ8j2tc+P53ohSQ~fS)U|imUuzP3NT*hM;4wgC3vDiLIde=IROphfbs=KqHHDbI- z{rLeFlD;hMfwc(#uG`>nb~I#=dVlc;t84zE#cCi8^M!icuP!I2CL0Qavn`<_26*@h z)!^^}bM4`PyGVI~*V^_MP}8hEueRU989b)6!Tuxb>+rO5t-h1-D;L<6#o z&DrU3#{YsvBYVtk=E%hQj^i?Ge#DR&jWiT#7_ZM@Zdh>(4|&ly!z1Q-=R^cKuuP56 z9mTsncI6E3_&(KzwV)VFpJ`s}KL;5^jl$R=gGSXfJ3an|!b-S?d*45fzx8Wzu%{jU zy({L!y|foCQjqlqWxR7Wp=qHidds{`=fBvM$fk($pcOG0P0P1{r{*Fi)PdXq6qoOm zk5*#Wp}z~F(x{Mrk|fNsy4WOJ8=16n8L2=I9pDu2XbA9f-e$#$9~NxNBuF zkGHNlwq@Xjt`zt}mX}_Q4V7aYjxyPPC!bHuV8WBOh|n|0cr?c@#<{>2gXz~|i^4nbpBZP=JjJIHV?NZ(t>*}Vij?+~{XrDqb`7ex(%p zTNq#4Wm}z!@Xy2z#0U#JvHPs$%Isbl$ArzH(s=n{u*8n26mEJPgzUrA%c_=e(eyzd zObba<`c8)&XKB$?fRFg>YnOt_^Y-W%fml!{9%WuIMP9tm@r`wZ@iuJsTT`|M-Q4YZ zFmCVxVHT)l=J{lfh+I7^$)N#oc@daViwVX(`Z{be zE^hJlv4HO(@AEuD9}LD?UWmSbb?Y=w5Pfx8m;G8T44w6}^ybF8H;TBP zS0Af%dEF6dg5Gr!0j0<&RTP7D*C38CRJE~NWCP+nYh){K`HoWG`1JfTfz|bCJjvQH z&ma8{jbj3NFiIWd>J>1VR8YJ|mG5{?tXfZDRvQ-iwe2q3-37c|MbY>uT{Q$Bt72Ii zx@+>{oYW$OYS>L7CP_J6JmT{1AFbs1?`xG`OsrCTDKQaMB8^C+1p14>u+^QYWqdka!>hKYFY_ zFL>&iSTy;dDEWMHJ?OLuP+lXvkat@$Y{3)-Z|%Ijw*P#X)xi4Qv;o1BBo_0j%_X{Q zdO$PbN))gk3y>w)_6)RSme9t@!nKMh2EdHPN(zz`K7^QOa$00I91Lc^<)NV-1G!Jq zImW%?fNNFwsTJO!Iv3&nECHlqAVm@Uys0I>p<34}(sGKUE01XvQ;HQSV0(RzoVY3r z>6m8&bXb2Z+f27zdQnAQ&<5CBXW9Z2KoS+md2dSD`f(WByf)APD6=+m-$C5-~`gpP@3SC*w zKGbM@b}xe39V0((;bb2avsK3?69d$4i>pA?(d*Xj+J3AnIjLjAbsIBFiv^7PurdOk z!<4_5KK};N!BYiP(2N}J&VqO7vRlJ!>K?&smK49shvD?KY1{IB=G{Th%GnKS+clWl z3}l7Jen~}Fg~wTm}Weg54(?BuH(9J#P0ZoJq0j{>W(Ke>6* z^ZBch_w0f5`+|NP?*8Rz&n~X3T{CLL1|zNq$~gktEPzU?Fo{VSF!4Y#q5^1CKffw= zB!oWkseP}&BCCmfG|ct@Y|Wh@EC7ea)7eyK)p`n4TxU6G1 zXE8VUW2+2~5)2|45EBQrhS(*Zr?iSRK6x`lJdd?PxR#f>42Lt&6sH`V)~63dIsL8& zz^b<4I$qrN&MlauU`=XOSdI`W*3gyNgaoyFYS$YH=;6c3#5TRB_3vCmQqDg#q>1#1 zRkXZbA_V)TFeSKa?^cjzrMihsJar#BOvQpS!r!>){pVQeR#k%H20XM6 z4fMsaoy52tJ`J3>)6cHy0@4^fIEHGN2sYp7`vEB^=hkw8ZL{*#@m78HT!%LDUD2C0 zwpMYjjv70ejzLL#Ui+_wBO!~ve~%PeETMNr+Pj1A11={5=L?;b$%Tp?qQ^C@#6M7@ zFOgX%JqDy<`?wRYX-(|>6WacP zXEPZ4FR=sVi=LZxZ|W6)fw#@ER3yE)2ign&Et*~UZBb}@(6kAi zjCc%i>_l2hXu3@^xqdgndz;ZTb5XR>Gt4g0R54vxB9+o$J0GGW8Aa9}{ys)>kIsDw zBS!avJ@nZ618a8Hk8LAN6Nd*lDwM}e5)T{b6i3 zXKE#Ib79rpkea6Wv?>_}8S86))SXW$GcgUCM7r%WalO%*_LQlr*%Ft~6%YwFf8247m8^B_KUYj zmvp9^cdwi1Hlju^yVgbVrwtQBX_F~?6PlmJ{#2uBOP<|%WBl&#Mbn^Izccjngfz_`Gr$*`Xg5121(-t5I*K!bR_#C4_b)}GuyKL=HuY7AaaeY|k1 zO1tM^I_Zu_!ohACXmR&qvb@bJA*k=W2!?CpJm!C5=43ZG=VBy>k%r!%^hM3axb z`#wDwA=(InepKJbmZ+ejrEMd3uS@GVkpd@0SeRy{drD5ngHv1))ut!T;Nke(#;iuCLrMs-A)j?CE-)o z^rL+VgUv@Ymx6fvKe%02H*5De3XpUTqk>KgH6yrI9u(dSD*$@kI{JW-E|rWM-iiS_Up5b?Vr`Cf#2_MzhlaI;X%EQ}fi z6KZm<~oCy!k|E*xzngOZ(0ZmRYKNIZuU1F!D z>vkOC!`Ohi7HkSsDYg~zx*Taex)+JO>A~oPB@y7=`M=gzBI;XoVlr zoFhWp3)3HSmkl=^;ypPTyOMO~Q%~-$gJ_xyw|=ja$d7MHh1AC6!=SbCk83Bz!P|+| zVxOu@sQAG+v~b3xKD$&U6G{uP?mlg@Ci8~cMyZsOcXJ85hO4Oj=o;jwYeRDzYQ?h4 ztRlP@O5KO`SUGi!7X4K4wmF!cLNbu6eHP2J7O#$gPiRnA6sL$o~c=^_w=aqMAB$J zxA_@3U0*dc9L;a*<^itp{ht&2DIr!-N#2~7<&e3TEq!)LEj%c|HQBhaG|CW2^e!v8 zFWRqVY`z%1miX$Ue`w^+Vd9;jd_{PkMg?v)DL#}GYge!s^7M)#ZpVIotlNKS7N@dr z0DZ=Zd@5c>N5n;|ocRv1)kgY}4Gf0uw9IA`p#$D) zlWnZ|6xvWXncCKCMXJAG%CvXW2m5kNo=4E8^>&)cr@6dfy21R$)cXNkvKe$fo~P9^ zWY%zhrkesOG%#W>c!jrehRAG=o=KH%H^YF)$QSnbpQlO9N)n=k(P9j1Eq#u{s{ zG>0#}HWDNrRh$E(fyylh(Q&f5kDPJY4#()DS7A`Bc}XfvA|C9qz|{1F;L=+yQX<%N z?84=+9X4C4wYBf}9B%CglqzN@;UgwHa{$ytRQCIjEKUa~xG_=ZMK3qAy=NjI*xb3c zT=xcH1h_8#TUz~Mbk+`rUdLTJNxl-=LN{gCzq0FcKubT7>WoxvctLTv?Sau6yM*kn zP}HNPZ>MRv)x+ND6-(z@g^XD{5^+)$dc*N%iJ4 zj;HG#ZZIdk_Ut-2*cj;F-xl8e%`AZV5||7x@OV{ZyxugjbPZ26wsQE z=I;E_KmShbj-E8m)cSK(xzJt`Cr8FTx?eWeBj61F5gjkPUpp*Vr+p|Gb?Rq#>5h3= znOEQ0Qk`J8fXve;GX|p#RpFr(xH-tqK5_6JXszAR>}Te=cYZKlyLQ(_oAdnTtslvE znKv)Sm-B{FjE(IXiwERFnG7UscSK@4K+zYVD$AVUA2H68 zh*zOU-+G;)G9bWo&QG7)!R?+Gi|8$oA1VJ~&v^dUg|O-npUZ3hnCR zf$3sB##=AVzlTc3oT?eq#Pw?VMP_!`KldENL!r{)dTPVmq)iFLtZbXzkS6%L;b7u` zpUam4RMxrzQ#U*zwm%0uaxb>qUUdOX78CaeSMT~E=>iftkHy9v`FO^CfYu2*$lsEx zS`OPa-%865iIqltB46M6y5nC=%`iz{oJPC2#-%W*c@?$%+UY-|^U}O`&l(A~4853O zVzakFnLaO6GcXRg$@l1nu08aHECQxTeQA;Bf()E4?^fvmb4dNz7^}YHW;AC40Nhv# zSsZb-XhC|MXRW=HHi;LH>+_3Lw8-ejWa1g3r^_Z=7ku#9-yizV7O~=VW5HJd${qc3 zRP$Jf&E~rF1j;2>+ZNXW(JiFp?CoFg?;p-T6B2wx?PMoufMG4~K8YdKqQBsNi?1Ho z`IbBXh0<5eUu|a+(B}+sb^KBy+lhl+3*HiVN5n@SA_Nw*rOInA`k9)i@o4nkbdktEzN zq$r4va#@0{Cqg|$2xgu+fE~AD$E*PzVZuDSsRAL~BwpQu#hk0!;%HFU8{~NIcwf-v?yEnE;MB_FsAP6MDKZX8y$vRN7;2+$i>~OH?;d*g97WHo^V)N-Zk7_ymZT<=gs4X-F+e;C}1@_?f_xH z@uPK2z7+7Lwox(kR7W6OmyH1^^h{UH({x|CO`fr_@e{*#?qsGEK?6khDTJ7MPG%W@5qU-gsEZX zbfT&0{wk3MAAL6fq0+c~6IwLGKGLYJNnvAS=MIVh3#+~rnKzrxz&y^xqxK@&T@w^y zm$uFm_>yQwcB4nb@Je8<_S(%Z=1p$lT*jN;2hr!{%f$HTo$cNx$uqfV^VS}x%TkbE zuaL5~Sh65zQs-ed^8*cGT4;{^LZJkH=U$dNqTee#Kl1uOv;N+WqgK`~HET5rZ$2Lv zh~C#c&`@e4h-^k02^Mkwn&#|Wr>3{fHg1jK=;HU|%~|jAgTmMg_nM{1xxD)}r;vI< z!TP8OYS+N=xq3XP!PBMN+1BOxF!O`qCaG$oI%XJQJ?Qg{2G+P?v{o@mOzasiu~b@&vt}9HL)=}<+Gt2YQ>ZZAR_in)vDxotNko5;g+$F5$W zSosV98gZ|^KqHGdFTk{DG$OG-gd$3515Piuekd+B##+UlZMs9cw{XP4)@CqcpQ zq`XdCEZnli!ErHCLNB$>Ey9F{X}(1#jd~gJdoivfddz+^Zvwf&q{3_G(XP90gq`?c zk1PL_JUh4hJOc^8&$(MGoztybLOgVLtrZbHE)nC0Rm(gb!|rgHJVs0A%hhWy41771 z=_QV{+!iw!#R)@Zk(_Yj#Y{&_3wGY%3m7E?#?*6EEW7fCWMTAZpXplNYN%d=L@O(> zwGEKG-?^_z8~^Lv_iJQc1jDHt{*+dC!88<@a3dor))0||wgwG|Kw*%*QpZ!Obijhu zdGxY^1a^tI_j<96m}cTmVut3c{5p8_HiYj%UUJ_`?wx=-P$-Y#bm#``s+#W#Z|w+g z;|%qJot_*9lGMhg2ArJ!IGPEMPOYL3ViL{TjVdy%AmM4l`40`vGA|E1u6uH5G3@$x z*^!53sSeUQwjfP9D^1Z`%kDylO{kjIOG6yzd}De8eBR>z-DEX{te4(|^J1!FAdUv0 zbC~vbgg2GbAHO%O&qfQQ>#p6{>0GFmAuK%ni?iCJY%}&YvKh=Jg!j)z-*R#m@cRcl z)HR*76yoXzNzLawDVqgdUONRx@Ckp>_FTx^8>@Moi)y%IE0^YO2}+^WqQ{terG9Ra zH`OAsCZ8P@twHqECc$WfVv{pueru_^9QWN!L#jq2l_}@_Ql&zrDIE*p*x-q(;bzi2 zHon?WAL>J6>x8G|s`;9_r(#dpI;A9RLF%iEPQz_KvY58{`uY?Z0DAu-G=eHaz7u7~ zVw!7Tjtq(#iAAFt>jmkOyz^Yrc#@lYVWigsAe3+Q7hQ~qRGDsO$oqV zDU)2ra?>Dmg));mPc2mFK^}r=WSD-9@-oG7uJ-sqx~Nv@?IMQ6pkvifB^eWLm;i*8 ze&wN@VTAurhkW!K290ryC+eYz>wb0LsTdFtd9Q-X5JyyH+f&^9b8 zHF+@8r#iyju#5$oaiVRI!$gV)Q`5|(1OY7<9tMT*$X!X|2%GQlMup?WleMY+H)H5L zCCu5!#AbNz9eS!&}*&itn=XkoP2+Fo`&D#!60Fr zhPZ5i4R@kL+}BfM^)?q>VaqY>mhftXG@`piiD%T~O!c){E73qbjNioH-xgPGnxmhC z;ql>cIGry~<@}E87@DxUiC%z}-Oox8-AeTH*IPCGcn9HM>);vy7SF6uR5iT%PI4Ni z27^TirA$+yC^sQ<8Ml=j()DIh7v~^fFPFZ9?b(5{Nd!dehjZCE*0F>uRZ_pTbw`sd zA^xpl?Gf(aO2we*YMKK%hY?J;aiJ3Bd*@Z52q?Wi|POGYSgaIFXPvF4Gf> zUOHl%`xOfY&?L}-g;lhVup^5lzH-)kv7&Qdsn_IQ(!pC`22IIba!51(g)%l>ap0o& z%jb=|=Lolb0=CK0;?B!-sX0}~7Ks)o0=xB!4Yx)YGiA<>`%L|8!;2?8 z$Cyoty25ggZ{YwcQBm72)fv8xa6K1M(^|z=Dv&1%_x4!2J~}52*=esg#k1YQInQMl z%JBRKY1c4Ttf1i`>|l%iG|=n}!_h7s@Rpf44na)&A+FUu&>S`01m3WCPZ{qb_BkD0 zufKDROQnSY=-h+xtdAk~iKpRuar=rZje|?A9kH-BDMGJLY6VM~6|1EhWt_eD#f@F7 zC#&7?cM!BAky=cE_8e1&(J|zEYow`BsnTGFVS>z9yGwGMtg0P+;h($48nmOWCk{5p zAyrU3a-P;6K^+v64CxpLKtoWe)jl*dA&rbiPLR8{`OXzW-IS=|bhLi95rCueO<;r8 zgJCKgIj9D5%VyW*(WFiIws-<-k%2Qds#zXR%582{% z;~ch#G6>&g3VvbnSTDqJ6>)T9Z#=eMvNP|z#MACLT5*{6vj5X9*Di%QQy;Ikd^D|4 z89qVd+db;*DTK~yv;@f{QDAVrV|^5XZFH%i-S9|`H2HFhY=_YI zzutrcrD}3Q)xj6@XprF%P!*!T&DnJBlx+^33RZ_A=yJ7a3ZVfhkFb7g<#6-;oY#7G zpal&afk$KHPQ`y3R>LxkmW8x6V$mEx!F*r0hiBMU5z)#HaJ-0cZ# z5OMu#HO@Pu+DZGu`jf+8>lWQ87;4DSKWoNMAMh28z)THd-{EUA%zyw9B-3?wyX~G0 zS%#9gZr}*s2!m@$b6l9En>5gX1OsYht@GoPu+@>8@S@PF$SC}B(M!o84;eNQ+o`T6 zws^pUb{An-dVXlwuw3Fi`NK#dW}aFhe_3d5n7*iZ%H50BdY(xz ze-NxXJEz$?+3t65+x9%?HFFdziBX&+7^}~)TF6uTD2jU-zNpp{r{|(va`Y7IOi%rd-ns+L-$e7>&l2OWTx>LC5%4A6XR_V(x?S&_YJOD zqIR8ctvm&T!?oyQ=$2wBJP&{_^WxR-GXjQH9rJ&agaK5EYjwtaY-rMILS0;7Z=rbo z*<8~shE3FTeFLQ7ydtFUZ+>U*u}xRr*pt&7254KoX4m@8S9eYa;2{(Q&txeib)c}; z)?@2y;}3s6E+SuBjL5J8(slsZwz|NnsI(-U+ZvGthTWvmOuc?br}C$LT!5#|Ug_rp zp&9ijH(6b;?-0S8bIde08n&cn?}$5n@0ELTl)DOFn|nnVLCZZb0zmOD|FzXXg{d<} zKk3qe)t$dxC<>yTDrKHfl&l~U)F8@UuifvsRa@?L!yhTamk zARKiAFD`EBk0s&_+uVHkaxh#{f^6N^<9i+Cwd1A&B$!V+?^C4cwe|!-Uc0Y7%uU?! z#gVeyXkWv}K>mETOGFArcH*ZV*OWoZgl*0izhpAGZy|qY zGinK&Qtu?|x5f?5U!v=mrzdAaPiy307gIl4X^3GGZ|Pmdg)FIah2=z+b0Y_9H%0hZ z-wyiNyGDQNQp}^yPqV;y^!eT;-s{f&+T*TLn7p)pf{Op=#0Mj{Dg(=Bz~)iM=26H$y~XR*~z3S_^ZLE#`$w@S5~hF9y$)r+`(wCRRy8OQ(B zL;mN3fNaDCUM^J(`cdF$8hi~2DwBqR*@4Q?#Ds5x?gLD+gt6cBXW1|-4;qU-L|=cn99Mrw9^pBxw%#kY2UrVytoh(R|z&teC8U3Lpf9d zA5kz2)(vdaoQndewHdy&A<()T_kJ12gB-x@0R9i}aR2{!$G1zci>}bd0%U1C-w_td z;^Y_PvsrohUpxP&r*6g9!qa2&m(m$3FJUxpN6YQ!1vIM(2JQFv3@m?)pmr(lL_<%I z2EZh%zMSZCu%o22`P#1ilq$c}mK-0<0 zaAOAy!ZNqAINCbb8WwCPutKoIS{P{UGfotTCYz=I7SS}M?vCqMMg0M@j5>5Ta-Z3B zn>>(LEo?=eDPSz>S<0eXNgD2&GhuxV{QpWxZDw+!-D&UeEWsa2~ zkfIqNxRs8g=GLN>Q(4Xr%?(5o#Wgj>4RJ|L%dBSHGnaC2vZ+y9#-%-Ns;QZe`ObIF z_YeQQhjX6ieedVKujg9)xXg=JnZ`BNrFC_lP&^`^p8!9paMx?8d$6{Hytf{yZ&LNS zZBO58tJ*z(pZgG5`K(?0K#NdiOI^s@$nlt0=xc!mXE6z`Xh1i^SnupJP|_YWl-%>w zKmp%%3%Y)toduTR78YmdpYFGZj7;U*S9SIR`bn8J8mcLt3d6$c4{a7=zP38@tH{;#oT8)p2V8q<|WCJXlS5 zc?W6*08=+J)ciHJ#Y1Y%!Fua0$F;kiB~e>} zRe_Yl$WG3VlW!gCu{tA|NBhy^D96ZqIPY!BHo@~q-Yvh)(|dKt#j0vI+JErAGx8|u z!y89(XR^_Q`B_ii43rydzZL>VaMsEk+Yz8Y3$?U_0%PX^S3IXuY(Sd{4+9_O_W z;uC|8OKj1M4MQEH*04P-ggx_Y;?j_yI?{dJZaTZCM!aW=V`WzXR%L5cgH@AUI4w!x z?Y^G=5j-n-m$S~yQu@b=KR=9#8jG@mi3;f^O0!p`CcXIZw%32sU){Z@vP*i27#JYm zsyKNLc|7Fvmovr{OaaE4#Hi#Uxg-p=K#`|pqvJu9yK3-9b#{MyiX&WjZf_Tjr+vWW z$mRSBRXWce#u&Xg?(h!mzKe0Z(B(9aO*qvWc6_7RLuVLj!wZ8KmF;<$`_0_ zDr>lxgvmMBP%TKNrzi=b!8KNN%fF5Xr}ZcuWj(cF(=4R$T^-gx)dL2&EDar>rtSHW ztV_@D3xlWY(XiisUDbP!XN}BMO>Uut`PBfHziGdc6QO?`t^mG0e}+^e0mwh3zYc19 zhIGMIm5RB4Zf~;m8v<|b3Hvp)Yv4eNFpByNA%=y#rv3C-Qh z5))>+b(i-tJAAN`5-ALUA2L7~HB|n7+q>DZKHJF$e`oJ*1Dkd8wb;9>X9N!0A6nX7zzbT2kE+RMk+IgcKO6dv8Sd~2TR z`y?>c;Mu!un%JCuLw)b}_92&(H)pV7-^y^Uzf--Gfd;P2!&IK7k=4A{@dkR-%zd6T zi0Do_0$t)Pgfc3YXjy`8jhbgMbBix(r$ScG*{&>#1AoV**@5@sBBe&>Ksj>B>om#` zS$Ve!oVHt56(4o-z5J#TW#m4OntHLx*%xxCtV}B9s{H0Lo2)m0`suTQv6Q#cWDVK+ z{yrWvOib1>P_(6@_h+tRgl4;pjyFURDqr8_Dm&afPO)L;`U2@UDj!Z2rqwzc6V$H#j@npc|b`y?jKBTfG9u)*}HhqF1E zsd@IwYlHu;x%Kl;|D14#yOyZJcsY3b&V9u?hfS+boC$R1uG|y<(pch`!F0g}mz6a( zm(4TL{q@$Ss)O@r`|5@$uq~Jkg|3 zi8Vd7bx1SMhW10K%zhib~xW((Vy3n?+Zf86DpGJ4QY%| zV(z`b-FtU_jP<+LDC62jm`+j9WIe()&ZSM-W%FiwuFb^>N12^d$v(7hoQ3=A4gX;2 z-QXie{*Io8Jp(&Giq1ZB+dX(dXZPK_#g^6oZ1L9K7$3%(NW^_<+iXAmBBOi~5|>m&;TcGxz^tMzZ3 z3|S=IN9-J6$Ho@qC%;8x@swWHYWIK;j2KaS1EFc+;}du)iKcXXeyt(ywSCj(92Xr{ z@jcx7HY=#rlO;l-1jOo&vZLz5XTray1xDnC4QK2lto$<69Y35e??G@8ImS=J#cAZ} z-2)q#t}u9*vk_YPl0R#DIR2k1q|iW{eC0AKc*!*mzKyiP^$2Qy`CCQtucj~7LLYnW z$%&2H89iDid*tE~8%*=(iGU*6V)c_fZr6yMy5P0(WONV>JXd8mL6kzj1uM3Gyv>t` zk9S&rwJ!Le5cus$2YxY8v&(~OWeqMbr+)mv`r@|qE+I^BCGmuG)zP&>shZ(jQklrn zU+g*9d^fb=xN}WzW1cAAz-!uiKIziSzKUG=`~#bK@JBP9xdzkar@Gp)9S;53Zuv!cHbMhrxj2Hsxq+-tH(J&-4HI9Ul2sm1kdC-tmMpw%tsuBlR}xdo?L_9#r)GoGJWCmVMp( zQBxjgTFB`-_1xw$FW+L`uZwv2Z7pS2M-$?2wPd6p?Q}lGQx)Dq-*!7VDt#R_(AyX5 zq1Y)~=!?9Fm_!l=L)H32+0h58 zscbZvzC{qNwB*1P3_0AB7$|PF)*7J4+A0V*oGdc|rp8yB7IMQaN{NO!-CDIczR`$c z5a%0zSjjyby7CdY(ZTekqmx-dTzg56+wG>bm(Q1{ z+$8=b$Ck^5VtKyNT}^$knJaW-$BdU}u7VXn_kqbRYC*s=Iid^eNtx?;c{s{ogNevT zK&2Zya20=48l{?APIS17dfC}5u&*xe@GEY zSAF&q+exk{nkgomFK|hL5#H9p>%jeS29=CUOEbjSfMtwBk6j-BP0&y?*jZOz;8hS= zU(PY>7tO{9RW{m3hy$L~VCQPIJ6b#&IHV57G|B{mM1~9TqKUxE9GvEn@$;+8*|~+) zgI+L9_ND3VBLxJF;D`0*CV*3_L(S0I)V(EV*t|hwBIm89c@NJ^m*TA9Q2q4GM~rFE z)oUYBw$&fe8gq@Td^8wvCsB}1D)(r&;TKHZestVO5kgSxgY&;~hjfsj3-8Gx#40^E zB@z4U4>r+Gdj6T)7%5~{bwY?}WZq=t2{*H5GkY;z3lC@Qgqky2<%uytEi~S|<_M8rfBHI|J1Ffv1lmSYSBBCh z#Wcr_+E?_5ljby6Lzq6(G}{mlFV-=a7?m?pVKK(Rj(aqi&K(LzSZPsQd980h*_h?| zW|_tac?hyz2XSTLeT&MF8fmfRK0Pu*k~%G+*!#C&75)`Ce@HhUQCqT%A}dKsVPfC? zNz2pOquHWhqy|Ij!m9;eK`UKsSUG#8C{=NqsG1}TKB`0Am;D{(nJ#ixg*%>tf*5lyq2y4G2}# z;Xv0(dB}GEv1vZdCexg652Uo`H^1ZqOZ>ECmZj&V@XE|KZZn$o42(TuNw#nY3V8{^ z!)$#IlB3^BADV0=8f5<142GS&-qDQGFkzpKhq7-VN!>Ug+XLC;T;I}yTQ~Pb04;>L zK7LD*$o#Bo<2WmD_uTHL`)0Sz@Xq2qLu#_D&|JxHH$&C#!etAFoAl^ORW{LC@D)`A zkHtz9{b&4)#g}xCyhv)H+=bObPn@CmZFpi%hgsO@N4Soxu4ec87T!OdCYag?%$)`E zyHIx)l*1#pp%)d)P4Dz{uS|{q-uIsQ;ep(-%2$2#Ah7ucq#NM>#OY&C$1yiSl;QT~ z46<^C{}K9p^(=)1MOP=U9!|ca*$JwYtS@^UNflvPPRgXxin#u=rq^Y42Fvb&o%_>= zk+F&~8d3RI)!5m-Zf%b2a*0p`r3Ai)NNJC#{NfxJG+cA5Y}?hp3S6U+S= zKqn{^HbdIjM$(9lhDIm3Vk!KX!|9}T0 zXCxZaRjecqa1hx)9l=7{9(*8Jngf$qj!jOf({WQIb6=~T1dFu52QKz9j7qj^5m+;6 zttm0%HLKBsJ7jotRDMyN7X7C?)O~3A^l!?$%)}{we3p2q&n$v4&3^0XJGiQzgH^a7 zTIBp^7_;lbmr5C7pL*QVAcC4ZZAc=C6u}7Ana1fehtNZ**}4uGqhs?J2beF9Co%r{ ztr*SuQ$3cTL5@t*T-t+CCIQPQ6=yP&4#dYJzQGq|(=Kg{so;h?6^4cPwg9EsI;5#1WLU8(c4CCm)PXEDw(Quim9=mRDq)y7^(?)@7$~t$V1v zb%}H7sW9RtTKlUfk2_KyS3icoFE^ti_QVdn^m_i{PqobbksUZz3FE{2H0!u1h=CHY z<3JCeyKupeP%7iRa=1^`B6@S=y+X4y$#{xIUL#;@95 z^69MMA2i@bfx2v6vN_+K*B%EkSNQ7cCSsU<%V@}YOjAsxMP0rCpMHg#(*`r{rVLq( zj0E~wt@Dli=RpD(LHU`3a{e_???ZSXm{Zj4#@)3UpMFp=Gp48ik-pj6-b7brVNv9~ zoxo>K+{1mYFz;<1RckUb=d2>7@y@%HKfX4pf7!b=P?Dw!2xNX1m2Z;Er>}gu@bt^? zzwV9>$$QH!xxaG-dfJd;&amK9TB(w-QIDxWR$&d{8mR{2g#qC=-S?Kd$w5Kx7cD`QYO+|WxnA2^Nkc(`5I^yYLP^)aNpv6wgI?Z$Uj{ip z6?@O|*1LfCctUe(6M8$SZ8-;nXXl{bl%HQ#jZGy5EY$N7YUHkLeO28ORWy1R#TCA{ z-DBO&;h~c(B?kkY-XbdDufwP{O#&ie@&K+A3_@G}@hYf!))DNe3xigB-1=_rGJl3G zJ4tkff65E3izHNVP3aX=XLeH~pXu=mgbf!%MQ57wg}uMCn?V5n!_i39lDxrbc#31Y zhi5Z2_kZ2j{N}yD)h{E?yuGysA@{v3+3z{;2pnflioWSd#bxDpj8>U5yq+UvAK;SMdy-ri1G(`H>)oUve;gvJOhV_QDa-oQxkE9Tm`+<@Nv7m4O+^&hkRA2sv^z@6KC$^)F+e z9y>GiT^zj6-L%oZB;Iz@D0HkneVeo<|19JSp#*fqUI*T9GaA*yp_vD?E92P&*vDKm zVG&2(Oi?I^)i^FUNsP15K^8o5{v>yjVhtH$?4Ty+52giX z^#O&3hYX-~V{b`{5UQGcb*WsOpQT0jrDi8yg z0o5W`drTvsgxvi>N1zZdaywxCo0_JzpQkQrOzZiSchsh8)tFD1#xYQsbaC^vdI}iW zB?}&7IYtC$#^!oPGVe$WB##Cy7mM|Fa+IUGpbm#aS>8ZY67w@PT*@!5g>_j<0(+JO z^&0vU9C`2`%T#DQ3%-JK;d(YxAm0hDrh)D2>^u>++m!%CS_^f@vITP^{|>{mco^tut<;(>R~|90*wX*E~<3MMWXbE=Un7lw`eIa~rnze) z0jEW0*=xeG)xpa0!txs^!YcR>Ivoo4ElY@BM%nZS0~5&MaE%cf$AjA;!pd-3S%UP8 zOjBQd^V_>VwR><bC{q`hjo>V*fb_Er9i{Pk zjpZB_GYC^gPk^!=^oWE(_05Hh1B3RiYKa4KZyudT;Z}!r0a!d@49Jo?f~$b=i#ll9|L(*ivAn2){oE*!@l#m{N@%9Ft)A8>MJqpa z%xFQ|=t9-Z>sOsoY23i>D7Kfxy3D5*VW<7P#m_U`u@b9g#Gex(Yw|E9pBKXFm(mWY zBV22W7pN1ycJWF3pV%3L13R=zGD7!_8P>N~l2pNnLkkJj_+W^Bb#+uG)|agtU!+H2 z`Ufy!t3&zjM%i+9pFruxqW+Uk2^JrLzHsQ84BypeKYb~MR%eV0gf)25IIDFd=umAHzg zC96RI+)7^_5?QHZb|+`%Cl`(HzvP5hxGLkpe_5+U?7Cw@&dhJydHjG5mrUV#8z15^ zZ&$jUDmr`+c4q_MOQnod{B%3roi>5K|dGIu(s6Y>QmGWrrLp^oT8)6x7u5`!ty>WJwhd-+u};Ks53xAx zp1U&86ql=eah6b@22r6l33?GTE+K&s_=v^G8mmP#D0HpRqSFV~Hnq%=^a?t$6=3N0 z7&%fKwYS%<%w+gM*zq=BJ$<$N*4kCg31qfz-PV3F#LB`_{B&&@uk_2Yb0A@$_P&7l z;V-$l4l4nrC0C?7yAKlhIlGZj3VBBqB?G0sHWMAI;p*oauIVKB^RGj@-Ks$xGG&Q6 z=Xb^|b?71sKx|z&qdNEOd`afpnw20g?LNOAbl+Xwz5lp8A^sOm?oQ+7{wA@e_=HfK z=4xbi(g_|2ZNvux_tK4Ub>c4c~xMdd|fkxK=$FICU?)cX~{jI_F*BgHO zcN^Zbx>=<)Y2}j9a_M-oFPhGUHo~w_-GA1;lTf@7k!cCv%orFftyd^{TTPRZ#b8?9l3K_E@Oz4FQf+hT+WXRLY7dHk7;|i zedX1avK;ZfJAQXxohtT!uLHP!>N4QwhhNwf8b{(B=MMgF>tk1PI+qiv33NaM#&MJR zOoS2jd`wi=Y90liHWJw4>Em47LqOJh#00DsKI7i~9rpfXD!A9#R0T-4>>tLvXPsM> zm|Es@D~@o2A`dZ9EhR_6Q>C{^XPZ7mw2x^=XtO`FpQEZdQ&__IXqH zR?pmQJ4Iy2cZUihZ1;ZszTByR0EhLa)#Pt@i_RJr1M^))v%3oQdao0}L;^7e@V#n3 z>~U#&koA0jolkAu~EDi1$cFh(G9EYt^2j*6_&EJB*u>5UhH^FEIok6nil7 z@QKWi5W%pKVC0xFarcjx_q=#H{pH`~>}r#yp)#{;w-&yPlcTJ~pmb6rkUr}7MvkZ% zCxXp3q+3O#Xoc-YcjstwU{rD%7b={g>p`Fd;kMF zQ%-&x^FRV$OY35Y2dxoF*?VY~2EpaChEwKapzo5zQcpr;WIYyN)}LfVyk-&Bn}LE4XjQ+LJ{=#0(Fr@DKlSP$9f)}50j+MpOfn*h!Q`63-C%g zSP{9IB-!+Mr`pJtTldvH7g!XO0!bnmY&4rhgkm_kLNhh<)$8`45|X?cCUcQ{@86nJ z+G}}qxG1>=E-i8_7VG=W*)CT%M`xHo^7q79>JO&+s%WTxBcG$Sx9y8|3@0&%1yDo`THUDf2Vy9 z__4eTN-Fi5oWnGY+_kH4MXIle*G3g4j|TO*3MS6Uj}nF~=w08LLX)#Ii!b-F<2&1veAKMOU2d$*4@1g`D-!5hscRO85Ez%wC--#ZdXZe zMIC?gHP9pU&sjuU6m{07i&M2ka$TZpqhGJ z-boso1w!FVgX`L62xj5^_YfJvqc(x&A~=HARUOCXS!pGKF>Z<4k6+{l=#tTh3$J?|% z5-qyo9ZZFBQZpOFcFC0~_~~PTY?Y|~)jbZ^HCTqerU_~6VY%E)q~X$Z=rnA}xj|`#;6obzL2fAe z$S(2zszs$PJw3zzF5oDAG4w!&wxIKvg81p|j;fC5zcI);pM4W=%?DTJF;Ggar2?KC zrs1`z%DB-YoM;JdWFNw$07r5C>J?k}*CKWmj;aF2dv`jwlBj}-0t-P~PS7@x%;myE zad~j(k13FClmtGa0Mz(QUzq3O=+7If!RjSp#hdEkNZkd|N<|nLxS;igc6?nzFKm0{ zHRQxPB*(f0*spgt(90|lbu^l4nAQnVWD56E#axjP?HITI6Q&zR;%nHEZH88v7cp6- z@BBo_TRI|4A1KG!MuI~Cz){QP13OeNni?_!?54MSo=&L9jLm7*-|~dnAfbX|>&?d; znX9S2_hS+V!^5Oh^xOO*pPyi7)rkywL{(3 zwZ`WrXdItm`Td_oSq%kGWRgIi>KSWk=AkDZCNVQ~>bN!@_-HgH!G-6#h|!|`&VWJX zvs3mRe-QZM?eP>V;Hcr>fbS>MIVNHQk>{jZsWsGWC`0=`lchL>hGuGA6v^EJ%Gr`lulyUY*XPm_DpY2eniRt z<|gWt#mfDi4cJG`UCZd%i+UT=eLFxeB-GL4*f9^Xsp+5rBulQqI9j4^}eB3_Lse|3@PuH+dp=O2WMj8u z`}(WiF6j+7YFeQyS7@{=doEw$WV1{iHD_g0yuTec_Daqi#1NCxdwtT;Y1mOS0IzdWQ}pWlDZ^;mvgb|&QSl~2205v+OiBXhN!6DGb7hnhmmezBgnQIP5h<^;or+~n4# z2-CtKsVEM)Rc>P)<*zvBR{Qke{0Y++FE0Jne4J9eqX zrfv42)Zk7^j^y$LGXH{OXz>njLH>Fa=D6X{k8$#4&eHDa6E`YOTzmC(^wXR9;okbd H8u Date: Fri, 3 Aug 2018 09:07:15 -0700 Subject: [PATCH 288/403] Automatic changelog generation for PR #39382 [ci skip] --- html/changelogs/AutoChangeLog-pr-39382.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39382.yml diff --git a/html/changelogs/AutoChangeLog-pr-39382.yml b/html/changelogs/AutoChangeLog-pr-39382.yml new file mode 100644 index 0000000000..1e729dd2bf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39382.yml @@ -0,0 +1,4 @@ +author: "Kmc2000" +delete-after: True +changes: + - rscadd: "You can now attach 4 energy swords to a securiton assembly instead of a baton to create a 4 esword wielding nightmare-bot" From 0e106c897a5354ee00eb98e0587552569b5b5b4e Mon Sep 17 00:00:00 2001 From: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Date: Fri, 3 Aug 2018 13:04:38 -0400 Subject: [PATCH 289/403] Adds a new RoundEnd Sound. (#39391) * Adds a new RoundEnd Sound. :cl: ArcaneMusic rscadd: Added a new, shoutier RoundEnd Sound. /:cl: Sometimes after a nice, long round you just want to scream.Let me know how it balances with the game audio mixing in case it's too loud/quiet. * Using the Reverb sound Audio file updated. --- code/controllers/subsystem/ticker.dm | 3 ++- sound/roundend/gondolabridge.ogg | Bin 0 -> 105432 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 sound/roundend/gondolabridge.ogg diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 0f93ddfb1c..5d9fa19e28 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -635,7 +635,8 @@ SUBSYSTEM_DEF(ticker) 'sound/roundend/leavingtg.ogg', 'sound/roundend/its_only_game.ogg', 'sound/roundend/yeehaw.ogg', - 'sound/roundend/disappointed.ogg'\ + 'sound/roundend/disappointed.ogg', + 'sound/roundend/gondolabridge.ogg'\ ) SEND_SOUND(world, sound(round_end_sound)) diff --git a/sound/roundend/gondolabridge.ogg b/sound/roundend/gondolabridge.ogg new file mode 100644 index 0000000000000000000000000000000000000000..949fb53d5886fb94ee77d9e0a1d8739b6ac83a5c GIT binary patch literal 105432 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 z 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

    x7k=t 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 Pk&z?Idsopf*Grc!WFO9^ literal 0 HcmV?d00001 From 6c70d329f47c87071094110357ccc4581ec5d5a6 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 3 Aug 2018 10:04:41 -0700 Subject: [PATCH 290/403] Automatic changelog generation for PR #39391 [ci skip] --- html/changelogs/AutoChangeLog-pr-39391.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39391.yml diff --git a/html/changelogs/AutoChangeLog-pr-39391.yml b/html/changelogs/AutoChangeLog-pr-39391.yml new file mode 100644 index 0000000000..9444ad992a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39391.yml @@ -0,0 +1,4 @@ +author: "ArcaneMusic" +delete-after: True +changes: + - soundadd: "Added a new, shoutier RoundEnd Sound." From 5cec0a094ef2973ed1435f395f02d6488e8d506c Mon Sep 17 00:00:00 2001 From: XDTM Date: Fri, 3 Aug 2018 19:16:57 +0200 Subject: [PATCH 291/403] Splits fakedeath and death coma, gives fakedeath to zombies and skeletons, adds ghoul powder (#39487) * Splits fakedeath and death coma, gives fakedeath to zombies and skeletons, adds ghoul powder * s --- code/__DEFINES/traits.dm | 3 ++- code/datums/diseases/advance/symptoms/heal.dm | 2 +- .../antagonists/changeling/changeling.dm | 2 +- .../changeling/changeling_power.dm | 2 +- .../changeling/powers/fakedeath.dm | 2 +- .../antagonists/changeling/powers/revive.dm | 2 +- code/modules/mob/living/brain/brain_item.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- .../carbon/human/species_types/skeletons.dm | 2 +- .../carbon/human/species_types/zombies.dm | 2 +- code/modules/mob/living/living.dm | 4 ++-- code/modules/mob/living/status_procs.dm | 6 ++++- .../chemistry/reagents/toxin_reagents.dm | 22 +++++++++++++++++++ .../reagents/chemistry/recipes/toxins.dm | 6 +++++ 15 files changed, 47 insertions(+), 14 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 378d30ba52..b994d9cc84 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -14,7 +14,8 @@ #define TRAIT_IGNORESLOWDOWN "ignoreslow" #define TRAIT_GOTTAGOFAST "fast" #define TRAIT_GOTTAGOREALLYFAST "2fast" -#define TRAIT_FAKEDEATH "fakedeath" +#define TRAIT_DEATHCOMA "deathcoma" //Causes death-like unconsciousness +#define TRAIT_FAKEDEATH "fakedeath" //Makes the owner appear as dead to most forms of medical examination #define TRAIT_DISFIGURED "disfigured" #define TRAIT_XENO_HOST "xeno_host" //Tracks whether we're gonna be a baby alien's mummy. #define TRAIT_STUNIMMUNE "stun_immunity" diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 9f274c0aa3..0ace2ca8fd 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -233,7 +233,7 @@ /datum/symptom/heal/coma/CanHeal(datum/disease/advance/A) var/mob/living/M = A.affected_mob - if(M.has_trait(TRAIT_FAKEDEATH)) + if(M.has_trait(TRAIT_DEATHCOMA)) return power else if(M.IsUnconscious() || M.stat == UNCONSCIOUS) return power * 0.9 diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index ab6dd3607d..cc3b3a3057 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -167,7 +167,7 @@ to_chat(owner.current, "We have reached our capacity for abilities.") return - if(owner.current.has_trait(TRAIT_FAKEDEATH))//To avoid potential exploits by buying new powers while in stasis, which clears your verblist. + if(owner.current.has_trait(TRAIT_DEATHCOMA))//To avoid potential exploits by buying new powers while in stasis, which clears your verblist. to_chat(owner.current, "We lack the energy to evolve new abilities right now.") return diff --git a/code/modules/antagonists/changeling/changeling_power.dm b/code/modules/antagonists/changeling/changeling_power.dm index 6ae73336d4..ae255a04f8 100644 --- a/code/modules/antagonists/changeling/changeling_power.dm +++ b/code/modules/antagonists/changeling/changeling_power.dm @@ -65,7 +65,7 @@ if(req_stat < user.stat) to_chat(user, "We are incapacitated.") return 0 - if((user.has_trait(TRAIT_FAKEDEATH)) && (!ignores_fakedeath)) + if((user.has_trait(TRAIT_DEATHCOMA)) && (!ignores_fakedeath)) to_chat(user, "We are incapacitated.") return 0 return 1 diff --git a/code/modules/antagonists/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm index 80bd76d0d7..753d858cef 100644 --- a/code/modules/antagonists/changeling/powers/fakedeath.dm +++ b/code/modules/antagonists/changeling/powers/fakedeath.dm @@ -28,7 +28,7 @@ C.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null) /obj/effect/proc_holder/changeling/fakedeath/can_sting(mob/living/user) - if(user.has_trait(TRAIT_FAKEDEATH, "changeling")) + if(user.has_trait(TRAIT_DEATHCOMA, "changeling")) to_chat(user, "We are already reviving.") return if(!user.stat) //Confirmation for living changelings if they want to fake their death diff --git a/code/modules/antagonists/changeling/powers/revive.dm b/code/modules/antagonists/changeling/powers/revive.dm index d9c1ca7221..937748a7ef 100644 --- a/code/modules/antagonists/changeling/powers/revive.dm +++ b/code/modules/antagonists/changeling/powers/revive.dm @@ -33,7 +33,7 @@ if(!.) return - if(user.has_trait(CHANGELING_DRAIN) || ((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH)))) + if(user.has_trait(CHANGELING_DRAIN) || ((user.stat != DEAD) && !(user.has_trait(TRAIT_DEATHCOMA)))) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) changeling.purchasedpowers -= src return FALSE diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 3ce203937c..7d1dc7d1d2 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -21,7 +21,7 @@ name = "brain" if(C.mind && C.mind.has_antag_datum(/datum/antagonist/changeling) && !no_id_transfer) //congrats, you're trapped in a body you don't control - if(brainmob && !(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH)))) + if(brainmob && !(C.stat == DEAD || (C.has_trait(TRAIT_DEATHCOMA)))) to_chat(brainmob, "You can't feel your body! You're still just a brain!") forceMove(C) C.update_hair() diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 8474ad05da..b10a9df6a8 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -18,7 +18,7 @@ if(health<= -maxHealth || !getorgan(/obj/item/organ/brain)) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || health <= crit_threshold) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_DEATHCOMA)) || health <= crit_threshold) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c47f6ef568..b655b44e51 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -724,7 +724,7 @@ if(health <= HEALTH_THRESHOLD_DEAD && !has_trait(TRAIT_NODEATH)) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !has_trait(TRAIT_NOHARDCRIT))) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !has_trait(TRAIT_NOHARDCRIT))) stat = UNCONSCIOUS blind_eyes(1) else diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index e3a72601ed..d079080eaa 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -7,7 +7,7 @@ sexes = 0 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton species_traits = list(NOBLOOD) - inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT) + inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_FAKEDEATH) inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID) mutanttongue = /obj/item/organ/tongue/bone damage_overlay_type = ""//let's not show bloody wounds or burns over bones. diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index e10be34239..d3a6bb183a 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -9,7 +9,7 @@ blacklisted = 1 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie species_traits = list(NOBLOOD,NOZOMBIE,NOTRANSSTING) - inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH,TRAIT_NODEATH) + inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH,TRAIT_NODEATH,TRAIT_FAKEDEATH) inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID) mutanttongue = /obj/item/organ/tongue/zombie var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 44cbf58808..66f0a04817 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -275,7 +275,7 @@ /mob/living/pointed(atom/A as mob|obj|turf in view()) if(incapacitated()) return FALSE - if(has_trait(TRAIT_FAKEDEATH)) + if(has_trait(TRAIT_DEATHCOMA)) return FALSE if(!..()) return FALSE @@ -981,7 +981,7 @@ //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. //Robots, animals and brains have their own version so don't worry about them /mob/living/proc/update_canmove() - var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (has_trait(TRAIT_FAKEDEATH)) + var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (has_trait(TRAIT_DEATHCOMA)) var/move_and_fall = stat == SOFT_CRIT && !pulledby var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/buckle_lying = !(buckled && !buckled.buckle_lying) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 47de9a0896..3af0a79762 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -260,13 +260,17 @@ /mob/living/proc/cure_fakedeath(list/sources) remove_trait(TRAIT_FAKEDEATH, sources) + remove_trait(TRAIT_DEATHCOMA, sources) if(stat != DEAD) tod = null update_stat() -/mob/living/proc/fakedeath(source) +/mob/living/proc/fakedeath(source, silent = FALSE) if(stat == DEAD) return + if(!silent) + emote("deathgasp") add_trait(TRAIT_FAKEDEATH, source) + add_trait(TRAIT_DEATHCOMA, source) tod = station_time_timestamp() update_stat() \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 0700aeb799..ca09fc21d5 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -168,6 +168,28 @@ M.adjustOxyLoss(0.5*REM, 0) ..() . = 1 + +/datum/reagent/toxin/ghoulpowder + name = "Ghoul Powder" + id = "ghoulpowder" + description = "A strong neurotoxin that slows metabolism to a death-like state, while keeping the patient fully active. Causes toxin buildup if used too long." + reagent_state = SOLID + color = "#664700" // rgb: 102, 71, 0 + toxpwr = 0.8 + taste_description = "death" + +/datum/reagent/toxin/ghoulpowder/on_mob_add(mob/living/L) + ..() + L.add_trait(TRAIT_FAKEDEATH, id) + +/datum/reagent/toxin/ghoulpowder/on_mob_delete(mob/living/L) + L.remove_trait(TRAIT_FAKEDEATH, id) + ..() + +/datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M) + M.adjustOxyLoss(1*REM, 0) + ..() + . = 1 /datum/reagent/toxin/mindbreaker name = "Mindbreaker Toxin" diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index ee31fb1a93..22e21b1db0 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -74,6 +74,12 @@ id = "zombiepowder" results = list("zombiepowder" = 2) required_reagents = list("carpotoxin" = 5, "morphine" = 5, "copper" = 5) + +/datum/chemical_reaction/ghoulpowder + name = "Ghoul Powder" + id = "ghoulpowder" + results = list("ghoulpowder" = 2) + required_reagents = list("zombiepowder" = 1, "epinephrine" = 1) /datum/chemical_reaction/mindbreaker name = "Mindbreaker Toxin" From a7b713f6ce426db9caf3f7314ad04507253f76fd Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 3 Aug 2018 10:17:00 -0700 Subject: [PATCH 292/403] Automatic changelog generation for PR #39487 [ci skip] --- html/changelogs/AutoChangeLog-pr-39487.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39487.yml diff --git a/html/changelogs/AutoChangeLog-pr-39487.yml b/html/changelogs/AutoChangeLog-pr-39487.yml new file mode 100644 index 0000000000..c60f24b6f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39487.yml @@ -0,0 +1,6 @@ +author: "XDTM" +delete-after: True +changes: + - tweak: "You can now have fakedeath without also being unconscious. Existing sources of fakedeath still cause unconsciousness." + - rscadd: "Zombies and skeletons now appear as dead. Don't trust zombies on the ground!" + - rscadd: "You can now make Ghoul Powder with Zombie Powder and epinephrine, which causes fakedeath without uncounsciousness." From 2eab2ab00f0d87afde866d74e3dbc5b392a462c9 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Fri, 3 Aug 2018 19:30:52 +0200 Subject: [PATCH 293/403] Adds scrubber pipenet to lavaland mining base, fixes two Meta tiles (#39490) * Fixes merge conflicts * Removes z-layer 3 scrubbers from the premises * Fixes Meta engineering floortiles --- _maps/map_files/MetaStation/MetaStation.dmm | 4 +- _maps/map_files/Mining/Lavaland.dmm | 684 ++++++++++++++++---- 2 files changed, 566 insertions(+), 122 deletions(-) diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 1945e7113c..81b3b45922 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -29810,7 +29810,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/break_room) "blk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -76797,7 +76797,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/storage_shared) "uGW" = ( /obj/effect/turf_decal/stripes/line{ diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 0ef53bdc68..23d87f998f 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -515,6 +515,9 @@ /area/mine/production) "bE" = ( /obj/structure/reagent_dispensers/watertank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/open/floor/plasteel/purple/corner, /area/mine/production) "bF" = ( @@ -527,6 +530,9 @@ /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, /obj/item/hand_labeler, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /turf/open/floor/plasteel/purple/corner{ dir = 8 }, @@ -607,6 +613,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -898,6 +907,9 @@ }, /area/mine/production) "cI" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/purple/side{ dir = 4 }, @@ -921,10 +933,6 @@ "cM" = ( /turf/closed/wall, /area/mine/living_quarters) -"cN" = ( -/obj/structure/sign/warning/electricshock, -/turf/closed/wall, -/area/mine/living_quarters) "cO" = ( /obj/item/radio/intercom{ dir = 8; @@ -939,6 +947,9 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 30 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -967,6 +978,9 @@ dir = 1 }, /obj/structure/closet/crate/secure/loot, +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, /turf/open/floor/plating, /area/mine/living_quarters) "cU" = ( @@ -1070,6 +1084,7 @@ pixel_x = 1; pixel_y = 25 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/dark, /area/mine/maintenance) "di" = ( @@ -1104,6 +1119,7 @@ }, /area/mine/living_quarters) "dm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -1134,12 +1150,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, +/obj/machinery/meter, /turf/open/floor/plating, /area/mine/living_quarters) "dq" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, /turf/open/floor/plating, /area/mine/living_quarters) @@ -1176,6 +1192,9 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, /turf/open/floor/circuit, /area/mine/maintenance) "dy" = ( @@ -1236,6 +1255,9 @@ /turf/open/floor/plasteel/white, /area/mine/living_quarters) "dC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, /turf/open/floor/plasteel/white, /area/mine/living_quarters) "dD" = ( @@ -1272,18 +1294,19 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, +/obj/machinery/atmospherics/components/binary/pump/on, /turf/open/floor/plating, /area/mine/living_quarters) "dI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 + dir = 5 }, /turf/open/floor/plating, /area/mine/living_quarters) "dJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, /turf/open/floor/plasteel/purple/side{ dir = 8 }, @@ -1441,6 +1464,7 @@ c_tag = "Crew Area Hallway West"; network = list("mine") }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, /area/mine/living_quarters) "ee" = ( @@ -1500,12 +1524,18 @@ name = "Processing Area"; req_access_txt = "48" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/mine/living_quarters) "em" = ( /obj/machinery/light{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -1525,16 +1555,18 @@ /turf/open/floor/plating, /area/mine/production) "ep" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel, /area/mine/living_quarters) "eq" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/structure/cable{ icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, /turf/open/floor/plasteel, /area/mine/living_quarters) "er" = ( @@ -1572,44 +1604,53 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /turf/open/floor/plasteel, /area/mine/living_quarters) "ev" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /turf/open/floor/plasteel, /area/mine/living_quarters) "ew" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, /turf/open/floor/plasteel/brown{ dir = 4 }, /area/mine/living_quarters) "ex" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/door/airlock/mining/glass{ name = "Mining Station Bridge"; req_access_txt = "48" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/mine/living_quarters) "ey" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable{ @@ -1620,7 +1661,10 @@ }, /area/mine/living_quarters) "ez" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable{ @@ -1629,25 +1673,31 @@ /turf/open/floor/plasteel, /area/mine/production) "eA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/door/airlock/mining/glass{ name = "Mining Station Bridge"; req_access_txt = "48" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/mine/production) "eB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /turf/open/floor/plasteel/brown{ dir = 8 }, @@ -1710,23 +1760,36 @@ /area/mine/production) "eK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/brown, /area/mine/living_quarters) "eL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/purple/corner{ dir = 8 }, /area/mine/living_quarters) "eM" = ( /obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /turf/open/floor/plasteel, /area/mine/living_quarters) "eN" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, /turf/open/floor/plasteel, /area/mine/living_quarters) "eO" = ( /obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, /turf/open/floor/plasteel/purple/corner{ dir = 4 }, @@ -1746,7 +1809,6 @@ /turf/open/floor/plasteel, /area/mine/living_quarters) "eR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/airlock/glass{ name = "Break Room" }, @@ -1854,6 +1916,7 @@ network = list("mine") }, /obj/structure/reagent_dispensers/watertank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/brown{ dir = 5 }, @@ -1886,6 +1949,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/brown{ dir = 8 }, @@ -1903,10 +1967,6 @@ "fk" = ( /turf/open/floor/plasteel/bar, /area/mine/living_quarters) -"fl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/bar, -/area/mine/living_quarters) "fm" = ( /obj/machinery/vending/cigarette, /obj/machinery/newscaster{ @@ -1939,12 +1999,18 @@ name = "Station Intercom (General)"; pixel_x = 28 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, /turf/open/floor/plasteel/purple/side{ dir = 4 }, /area/mine/living_quarters) "fr" = ( /obj/structure/table, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, /turf/open/floor/carpet, /area/mine/living_quarters) "fs" = ( @@ -1958,6 +2024,9 @@ pixel_x = 25; specialfunctions = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/carpet, /area/mine/living_quarters) "ft" = ( @@ -1966,13 +2035,15 @@ dir = 4; network = list("mine") }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/purple/corner{ dir = 1 }, /area/mine/living_quarters) "fu" = ( /obj/structure/chair, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/bar, /area/mine/living_quarters) "fv" = ( @@ -2008,6 +2079,9 @@ /obj/structure/chair{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /turf/open/floor/plasteel/bar, /area/mine/living_quarters) "fD" = ( @@ -2016,9 +2090,6 @@ pixel_x = 7; pixel_y = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, /obj/item/reagent_containers/food/drinks/beer{ pixel_x = -1; pixel_y = 9 @@ -2032,13 +2103,13 @@ /obj/structure/chair{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 }, /turf/open/floor/plasteel/bar, /area/mine/living_quarters) "fF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, /turf/open/floor/plasteel/bar, @@ -2103,6 +2174,9 @@ pixel_x = 25; specialfunctions = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/carpet, /area/mine/living_quarters) "fN" = ( @@ -2110,6 +2184,9 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /turf/open/floor/plasteel, /area/mine/living_quarters) "fO" = ( @@ -2133,6 +2210,9 @@ pixel_x = 25; specialfunctions = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/carpet, /area/mine/living_quarters) "fQ" = ( @@ -2153,6 +2233,12 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"fU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/living_quarters) "fV" = ( /turf/closed/indestructible/riveted/boss/see_through, /area/lavaland/surface/outdoors) @@ -2161,6 +2247,10 @@ /obj/structure/stone_tile/slab, /turf/open/indestructible/boss, /area/lavaland/surface/outdoors) +"gd" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/mine/production) "gj" = ( /obj/structure/stone_tile/surrounding_tile{ dir = 1 @@ -2215,6 +2305,12 @@ /obj/structure/stone_tile, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"gu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) "gy" = ( /obj/structure/stone_tile/cracked, /obj/structure/stone_tile{ @@ -2419,6 +2515,14 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"iZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/mine/living_quarters) "ja" = ( /obj/structure/stone_tile{ dir = 8 @@ -2431,6 +2535,14 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"jd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) "jg" = ( /obj/structure/stone_tile, /obj/structure/stone_tile/cracked{ @@ -2586,6 +2698,12 @@ /obj/structure/stone_tile, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"kv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/brown, +/area/mine/living_quarters) "ky" = ( /obj/structure/stone_tile/cracked{ dir = 4 @@ -2697,6 +2815,13 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"lo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) "lp" = ( /obj/structure/stone_tile/block/cracked{ dir = 4 @@ -3247,6 +3372,52 @@ }, /turf/open/indestructible/boss, /area/lavaland/surface/outdoors) +"on" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"ot" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"pa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"qY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"rE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"rP" = ( +/obj/machinery/atmospherics/pipe/layer_manifold{ + icon_state = "manifoldlayer"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"rV" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) "ss" = ( /obj/machinery/button/door{ id = "miningbathroom"; @@ -3261,10 +3432,19 @@ }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) +"sL" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) "tI" = ( /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) "vb" = ( @@ -3272,15 +3452,120 @@ /obj/machinery/shower{ pixel_y = 22 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) +"vq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"vZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"xA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/mine/production) +"xT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/purple/corner, +/area/mine/living_quarters) +"yR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"zu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"zV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 4 + }, +/area/mine/production) +"AB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) +"BD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/mine/living_quarters) +"BT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Cl" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/living_quarters) +"Eg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"Ej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/purple/corner, +/area/mine/living_quarters) +"El" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/mine/living_quarters) "Es" = ( /obj/machinery/door/window/southright, /obj/machinery/shower{ pixel_y = 22 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) +"EG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) "Fe" = ( /obj/structure/sink{ dir = 8; @@ -3289,18 +3574,83 @@ /obj/structure/mirror{ pixel_x = -28 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) +"Ho" = ( +/turf/open/floor/plasteel/whiteblue/side{ + dir = 1 + }, +/area/mine/living_quarters) "HO" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply, /turf/open/floor/plasteel, /area/mine/living_quarters) +"IG" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/living_quarters) "IK" = ( /obj/structure/toilet{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) +"Jh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 4 + }, +/area/mine/living_quarters) +"Jl" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"JJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/production) +"JZ" = ( +/obj/structure/lattice/catwalk, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Kb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/mine/living_quarters) +"LO" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/mine/eva) "Nj" = ( /obj/machinery/door/airlock{ name = "Restroom" @@ -3310,6 +3660,33 @@ }, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) +"OT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/mine/production) +"Pt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/bar, +/area/mine/living_quarters) +"PQ" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/mine/living_quarters) +"RO" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4; + name = "scrubber outlet" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/mine/living_quarters) "Tn" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -3317,6 +3694,31 @@ /obj/machinery/light/small, /turf/open/floor/plasteel/freezer, /area/mine/living_quarters) +"Tp" = ( +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/mine/production) +"TN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/mine/maintenance) +"Uh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/mine/production) "Uq" = ( /obj/docking_port/stationary{ area_type = /area/lavaland/surface/outdoors; @@ -3329,6 +3731,34 @@ }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"UQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"VD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/mine/production) +"VP" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/space) "Wp" = ( /obj/docking_port/stationary{ area_type = /area/lavaland/surface/outdoors; @@ -3420,6 +3850,20 @@ /obj/effect/baseturf_helper/lava_land/surface, /turf/closed/wall, /area/mine/living_quarters) +"WO" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/mine/living_quarters) +"YA" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/mine/living_quarters) "Zf" = ( /obj/machinery/door/airlock{ id_tag = "miningbathroom"; @@ -10085,7 +10529,7 @@ aj ab ab ab -ab +RO ab ab aj @@ -10341,9 +10785,9 @@ aj ab ad ai -ab -ab -ab +JZ +YA +JZ ai ab ab @@ -10599,7 +11043,7 @@ cQ cQ cQ cR -cR +Jl cR cM cR @@ -10856,7 +11300,7 @@ dg dg cQ dZ -dZ +yR dZ cM fa @@ -11111,10 +11555,10 @@ aj cQ dh dx -cQ -ea +TN +Jh ep -ek +xT cM fb dZ @@ -11884,9 +12328,9 @@ dk dA WJ ed -er +Kb eM -cM +El fd fq fB @@ -12142,7 +12586,7 @@ cQ cQ ee er -dZ +vZ cM cM cM @@ -12398,8 +12842,8 @@ dl dB cM dZ -er -dZ +EG +on cM fe fr @@ -12653,10 +13097,10 @@ ab cR dm dC -dQ -ea -er -dZ +WO +Jh +Kb +Eg cM ff fs @@ -12908,21 +13352,21 @@ aj aj ab cR -dm +Ho dD dR ef es -dZ +vZ WK fg -cM +BD cM fH -cM +BD cM fO -cM +BD cM aj aj @@ -13170,16 +13614,16 @@ dE dQ ec er -dZ -eL +sL +fU fh ft -eL +fU fh -ec -eL +VP +IG fh -ec +iZ cR aj aj @@ -13428,13 +13872,13 @@ cM eg et eN -eN +ot fi -eN -eN +ot +ot fi fN -eN +lo HO fp cR @@ -13683,15 +14127,15 @@ do dF cM eh -er -dZ +EG +on cM cM dQ dQ cM cM -cM +BD Nj cM cM @@ -13934,18 +14378,18 @@ aD aD aj aj -cN +cM cT cV dG cM ea er -eM +rV cM fj fk -fk +Pt fI cM vb @@ -14198,10 +14642,10 @@ dH dS ei eu -ek -dQ -fk -fk +Ej +PQ +pa +pa fC fk cM @@ -14455,14 +14899,14 @@ dI cM ej ev -eK +kv eR -fl +fk fu fD fJ cM -cM +BD Zf cM aj @@ -14710,12 +15154,12 @@ cW dr dr cM -dZ -er -eL -dQ -fk -fk +vq +Kb +Cl +WO +gu +gu fE fK cM @@ -14969,7 +15413,7 @@ cM cM dZ er -dZ +vZ cM fm fk @@ -15225,8 +15669,8 @@ ab ab cR dZ -er -dZ +rP +vZ cM fn fv @@ -16253,7 +16697,7 @@ aj aj aj cR -er +BT cR ab aj @@ -16510,7 +16954,7 @@ aj aj aj cR -er +BT cR ab aj @@ -16767,7 +17211,7 @@ ab aj aj cR -er +BT cR ab aj @@ -17795,7 +18239,7 @@ aj aj ab br -bR +UQ br ab ab @@ -18308,7 +18752,7 @@ bq bq bq br -cH +JJ eB cD br @@ -18559,14 +19003,14 @@ bC bP cl bP -cH +OT cO cX ck dJ dT -bP -ez +rE +Tp bP eS bq @@ -18816,13 +19260,13 @@ bD bQ cm cE -cE +Uh cE cY cE +Uh cE -cE -cE +Uh eC eP eT @@ -19071,15 +19515,15 @@ ab br bE bR -cn -cF +zV +VD cI cP -cn -bP -bP -bP -bP +zV +qY +zu +qY +gd eD bP eU @@ -19326,7 +19770,7 @@ ab bf bf bf -bF +LO bS bF bf @@ -19336,7 +19780,7 @@ cZ ds dK dU -cF +jd eE cn eV @@ -19850,7 +20294,7 @@ da du dL cH -ck +xA eG cD bP @@ -20107,7 +20551,7 @@ db bP bP bP -bP +rE eH cF eW @@ -20364,7 +20808,7 @@ dc bP dM dW -dW +AB eI bq eX From 22b5451e95e9f4bdc8ad39866a016d1f49e3fcad Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 3 Aug 2018 10:30:55 -0700 Subject: [PATCH 294/403] Automatic changelog generation for PR #39490 [ci skip] --- html/changelogs/AutoChangeLog-pr-39490.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39490.yml diff --git a/html/changelogs/AutoChangeLog-pr-39490.yml b/html/changelogs/AutoChangeLog-pr-39490.yml new file mode 100644 index 0000000000..5a8472137e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39490.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Added a scrubber pipenet to the Lavaland mining base." From b5caff1f4d7ec37f63266690582337168209d14f Mon Sep 17 00:00:00 2001 From: AnturK Date: Fri, 3 Aug 2018 19:36:29 +0200 Subject: [PATCH 295/403] Makes fiddling with air alarms go to atmos investigate log (#39501) --- code/game/machinery/computer/atmos_control.dm | 2 +- .../atmospherics/machinery/airalarm.dm | 38 +++++++++++++++---- .../components/unary_devices/vent_pump.dm | 11 ++++++ .../components/unary_devices/vent_scrubber.dm | 5 +++ 4 files changed, 48 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 7eb8e206b5..baa6fa577e 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -272,7 +272,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) /obj/machinery/computer/atmos_control/tank/ui_act(action, params) if(..() || !radio_connection) return - var/datum/signal/signal = new(list("sigtype" = "command")) + var/datum/signal/signal = new(list("sigtype" = "command", "user" = usr)) switch(action) if("reconnect") reconnect(usr) diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index e38e1c863f..765acedc0e 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -354,25 +354,25 @@ locked = !locked . = TRUE if("power", "toggle_filter", "widenet", "scrubbing") - send_signal(device_id, list("[action]" = params["val"])) + send_signal(device_id, list("[action]" = params["val"]), usr) . = TRUE if("excheck") - send_signal(device_id, list("checks" = text2num(params["val"])^1)) + send_signal(device_id, list("checks" = text2num(params["val"])^1), usr) . = TRUE if("incheck") - send_signal(device_id, list("checks" = text2num(params["val"])^2)) + send_signal(device_id, list("checks" = text2num(params["val"])^2), usr) . = TRUE if("set_external_pressure", "set_internal_pressure") var/area/A = get_area(src) var/target = input("New target pressure:", name, A.air_vent_info[device_id][(action == "set_external_pressure" ? "external" : "internal")]) as num|null if(!isnull(target) && !..()) - send_signal(device_id, list("[action]" = target)) + send_signal(device_id, list("[action]" = target), usr) . = TRUE if("reset_external_pressure") - send_signal(device_id, list("reset_external_pressure")) + send_signal(device_id, list("reset_external_pressure"), usr) . = TRUE if("reset_internal_pressure") - send_signal(device_id, list("reset_internal_pressure")) + send_signal(device_id, list("reset_internal_pressure"), usr) . = TRUE if("threshold") var/env = params["env"] @@ -389,9 +389,11 @@ tlv.vars[name] = -1 else tlv.vars[name] = round(value, 0.01) + investigate_log(" treshold value for [env]:[name] was set to [value] by [key_name(usr)]",INVESTIGATE_ATMOS) . = TRUE if("mode") mode = text2num(params["mode"]) + investigate_log("was turned to [get_mode_name(mode)] mode by [key_name(usr)]",INVESTIGATE_ATMOS) apply_mode() . = TRUE if("alarm") @@ -449,17 +451,39 @@ frequency = new_frequency radio_connection = SSradio.add_object(src, frequency, RADIO_TO_AIRALARM) -/obj/machinery/airalarm/proc/send_signal(target, list/command)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise +/obj/machinery/airalarm/proc/send_signal(target, list/command, mob/user)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise if(!radio_connection) return 0 var/datum/signal/signal = new(command) signal.data["tag"] = target signal.data["sigtype"] = "command" + signal.data["user"] = user radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM) return 1 +/obj/machinery/airalarm/proc/get_mode_name(mode_value) + switch(mode_value) + if(AALARM_MODE_SCRUBBING) + return "Filtering" + if(AALARM_MODE_CONTAMINATED) + return "Contaminated" + if(AALARM_MODE_VENTING) + return "Draught" + if(AALARM_MODE_REFILL) + return "Refill" + if(AALARM_MODE_PANIC) + return "Panic Siphon" + if(AALARM_MODE_REPLACEMENT) + return "Cycle" + if(AALARM_MODE_SIPHON) + return "Siphon" + if(AALARM_MODE_OFF) + return "Off" + if(AALARM_MODE_FLOOD) + return "Flood" + /obj/machinery/airalarm/proc/apply_mode() var/area/A = get_area(src) switch(mode) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index ced4855b1a..5b37242c78 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -337,6 +337,8 @@ if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) return + var/mob/signal_sender = signal.data["user"] + if("purge" in signal.data) pressure_checks &= ~EXT_BOUND pump_direction = SIPHONING @@ -352,7 +354,10 @@ on = !on if("checks" in signal.data) + var/old_checks = pressure_checks pressure_checks = text2num(signal.data["checks"]) + if(pressure_checks != old_checks) + investigate_log(" pressure checks were set to [pressure_checks] by [key_name(signal_sender)]",INVESTIGATE_ATMOS) if("checks_toggle" in signal.data) pressure_checks = (pressure_checks?0:NO_BOUND) @@ -361,10 +366,16 @@ pump_direction = text2num(signal.data["direction"]) if("set_internal_pressure" in signal.data) + var/old_pressure = internal_pressure_bound internal_pressure_bound = CLAMP(text2num(signal.data["set_internal_pressure"]),0,ONE_ATMOSPHERE*50) + if(old_pressure != internal_pressure_bound) + investigate_log(" internal pressure was set to [internal_pressure_bound] by [key_name(signal_sender)]",INVESTIGATE_ATMOS) if("set_external_pressure" in signal.data) + var/old_pressure = external_pressure_bound external_pressure_bound = CLAMP(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) + if(old_pressure != external_pressure_bound) + investigate_log(" external pressure was set to [external_pressure_bound] by [key_name(signal_sender)]",INVESTIGATE_ATMOS) if("reset_external_pressure" in signal.data) external_pressure_bound = ONE_ATMOSPHERE diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index 7a207cbed5..43a3b92510 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -241,6 +241,8 @@ if(!is_operational() || !signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) return 0 + var/mob/signal_sender = signal.data["user"] + if("power" in signal.data) on = text2num(signal.data["power"]) if("power_toggle" in signal.data) @@ -251,10 +253,13 @@ if("toggle_widenet" in signal.data) widenet = !widenet + var/old_scrubbing = scrubbing if("scrubbing" in signal.data) scrubbing = text2num(signal.data["scrubbing"]) if("toggle_scrubbing" in signal.data) scrubbing = !scrubbing + if(scrubbing != old_scrubbing) + investigate_log(" was toggled to [scrubbing ? "scrubbing" : "siphon"] mode by [key_name(signal_sender)]",INVESTIGATE_ATMOS) if("toggle_filter" in signal.data) filter_types ^= gas_id2path(signal.data["toggle_filter"]) From 2fc303ecfb33fcac9dfe1f9a0af7347b82616d02 Mon Sep 17 00:00:00 2001 From: oranges Date: Sat, 4 Aug 2018 05:40:09 +1200 Subject: [PATCH 296/403] All adminsay now uses the adminobserver colour (#39511) This makes it more distinguishable for admins --- code/modules/admin/verbs/adminsay.dm | 8 ++------ code/modules/goonchat/browserassets/css/browserOutput.css | 2 +- interface/stylesheet.dm | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index bf39288511..cc8c630bd6 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -11,12 +11,8 @@ log_talk(mob,"[key_name(src)] : [msg]",LOGASAY) msg = keywords_lookup(msg) - if(check_rights(R_ADMIN,0)) - msg = "ADMIN: [key_name(usr, 1)] [ADMIN_FLW(mob)]: [msg]" - to_chat(GLOB.admins, msg) - else - msg = "ADMIN: [key_name(usr, 1)] [ADMIN_FLW(mob)]: [msg]" - to_chat(GLOB.admins, msg) + msg = "ADMIN: [key_name(usr, 1)] [ADMIN_FLW(mob)]: [msg]" + to_chat(GLOB.admins, msg) SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index 1b2bd4da63..7ed1a890e6 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -264,7 +264,7 @@ em {font-style: normal; font-weight: bold;} .adminobserverooc {color: #0099cc; font-weight: bold;} .adminooc {color: #700038; font-weight: bold;} -.adminobserver {color: #996600; font-weight: bold;} +.adminsay {color: #996600; font-weight: bold;} .admin {color: #386aff; font-weight: bold;} .name { font-weight: bold;} diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index cdf6df2dab..29ec19d846 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -29,7 +29,7 @@ em {font-style: normal; font-weight: bold;} .adminobserverooc {color: #0099cc; font-weight: bold;} .adminooc {color: #700038; font-weight: bold;} -.adminobserver {color: #996600; font-weight: bold;} +.adminsay {color: #996600; font-weight: bold;} .admin {color: #386aff; font-weight: bold;} .name { font-weight: bold;} From 315aaf791bab981270fc84f1cf3e2bdf1bea6500 Mon Sep 17 00:00:00 2001 From: AnturK Date: Fri, 3 Aug 2018 19:41:12 +0200 Subject: [PATCH 297/403] Makes ooc block last whole cinematic and moves the object above hud. (#39512) --- code/datums/cinematic.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/datums/cinematic.dm b/code/datums/cinematic.dm index 321e9c802d..e229b25258 100644 --- a/code/datums/cinematic.dm +++ b/code/datums/cinematic.dm @@ -22,7 +22,8 @@ GLOBAL_LIST_EMPTY(cinematics) /obj/screen/cinematic icon = 'icons/effects/station_explosion.dmi' icon_state = "station_intact" - layer = 21 + plane = SPLASHSCREEN_PLANE + layer = SPLASHSCREEN_LAYER mouse_opacity = MOUSE_OPACITY_TRANSPARENT screen_loc = "1,1" @@ -84,12 +85,13 @@ GLOBAL_LIST_EMPTY(cinematics) //Actually play it content() + //Cleanup + sleep(cleanup_time) + //Restore OOC if(ooc_toggled) toggle_ooc(TRUE) - - //Cleanup - sleep(cleanup_time) + qdel(src) //Sound helper From 27876f0d0a779ce45f10d17af63def246e714b4a Mon Sep 17 00:00:00 2001 From: Militaires Date: Fri, 3 Aug 2018 19:44:00 +0200 Subject: [PATCH 298/403] [s] [HOTFIX] Being bumped into and not just bumping into people makes you visible as agent box (#39514) * revert when done * cyberboss * oh god it's all fucked * fixes agent box --- code/game/objects/items/implants/implant_stealth.dm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/implants/implant_stealth.dm b/code/game/objects/items/implants/implant_stealth.dm index d067371d07..64c8b619c1 100644 --- a/code/game/objects/items/implants/implant_stealth.dm +++ b/code/game/objects/items/implants/implant_stealth.dm @@ -26,10 +26,16 @@ /obj/structure/closet/cardboard/agent/process() alpha = max(0, alpha - 50) +/obj/structure/closet/cardboard/agent/proc/reveal() + alpha = 255 + addtimer(CALLBACK(src, .proc/go_invisible), 10, TIMER_UNIQUE) + /obj/structure/closet/cardboard/agent/Bump(atom/movable/A) . = ..() if(isliving(A)) - alpha = 255 - addtimer(CALLBACK(src, .proc/go_invisible), 10, TIMER_UNIQUE) - + reveal() +/obj/structure/closet/cardboard/agent/Bumped(atom/movable/A) + . = ..() + if(isliving(A)) + reveal() From aeed2bcae8e212221cf42e674d3d6f2c0b3951b0 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 3 Aug 2018 10:44:03 -0700 Subject: [PATCH 299/403] Automatic changelog generation for PR #39514 [ci skip] --- html/changelogs/AutoChangeLog-pr-39514.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39514.yml diff --git a/html/changelogs/AutoChangeLog-pr-39514.yml b/html/changelogs/AutoChangeLog-pr-39514.yml new file mode 100644 index 0000000000..5a61a0fdea --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39514.yml @@ -0,0 +1,4 @@ +author: "Basilman" +delete-after: True +changes: + - bugfix: "fixed agent box invisibility" From 20c8540b021de7f83b469b4a33b2ddcaec974f03 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Fri, 3 Aug 2018 13:47:14 -0400 Subject: [PATCH 300/403] Fixes pods not reaching centcom (#39526) --- _maps/map_files/generic/CentCom.dmm | 2 +- code/modules/shuttle/emergency.dm | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index a08ccf4d47..995a9be39d 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -13129,7 +13129,7 @@ dir = 4; dwidth = 2; height = 7; - id = "pod1_away"; + id = "pod_away"; name = "recovery ship"; width = 5 }, diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 337d590dee..dab76482c2 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -445,7 +445,6 @@ /obj/machinery/computer/shuttle/pod name = "pod control computer" admin_controlled = 1 - shuttleId = "pod" possible_destinations = "pod_asteroid" icon = 'icons/obj/terminals.dmi' icon_state = "dorm_available" From b3538bc71b03d600a8b373346519fbc9c47455c5 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 3 Aug 2018 10:47:16 -0700 Subject: [PATCH 301/403] Automatic changelog generation for PR #39526 [ci skip] --- html/changelogs/AutoChangeLog-pr-39526.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-39526.yml diff --git a/html/changelogs/AutoChangeLog-pr-39526.yml b/html/changelogs/AutoChangeLog-pr-39526.yml new file mode 100644 index 0000000000..80e541963c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-39526.yml @@ -0,0 +1,4 @@ +author: "ninjanomnom" +delete-after: True +changes: + - bugfix: "The first pod spawned had some issues with shuttle id and wouldn't move properly. This has been fixed." From e9a55e09d4c0b12629b8074b9e51ba794f023bfd Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 3 Aug 2018 17:47:58 +0000 Subject: [PATCH 302/403] Automatic changelog compile, [ci skip] --- html/changelog.html | 20 ++++++++++++++++++++ html/changelogs/.all_changelog.yml | 16 ++++++++++++++++ html/changelogs/AutoChangeLog-pr-39382.yml | 4 ---- html/changelogs/AutoChangeLog-pr-39391.yml | 4 ---- html/changelogs/AutoChangeLog-pr-39487.yml | 6 ------ html/changelogs/AutoChangeLog-pr-39490.yml | 4 ---- html/changelogs/AutoChangeLog-pr-39514.yml | 4 ---- html/changelogs/AutoChangeLog-pr-39526.yml | 4 ---- 8 files changed, 36 insertions(+), 26 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-39382.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39391.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39487.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39490.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39514.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-39526.yml diff --git a/html/changelog.html b/html/changelog.html index d6ac4e4313..bec47bdaca 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,14 +56,27 @@ -->

    03 August 2018

    +

    ArcaneMusic updated:

    +
      +
    • Added a new, shoutier RoundEnd Sound.
    • +
    +

    Basilman updated:

    +
      +
    • fixed agent box invisibility
    • +

    Denton updated:

    • Syndicate lavaland base: Added a grenade parts vendor and smoke machine board. The testing chamber now has a heatproof door and vents/scrubbers to replace air after testing gas grenades. Chemical/soda/beer vendors are emagged by default; the vault contains a set of valuable Syndicate documents.
    • +
    • Added a scrubber pipenet to the Lavaland mining base.

    Garen updated:

    • mobs now call COMSIG_PARENT_ATTACKBY
    +

    Kmc2000 updated:

    +
      +
    • You can now attach 4 energy swords to a securiton assembly instead of a baton to create a 4 esword wielding nightmare-bot
    • +

    Mickyan updated:

    @@ -321,7 +332,7 @@ Refresh" - output += "" + output += "" output += "" output += "" output += "" @@ -474,7 +477,7 @@ output += "" output += "" var/limit = " LIMIT [bansperpage * page], [bansperpage]" - var/datum/DBQuery/query_search_bans = SSdbcore.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, round_id FROM [format_table_name("ban")] WHERE [search] ORDER BY bantime DESC[limit]") + var/datum/DBQuery/query_search_bans = SSdbcore.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, (SELECT byond_key FROM [format_table_name("player")] WHERE [format_table_name("player")].ckey = [format_table_name("ban")].ckey), (SELECT byond_key FROM [format_table_name("player")] WHERE [format_table_name("player")].ckey = [format_table_name("ban")].a_ckey), unbanned, (SELECT byond_key FROM [format_table_name("player")] WHERE [format_table_name("player")].ckey = [format_table_name("ban")].unbanned_ckey), unbanned_datetime, edits, round_id FROM [format_table_name("ban")] WHERE [search] ORDER BY bantime DESC[limit]") if(!query_search_bans.warn_execute()) qdel(query_search_bans) return @@ -487,10 +490,10 @@ var/job = query_search_bans.item[5] var/duration = query_search_bans.item[6] var/expiration = query_search_bans.item[7] - var/ckey = query_search_bans.item[8] - var/ackey = query_search_bans.item[9] + var/ban_key = query_search_bans.item[8] + var/a_key = query_search_bans.item[9] var/unbanned = query_search_bans.item[10] - var/unbanckey = query_search_bans.item[11] + var/unban_key = query_search_bans.item[11] var/unbantime = query_search_bans.item[12] var/edits = query_search_bans.item[13] var/round_id = query_search_bans.item[14] @@ -518,9 +521,9 @@ output += "" output += "" - output += "" + output += "" output += "" - output += "" + output += "" output += "" output += "" output += "" @@ -535,7 +538,7 @@ output += "" if(unbanned) output += "" - output += "" + output += "" output += "" output += "" output += "" diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index dc38e2dca9..7d9e50d070 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -23,7 +23,7 @@ //Whitelist if(CONFIG_GET(flag/usewhitelist)) - if(!check_whitelist(ckey(key))) + if(!check_whitelist(ckey)) if (admin) log_admin("The admin [key] has been allowed to bypass the whitelist") message_admins("The admin [key] has been allowed to bypass the whitelist") @@ -50,7 +50,7 @@ if(CONFIG_GET(flag/ban_legacy_system)) //Ban Checking - . = CheckBan( ckey(key), computer_id, address ) + . = CheckBan(ckey, computer_id, address ) if(.) if (admin) log_admin("The admin [key] has been allowed to bypass a matching ban on [.["key"]]") @@ -61,11 +61,8 @@ return . else - - var/ckeytext = ckey(key) - if(!SSdbcore.Connect()) - var/msg = "Ban database connection failure. Key [ckeytext] not checked" + var/msg = "Ban database connection failure. Key [ckey] not checked" log_world(msg) message_admins(msg) return @@ -78,13 +75,13 @@ if(computer_id) cidquery = " OR computerid = '[computer_id]' " - var/datum/DBQuery/query_ban_check = SSdbcore.NewQuery("SELECT ckey, a_ckey, reason, expiration_time, duration, bantime, bantype, id, round_id FROM [format_table_name("ban")] WHERE (ckey = '[ckeytext]' [ipquery] [cidquery]) AND (bantype = 'PERMABAN' OR bantype = 'ADMIN_PERMABAN' OR ((bantype = 'TEMPBAN' OR bantype = 'ADMIN_TEMPBAN') AND expiration_time > Now())) AND isnull(unbanned)") + var/datum/DBQuery/query_ban_check = SSdbcore.NewQuery("SELECT (SELECT byond_key FROM [format_table_name("player")] WHERE [format_table_name("player")].ckey = [format_table_name("ban")].ckey), (SELECT byond_key FROM [format_table_name("player")] WHERE [format_table_name("player")].ckey = [format_table_name("ban")].a_ckey), reason, expiration_time, duration, bantime, bantype, id, round_id FROM [format_table_name("ban")] WHERE (ckey = '[ckey]' [ipquery] [cidquery]) AND (bantype = 'PERMABAN' OR bantype = 'ADMIN_PERMABAN' OR ((bantype = 'TEMPBAN' OR bantype = 'ADMIN_TEMPBAN') AND expiration_time > Now())) AND isnull(unbanned)") if(!query_ban_check.Execute(async = TRUE)) qdel(query_ban_check) return while(query_ban_check.NextRow()) - var/pckey = query_ban_check.item[1] - var/ackey = query_ban_check.item[2] + var/pkey = query_ban_check.item[1] + var/akey = query_ban_check.item[2] var/reason = query_ban_check.item[3] var/expiration = query_ban_check.item[4] var/duration = query_ban_check.item[5] @@ -95,16 +92,16 @@ if (bantype == "ADMIN_PERMABAN" || bantype == "ADMIN_TEMPBAN") //admin bans MUST match on ckey to prevent cid-spoofing attacks // as well as dynamic ip abuse - if (pckey != ckey) + if (ckey(pkey) != ckey) continue if (admin) if (bantype == "ADMIN_PERMABAN" || bantype == "ADMIN_TEMPBAN") log_admin("The admin [key] is admin banned (#[banid]), and has been disallowed access") message_admins("The admin [key] is admin banned (#[banid]), and has been disallowed access") else - log_admin("The admin [key] has been allowed to bypass a matching ban on [pckey] (#[banid])") - message_admins("The admin [key] has been allowed to bypass a matching ban on [pckey] (#[banid])") - addclientmessage(ckey,"You have been allowed to bypass a matching ban on [pckey] (#[banid])") + log_admin("The admin [key] has been allowed to bypass a matching ban on [pkey] (#[banid])") + message_admins("The admin [key] has been allowed to bypass a matching ban on [pkey] (#[banid])") + addclientmessage(ckey,"You have been allowed to bypass a matching ban on [pkey] (#[banid])") continue var/expires = "" if(text2num(duration) > 0) @@ -112,7 +109,7 @@ else expires = " The is a permanent ban." - var/desc = "\nReason: You, or another user of this computer or connection ([pckey]) is banned from playing here. The ban reason is:\n[reason]\nThis ban (BanID #[banid]) was applied by [ackey] on [bantime] during round ID [ban_round_id], [expires]" + var/desc = "\nReason: You, or another user of this computer or connection ([pkey]) is banned from playing here. The ban reason is:\n[reason]\nThis ban (BanID #[banid]) was applied by [akey] on [bantime] during round ID [ban_round_id], [expires]" . = list("reason"="[bantype]", "desc"="[desc]") diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index 1e092a16e9..d81d037c50 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -98,22 +98,22 @@ GLOBAL_PROTECT(Banlist) return 1 -/proc/AddBan(ckey, computerid, reason, bannedby, temp, minutes, address) +/proc/AddBan(key, computerid, reason, bannedby, temp, minutes, address) var/bantimestamp - + var/ban_ckey = ckey(key) if (temp) UpdateTime() bantimestamp = GLOB.CMinutes + minutes GLOB.Banlist.cd = "/base" - if ( GLOB.Banlist.dir.Find("[ckey][computerid]") ) + if ( GLOB.Banlist.dir.Find("[ban_ckey][computerid]") ) to_chat(usr, text("Ban already exists.")) return 0 else - GLOB.Banlist.dir.Add("[ckey][computerid]") - GLOB.Banlist.cd = "/base/[ckey][computerid]" - WRITE_FILE(GLOB.Banlist["key"], ckey) + GLOB.Banlist.dir.Add("[ban_ckey][computerid]") + GLOB.Banlist.cd = "/base/[ban_ckey][computerid]" + WRITE_FILE(GLOB.Banlist["key"], ban_ckey) WRITE_FILE(GLOB.Banlist["id"], computerid) WRITE_FILE(GLOB.Banlist["ip"], address) WRITE_FILE(GLOB.Banlist["reason"], reason) @@ -123,9 +123,9 @@ GLOBAL_PROTECT(Banlist) if (temp) WRITE_FILE(GLOB.Banlist["minutes"], bantimestamp) if(!temp) - create_message("note", ckey, bannedby, "Permanently banned - [reason]", null, null, 0, 0) + create_message("note", key, bannedby, "Permanently banned - [reason]", null, null, 0, 0) else - create_message("note", ckey, bannedby, "Banned for [minutes] minutes - [reason]", null, null, 0, 0) + create_message("note", key, bannedby, "Banned for [minutes] minutes - [reason]", null, null, 0, 0) return 1 /proc/RemoveBan(foldername) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 42740b32c8..b1353ac036 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -29,7 +29,7 @@ body += "Options panel for [M]" if(M.client) body += " played by [M.client] " - body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" + body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" if(CONFIG_GET(flag/use_exp_tracking)) body += "\[" + M.client.get_exp_living() + "\]" @@ -827,7 +827,7 @@ continue if(message) to_chat(C, message) - kicked_client_names.Add("[C.ckey]") + kicked_client_names.Add("[C.key]") qdel(C) return kicked_client_names @@ -856,8 +856,8 @@ tomob.ghostize(0) - message_admins("[key_name_admin(usr)] has put [frommob.ckey] in control of [tomob.name].") - log_admin("[key_name(usr)] stuffed [frommob.ckey] into [tomob.name].") + message_admins("[key_name_admin(usr)] has put [frommob.key] in control of [tomob.name].") + log_admin("[key_name(usr)] stuffed [frommob.key] into [tomob.name].") SSblackbox.record_feedback("tally", "admin_verb", 1, "Ghost Drag Control") tomob.ckey = frommob.ckey diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index ac55eac872..c962aaac41 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -44,29 +44,29 @@ pagecount++ output += "|" var/limit = " LIMIT [logssperpage * page], [logssperpage]" - var/datum/DBQuery/query_search_admin_logs = SSdbcore.NewQuery("SELECT datetime, round_id, adminckey, operation, target, log FROM [format_table_name("admin_log")][search] ORDER BY datetime DESC[limit]") + var/datum/DBQuery/query_search_admin_logs = SSdbcore.NewQuery("SELECT datetime, round_id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), operation, IF(ckey IS NULL, target, byond_key), log FROM [format_table_name("admin_log")] LEFT JOIN [format_table_name("player")] ON target = ckey[search] ORDER BY datetime DESC[limit]") if(!query_search_admin_logs.warn_execute()) qdel(query_search_admin_logs) return while(query_search_admin_logs.NextRow()) var/datetime = query_search_admin_logs.item[1] var/round_id = query_search_admin_logs.item[2] - var/admin_ckey = query_search_admin_logs.item[3] + var/admin_key = query_search_admin_logs.item[3] operation = query_search_admin_logs.item[4] target = query_search_admin_logs.item[5] var/log = query_search_admin_logs.item[6] - output += "

    [datetime] | Round ID [round_id] | Admin [admin_ckey] | Operation [operation] on [target]
    [log]


    " + output += "

    [datetime] | Round ID [round_id] | Admin [admin_key] | Operation [operation] on [target]
    [log]


    " qdel(query_search_admin_logs) if(action == 2) output += "

    Admin ckeys with invalid ranks

    " - var/datum/DBQuery/query_check_admin_errors = SSdbcore.NewQuery("SELECT ckey, [format_table_name("admin")].rank FROM [format_table_name("admin")] LEFT JOIN [format_table_name("admin_ranks")] ON [format_table_name("admin_ranks")].rank = [format_table_name("admin")].rank WHERE [format_table_name("admin_ranks")].rank IS NULL") + var/datum/DBQuery/query_check_admin_errors = SSdbcore.NewQuery("SELECT (SELECT byond_key FROM [format_table_name("player")] WHERE [format_table_name("player")].ckey = [format_table_name("admin")].ckey), [format_table_name("admin")].rank FROM [format_table_name("admin")] LEFT JOIN [format_table_name("admin_ranks")] ON [format_table_name("admin_ranks")].rank = [format_table_name("admin")].rank WHERE [format_table_name("admin_ranks")].rank IS NULL") if(!query_check_admin_errors.warn_execute()) qdel(query_check_admin_errors) return while(query_check_admin_errors.NextRow()) - var/admin_ckey = query_check_admin_errors.item[1] + var/admin_key = query_check_admin_errors.item[1] var/admin_rank = query_check_admin_errors.item[2] - output += "[admin_ckey] has non-existent rank [admin_rank] | \[Change Rank\] | \[Remove\]" + output += "[admin_key] has non-existent rank [admin_rank] | \[Change Rank\] | \[Remove\]" output += "
    " qdel(query_check_admin_errors) output += "

    Unused ranks

    " @@ -104,16 +104,18 @@ if (!D) continue var/deadminlink = "" + if(D.owner) + adm_ckey = D.owner.key if (D.deadmined) - deadminlink = " \[RA\]" + deadminlink = " \[RA\]" else - deadminlink = " \[DA\]" + deadminlink = " \[DA\]" output += "" - output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" + output += "" + output += "" output += "" output += "
    Ckey:
    Key:
    IP: Computer id:
    Duration: OPTIONS
    [typedesc][ckey][ban_key][bantime] (Round ID: [round_id])[ackey][a_key][(unbanned) ? "" : "Unban"]
    UNBANNED by admin [unbanckey] on [unbantime]UNBANNED by admin [unban_key] on [unbantime]
     
    [adm_ckey]
    [deadminlink]\[-\]\[SYNC TGDB\]
    [D.rank.name][rights2text(D.rank.include_rights," ")][rights2text(D.rank.exclude_rights," ", "-")][rights2text(D.rank.can_edit_rights," ", "*")][adm_ckey]
    [deadminlink]\[-\]\[SYNC TGDB\]
    [D.rank.name][rights2text(D.rank.include_rights," ")][rights2text(D.rank.exclude_rights," ", "-")][rights2text(D.rank.can_edit_rights," ", "*")]
    Search:
    " if(QDELETED(usr)) @@ -130,7 +132,8 @@ return var/datum/asset/permissions_assets = get_asset_datum(/datum/asset/simple/permissions) permissions_assets.send(src) - var/admin_ckey = ckey(href_list["ckey"]) + var/admin_key = href_list["key"] + var/admin_ckey = ckey(admin_key) var/datum/admins/D = GLOB.admin_datums[admin_ckey] var/use_db var/task = href_list["editrights"] @@ -172,38 +175,39 @@ if(!D) return if((task != "sync") && !check_if_greater_rights_than_holder(D)) - message_admins("[key_name_admin(usr)] attempted to change the rank of [admin_ckey] without sufficient rights.") - log_admin("[key_name(usr)] attempted to change the rank of [admin_ckey] without sufficient rights.") + message_admins("[key_name_admin(usr)] attempted to change the rank of [admin_key] without sufficient rights.") + log_admin("[key_name(usr)] attempted to change the rank of [admin_key] without sufficient rights.") return switch(task) if("add") - admin_ckey = add_admin(admin_ckey, use_db) + admin_ckey = add_admin(admin_ckey, admin_key, use_db) if(!admin_ckey) return - change_admin_rank(admin_ckey, use_db, null, legacy_only) + change_admin_rank(admin_ckey, admin_key, use_db, null, legacy_only) if("remove") - remove_admin(admin_ckey, use_db, D) + remove_admin(admin_ckey, admin_key, use_db, D) if("rank") - change_admin_rank(admin_ckey, use_db, D, legacy_only) + change_admin_rank(admin_ckey, admin_key, use_db, D, legacy_only) if("permissions") - change_admin_flags(admin_ckey, use_db, D, legacy_only) + change_admin_flags(admin_ckey, admin_key, use_db, D, legacy_only) if("activate") - force_readmin(admin_ckey, D) + force_readmin(admin_key, D) if("deactivate") - force_deadmin(admin_ckey, D) + force_deadmin(admin_key, D) if("sync") - sync_lastadminrank(admin_ckey, D) + sync_lastadminrank(admin_ckey, admin_key, D) edit_admin_permissions() -/datum/admins/proc/add_admin(admin_ckey, use_db) +/datum/admins/proc/add_admin(admin_ckey, admin_key, use_db) if(admin_ckey) . = admin_ckey else - . = ckey(input("New admin's ckey","Admin ckey") as text|null) + admin_key = input("New admin's key","Admin key") as text|null + . = ckey(admin_key) if(!.) return FALSE if(!admin_ckey && (. in GLOB.admin_datums+GLOB.deadmins)) - to_chat(usr, "[.] is already an admin.") + to_chat(usr, "[admin_key] is already an admin.") return FALSE if(use_db) . = sanitizeSQL(.) @@ -214,7 +218,7 @@ return FALSE if(query_admin_in_db.NextRow()) qdel(query_admin_in_db) - to_chat(usr, "[.] already listed in admin database. Check the Management tab if they don't appear in the list of admins.") + to_chat(usr, "[admin_key] already listed in admin database. Check the Management tab if they don't appear in the list of admins.") return FALSE qdel(query_admin_in_db) var/datum/DBQuery/query_add_admin = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin")] (ckey, rank) VALUES ('[.]', 'NEW ADMIN')") @@ -228,14 +232,14 @@ return FALSE qdel(query_add_admin_log) -/datum/admins/proc/remove_admin(admin_ckey, use_db, datum/admins/D) +/datum/admins/proc/remove_admin(admin_ckey, admin_key, use_db, datum/admins/D) if(alert("Are you sure you want to remove [admin_ckey]?","Confirm Removal","Do it","Cancel") == "Do it") GLOB.admin_datums -= admin_ckey GLOB.deadmins -= admin_ckey if(D) D.disassociate() - var/m1 = "[key_name_admin(usr)] removed [admin_ckey] from the admins list [use_db ? "permanently" : "temporarily"]" - var/m2 = "[key_name(usr)] removed [admin_ckey] from the admins list [use_db ? "permanently" : "temporarily"]" + var/m1 = "[key_name_admin(usr)] removed [admin_key] from the admins list [use_db ? "permanently" : "temporarily"]" + var/m2 = "[key_name(usr)] removed [admin_key] from the admins list [use_db ? "permanently" : "temporarily"]" if(use_db) var/datum/DBQuery/query_add_rank = SSdbcore.NewQuery("DELETE FROM [format_table_name("admin")] WHERE ckey = '[admin_ckey]'") if(!query_add_rank.warn_execute()) @@ -247,25 +251,25 @@ qdel(query_add_rank_log) return qdel(query_add_rank_log) - sync_lastadminrank(admin_ckey) + sync_lastadminrank(admin_ckey, admin_key) message_admins(m1) log_admin(m2) -/datum/admins/proc/force_readmin(admin_ckey, datum/admins/D) +/datum/admins/proc/force_readmin(admin_key, datum/admins/D) if(!D || !D.deadmined) return D.activate() - message_admins("[key_name_admin(usr)] forcefully readmined [admin_ckey]") - log_admin("[key_name(usr)] forcefully readmined [admin_ckey]") + message_admins("[key_name_admin(usr)] forcefully readmined [admin_key]") + log_admin("[key_name(usr)] forcefully readmined [admin_key]") -/datum/admins/proc/force_deadmin(admin_ckey, datum/admins/D) +/datum/admins/proc/force_deadmin(admin_key, datum/admins/D) if(!D || D.deadmined) return - message_admins("[key_name_admin(usr)] forcefully deadmined [admin_ckey]") - log_admin("[key_name(usr)] forcefully deadmined [admin_ckey]") + message_admins("[key_name_admin(usr)] forcefully deadmined [admin_key]") + log_admin("[key_name(usr)] forcefully deadmined [admin_key]") D.deactivate() //after logs so the deadmined admin can see the message. -/datum/admins/proc/change_admin_rank(admin_ckey, use_db, datum/admins/D, legacy_only) +/datum/admins/proc/change_admin_rank(admin_ckey, admin_key, use_db, datum/admins/D, legacy_only) var/datum/admin_rank/R var/list/rank_names = list() if(!use_db || (use_db && !legacy_only)) @@ -285,8 +289,8 @@ else R = new(new_rank) //blank new admin_rank GLOB.admin_ranks += R - var/m1 = "[key_name_admin(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]" - var/m2 = "[key_name(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]" + var/m1 = "[key_name_admin(usr)] edited the admin rank of [admin_key] to [new_rank] [use_db ? "permanently" : "temporarily"]" + var/m2 = "[key_name(usr)] edited the admin rank of [admin_key] to [new_rank] [use_db ? "permanently" : "temporarily"]" if(use_db) new_rank = sanitizeSQL(new_rank) //if a player was tempminned before having a permanent change made to their rank they won't yet be in the db @@ -296,7 +300,7 @@ qdel(query_admin_in_db) return if(!query_admin_in_db.NextRow()) - add_admin(admin_ckey, TRUE) + add_admin(admin_ckey, admin_key, TRUE) old_rank = "NEW ADMIN" else old_rank = query_admin_in_db.item[1] @@ -339,18 +343,18 @@ message_admins(m1) log_admin(m2) -/datum/admins/proc/change_admin_flags(admin_ckey, use_db, datum/admins/D, legacy_only) - var/new_flags = input_bitfield(usr, "Include permission flags
    [use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.include_rights, 350, 590, allowed_edit_list = usr.client.holder.rank.can_edit_rights) +/datum/admins/proc/change_admin_flags(admin_ckey, admin_key, use_db, datum/admins/D, legacy_only) + var/new_flags = input_bitfield(usr, "Include permission flags
    [use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_key]"]", "admin_flags", D.rank.include_rights, 350, 590, allowed_edit_list = usr.client.holder.rank.can_edit_rights) if(isnull(new_flags)) return - var/new_exclude_flags = input_bitfield(usr, "Exclude permission flags
    Flags enabled here will be removed from a rank.
    Note these take precedence over included flags.
    [use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.exclude_rights, 350, 670, "red", usr.client.holder.rank.can_edit_rights) + var/new_exclude_flags = input_bitfield(usr, "Exclude permission flags
    Flags enabled here will be removed from a rank.
    Note these take precedence over included flags.
    [use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_key]"]", "admin_flags", D.rank.exclude_rights, 350, 670, "red", usr.client.holder.rank.can_edit_rights) if(isnull(new_exclude_flags)) return - var/new_can_edit_flags = input_bitfield(usr, "Editable permission flags
    These are the flags this rank is allowed to edit if they have access to the permissions panel.
    They will be unable to modify admins to a rank that has a flag not included here.
    [use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.can_edit_rights, 350, 710, allowed_edit_list = usr.client.holder.rank.can_edit_rights) + var/new_can_edit_flags = input_bitfield(usr, "Editable permission flags
    These are the flags this rank is allowed to edit if they have access to the permissions panel.
    They will be unable to modify admins to a rank that has a flag not included here.
    [use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_key]"]", "admin_flags", D.rank.can_edit_rights, 350, 710, allowed_edit_list = usr.client.holder.rank.can_edit_rights) if(isnull(new_can_edit_flags)) return - var/m1 = "[key_name_admin(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_ckey] temporarily"]" - var/m2 = "[key_name(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_ckey] temporarily"]" + var/m1 = "[key_name_admin(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_key] temporarily"]" + var/m2 = "[key_name(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_key] temporarily"]" if(use_db || legacy_only) var/old_flags var/old_exclude_flags @@ -446,7 +450,7 @@ message_admins(m1) log_admin(m2) -/datum/admins/proc/sync_lastadminrank(admin_ckey, datum/admins/D) +/datum/admins/proc/sync_lastadminrank(admin_ckey, admin_key, datum/admins/D) var/sqlrank = "Player" if (D) sqlrank = sanitizeSQL(D.rank.name) @@ -456,4 +460,4 @@ qdel(query_sync_lastadminrank) return qdel(query_sync_lastadminrank) - to_chat(usr, "Sync of [admin_ckey] successful.") + to_chat(usr, "Sync of [admin_key] successful.") diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index bdc92649ff..04dda31d48 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -1,28 +1,32 @@ -/proc/create_message(type, target_ckey, admin_ckey, text, timestamp, server, secret, logged = 1, browse) +/proc/create_message(type, target_key, admin_ckey, text, timestamp, server, secret, logged = 1, browse) if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return if(!type) return - if(!target_ckey && (type == "note" || type == "message" || type == "watchlist entry")) - var/new_ckey = ckey(input(usr,"Who would you like to create a [type] for?","Enter a ckey",null) as null|text) - if(!new_ckey) + var/target_ckey + if(!target_key && (type == "note" || type == "message" || type == "watchlist entry")) + var/new_key = input(usr,"Who would you like to create a [type] for?","Enter a key or ckey",null) as null|text + if(!new_key) return - new_ckey = sanitizeSQL(new_ckey) + var/new_ckey = sanitizeSQL(ckey(new_key)) var/datum/DBQuery/query_find_ckey = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ckey = '[new_ckey]'") if(!query_find_ckey.warn_execute()) qdel(query_find_ckey) return if(!query_find_ckey.NextRow()) - if(alert(usr, "[new_ckey] has not been seen before, are you sure you want to create a [type] for them?", "Unknown ckey", "Yes", "No", "Cancel") != "Yes") + if(alert(usr, "[new_key]/([new_ckey]) has not been seen before, are you sure you want to create a [type] for them?", "Unknown ckey", "Yes", "No", "Cancel") != "Yes") qdel(query_find_ckey) return qdel(query_find_ckey) target_ckey = new_ckey + target_key = new_key if(QDELETED(usr)) return if(target_ckey) target_ckey = sanitizeSQL(target_ckey) + if(!target_key) + target_key = target_ckey if(!admin_ckey) admin_ckey = usr.ckey if(!admin_ckey) @@ -51,8 +55,8 @@ else return var/datum/DBQuery/query_create_message = SSdbcore.NewQuery("INSERT INTO [format_table_name("messages")] (type, targetckey, adminckey, text, timestamp, server, server_ip, server_port, round_id, secret) VALUES ('[type]', '[target_ckey]', '[admin_ckey]', '[text]', '[timestamp]', '[server]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', '[GLOB.round_id]','[secret]')") - var/pm = "[key_name(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""]: [text]" - var/header = "[key_name_admin(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""]" + var/pm = "[key_name(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""]: [text]" + var/header = "[key_name_admin(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""]" if(!query_create_message.warn_execute()) qdel(query_create_message) return @@ -75,18 +79,18 @@ if(!message_id) return var/type - var/target_ckey + var/target_key var/text var/user_key_name = key_name(usr) var/user_name_admin = key_name_admin(usr) - var/datum/DBQuery/query_find_del_message = SSdbcore.NewQuery("SELECT type, targetckey, adminckey, text FROM [format_table_name("messages")] WHERE id = [message_id] AND deleted = 0") + var/datum/DBQuery/query_find_del_message = SSdbcore.NewQuery("SELECT type, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), text FROM [format_table_name("messages")] WHERE id = [message_id] AND deleted = 0") if(!query_find_del_message.warn_execute()) qdel(query_find_del_message) return if(query_find_del_message.NextRow()) type = query_find_del_message.item[1] - target_ckey = query_find_del_message.item[2] - text = query_find_del_message.item[4] + target_key = query_find_del_message.item[2] + text = query_find_del_message.item[3] qdel(query_find_del_message) var/datum/DBQuery/query_del_message = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET deleted = 1 WHERE id = [message_id]") if(!query_del_message.warn_execute()) @@ -94,14 +98,14 @@ return qdel(query_del_message) if(logged) - var/m1 = "[user_key_name] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_ckey]: [text]" - var/m2 = "[user_name_admin] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_ckey]:
    [text]" + var/m1 = "[user_key_name] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_key]: [text]" + var/m2 = "[user_name_admin] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_key]:
    [text]" log_admin_private(m1) message_admins(m2) if(browse) browse_messages("[type]") else - browse_messages(target_ckey = target_ckey, agegate = TRUE) + browse_messages(target_ckey = ckey(target_key), agegate = TRUE) /proc/edit_message(message_id, browse) if(!SSdbcore.Connect()) @@ -110,33 +114,36 @@ message_id = text2num(message_id) if(!message_id) return - var/datum/DBQuery/query_find_edit_message = SSdbcore.NewQuery("SELECT type, targetckey, adminckey, text FROM [format_table_name("messages")] WHERE id = [message_id] AND deleted = 0") + var/editor_ckey = sanitizeSQL(usr.ckey) + var/editor_key = sanitizeSQL(usr.key) + var/kn = key_name(usr) + var/kna = key_name_admin(usr) + var/datum/DBQuery/query_find_edit_message = SSdbcore.NewQuery("SELECT type, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text FROM [format_table_name("messages")] WHERE id = [message_id] AND deleted = 0") if(!query_find_edit_message.warn_execute()) qdel(query_find_edit_message) return if(query_find_edit_message.NextRow()) var/type = query_find_edit_message.item[1] - var/target_ckey = query_find_edit_message.item[2] - var/admin_ckey = query_find_edit_message.item[3] + var/target_key = query_find_edit_message.item[2] + var/admin_key = query_find_edit_message.item[3] var/old_text = query_find_edit_message.item[4] - var/editor_ckey = sanitizeSQL(usr.ckey) var/new_text = input("Input new [type]", "New [type]", "[old_text]") as null|message if(!new_text) qdel(query_find_edit_message) return new_text = sanitizeSQL(new_text) - var/edit_text = sanitizeSQL("Edited by [editor_ckey] on [SQLtime()] from
    [old_text]
    to
    [new_text]
    ") + var/edit_text = sanitizeSQL("Edited by [editor_key] on [SQLtime()] from
    [old_text]
    to
    [new_text]
    ") var/datum/DBQuery/query_edit_message = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET text = '[new_text]', lasteditor = '[editor_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE id = [message_id] AND deleted = 0") if(!query_edit_message.warn_execute()) qdel(query_edit_message) return qdel(query_edit_message) - log_admin_private("[key_name(usr)] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""] made by [admin_ckey] from [old_text] to [new_text]") - message_admins("[key_name_admin(usr)] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_ckey]" : ""] made by [admin_ckey] from
    [old_text]
    to
    [new_text]") + log_admin_private("[kn] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""] made by [admin_key] from [old_text] to [new_text]") + message_admins("[kna] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""] made by [admin_key] from
    [old_text]
    to
    [new_text]") if(browse) browse_messages("[type]") else - browse_messages(target_ckey = target_ckey, agegate = TRUE) + browse_messages(target_ckey = ckey(target_key), agegate = TRUE) qdel(query_find_edit_message) /proc/toggle_message_secrecy(message_id) @@ -146,29 +153,29 @@ message_id = text2num(message_id) if(!message_id) return - var/editor_ckey = usr.ckey + var/editor_ckey = sanitizeSQL(usr.ckey) + var/editor_key = sanitizeSQL(usr.key) var/kn = key_name(usr) var/kna = key_name_admin(usr) - var/datum/DBQuery/query_find_message_secret = SSdbcore.NewQuery("SELECT type, targetckey, adminckey, secret FROM [format_table_name("messages")] WHERE id = [message_id] AND deleted = 0") + var/datum/DBQuery/query_find_message_secret = SSdbcore.NewQuery("SELECT type, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), secret FROM [format_table_name("messages")] WHERE id = [message_id] AND deleted = 0") if(!query_find_message_secret.warn_execute()) qdel(query_find_message_secret) return if(query_find_message_secret.NextRow()) var/type = query_find_message_secret.item[1] - var/target_ckey = query_find_message_secret.item[2] - var/admin_ckey = query_find_message_secret.item[3] + var/target_key = query_find_message_secret.item[2] + var/admin_key = query_find_message_secret.item[3] var/secret = text2num(query_find_message_secret.item[4]) - editor_ckey = sanitizeSQL(editor_ckey) - var/edit_text = "Made [secret ? "not secret" : "secret"] by [editor_ckey] on [SQLtime()]
    " + var/edit_text = "Made [secret ? "not secret" : "secret"] by [editor_key] on [SQLtime()]
    " var/datum/DBQuery/query_message_secret = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET secret = NOT secret, lasteditor = '[editor_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE id = [message_id]") if(!query_message_secret.warn_execute()) qdel(query_find_message_secret) qdel(query_message_secret) return qdel(query_message_secret) - log_admin_private("[kn] has toggled [target_ckey]'s [type] made by [admin_ckey] to [secret ? "not secret" : "secret"]") - message_admins("[kna] has toggled [target_ckey]'s [type] made by [admin_ckey] to [secret ? "not secret" : "secret"]") - browse_messages(target_ckey = target_ckey, agegate = TRUE) + log_admin_private("[kn] has toggled [target_key]'s [type] made by [admin_key] to [secret ? "not secret" : "secret"]") + message_admins("[kna] has toggled [target_key]'s [type] made by [admin_key] to [secret ? "not secret" : "secret"]") + browse_messages(target_ckey = ckey(target_key), agegate = TRUE) qdel(query_find_message_secret) /proc/browse_messages(type, target_ckey, index, linkless = FALSE, filter, agegate = FALSE) @@ -200,7 +207,7 @@ else output += "|\[Filter offline clients\]" output += ruler - var/datum/DBQuery/query_get_type_messages = SSdbcore.NewQuery("SELECT id, targetckey, adminckey, text, timestamp, server, lasteditor FROM [format_table_name("messages")] WHERE type = '[type]' AND deleted = 0") + var/datum/DBQuery/query_get_type_messages = SSdbcore.NewQuery("SELECT id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), targetckey, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, server, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor) FROM [format_table_name("messages")] WHERE type = '[type]' AND deleted = 0") if(!query_get_type_messages.warn_execute()) qdel(query_get_type_messages) return @@ -208,27 +215,29 @@ if(QDELETED(usr)) return var/id = query_get_type_messages.item[1] - var/t_ckey = query_get_type_messages.item[2] + var/t_key = query_get_type_messages.item[2] + var/t_ckey = query_get_type_messages.item[3] if(type == "watchlist entry" && filter && !(t_ckey in GLOB.directory)) continue - var/admin_ckey = query_get_type_messages.item[3] - var/text = query_get_type_messages.item[4] - var/timestamp = query_get_type_messages.item[5] - var/server = query_get_type_messages.item[6] - var/editor_ckey = query_get_type_messages.item[7] + var/admin_key = query_get_type_messages.item[4] + var/text = query_get_type_messages.item[5] + var/timestamp = query_get_type_messages.item[6] + var/server = query_get_type_messages.item[7] + var/editor_key = query_get_type_messages.item[8] output += "" if(type == "watchlist entry") - output += "[t_ckey] | " - output += "[timestamp] | [server] | [admin_ckey]" + output += "[t_key] | " + output += "[timestamp] | [server] | [admin_key]" output += " \[Delete\]" output += " \[Edit\]" - if(editor_ckey) - output += " Last edit by [editor_ckey] (Click here to see edit log)" + if(editor_key) + output += " Last edit by [editor_key] (Click here to see edit log)" output += "
    [text]
    " qdel(query_get_type_messages) if(target_ckey) target_ckey = sanitizeSQL(target_ckey) - var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, adminckey, text, timestamp, server, lasteditor, DATEDIFF(NOW(), timestamp) AS `age` FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = '[target_ckey]' AND deleted = 0 ORDER BY timestamp DESC") + var/target_key + var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, server, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor), DATEDIFF(NOW(), timestamp) AS `age`, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey) FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = '[target_ckey]' AND deleted = 0 ORDER BY timestamp DESC") if(!query_get_messages.warn_execute()) qdel(query_get_messages) return @@ -246,12 +255,13 @@ if(linkless && secret) continue var/id = query_get_messages.item[3] - var/admin_ckey = query_get_messages.item[4] + var/admin_key = query_get_messages.item[4] var/text = query_get_messages.item[5] var/timestamp = query_get_messages.item[6] var/server = query_get_messages.item[7] - var/editor_ckey = query_get_messages.item[8] + var/editor_key = query_get_messages.item[8] var/age = text2num(query_get_messages.item[9]) + target_key = query_get_messages.item[10] var/alphatext = "" var/nsd = CONFIG_GET(number/note_stale_days) var/nfd = CONFIG_GET(number/note_fresh_days) @@ -266,19 +276,19 @@ skipped = TRUE alphatext = "filter: alpha(opacity=[alpha]); opacity: [alpha/100];" - var/list/data = list("

    [timestamp] | [server] | [admin_ckey]") + var/list/data = list("

    [timestamp] | [server] | [admin_key]") if(!linkless) data += " \[Delete\]" if(type == "note") data += " [secret ? "\[Secret\]" : "\[Not secret\]"]" if(type == "message sent") data += " Message has been sent" - if(editor_ckey) + if(editor_key) data += "|" else data += " \[Edit\]" - if(editor_ckey) - data += " Last edit by [editor_ckey] (Click here to see edit log)" + if(editor_key) + data += " Last edit by [editor_key] (Click here to see edit log)" data += "
    [text]


    " switch(type) if("message") @@ -290,11 +300,11 @@ if("note") notedata += data qdel(query_get_messages) - output += "

    [target_ckey]

    " + output += "

    [target_key]

    " if(!linkless) - output += "\[Add note\]" - output += " \[Add message\]" - output += " \[Add to watchlist\]" + output += "\[Add note\]" + output += " \[Add message\]" + output += " \[Add to watchlist\]" output += " \[Refresh page\]
    " else output += " \[Refresh page\]
    " @@ -318,7 +328,6 @@ else output += "
    \[Hide Old\]
    " if(index) - var/index_ckey var/search output += "
    \[Add message\]\[Add watchlist entry\]\[Add note\]
    " output += ruler @@ -331,15 +340,16 @@ search = "^\[^\[:alpha:\]\]" else search = "^[index]" - var/datum/DBQuery/query_list_messages = SSdbcore.NewQuery("SELECT DISTINCT targetckey FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey REGEXP '[search]' AND deleted = 0 ORDER BY targetckey") + var/datum/DBQuery/query_list_messages = SSdbcore.NewQuery("SELECT DISTINCT targetckey, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey) FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey REGEXP '[search]' AND deleted = 0 ORDER BY targetckey") if(!query_list_messages.warn_execute()) qdel(query_list_messages) return while(query_list_messages.NextRow()) if(QDELETED(usr)) return - index_ckey = query_list_messages.item[1] - output += "[index_ckey]
    " + var/index_ckey = query_list_messages.item[1] + var/index_key = query_list_messages.item[2] + output += "[index_key]
    " qdel(query_list_messages) else if(!type && !target_ckey && !index) output += "
    \[Add message\]\[Add watchlist entry\]\[Add note\]
    " @@ -355,7 +365,7 @@ var/output if(target_ckey) target_ckey = sanitizeSQL(target_ckey) - var/query = "SELECT id, adminckey, text, timestamp, lasteditor FROM [format_table_name("messages")] WHERE type = '[type]' AND deleted = 0" + var/query = "SELECT id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor) FROM [format_table_name("messages")] WHERE type = '[type]' AND deleted = 0" if(type == "message" || type == "watchlist entry") query += " AND targetckey = '[target_ckey]'" var/datum/DBQuery/query_get_message_output = SSdbcore.NewQuery(query) @@ -364,13 +374,13 @@ return while(query_get_message_output.NextRow()) var/message_id = query_get_message_output.item[1] - var/admin_ckey = query_get_message_output.item[2] + var/admin_key = query_get_message_output.item[2] var/text = query_get_message_output.item[3] var/timestamp = query_get_message_output.item[4] - var/editor_ckey = query_get_message_output.item[5] + var/editor_key = query_get_message_output.item[5] switch(type) if("message") - output += "Admin message left by [admin_ckey] on [timestamp]" + output += "Admin message left by [admin_key] on [timestamp]" output += "
    [text]
    " var/datum/DBQuery/query_message_read = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET type = 'message sent' WHERE id = [message_id]") if(!query_message_read.warn_execute()) @@ -382,9 +392,9 @@ message_admins("Notice: [key_name_admin(target_ckey)] has been on the watchlist since [timestamp] and has just connected - Reason: [text]") send2irc_adminless_only("Watchlist", "[key_name(target_ckey)] is on the watchlist and has just connected - Reason: [text]") if("memo") - output += "Memo by [admin_ckey] on [timestamp]" - if(editor_ckey) - output += "
    Last edit by [editor_ckey] (Click here to see edit log)" + output += "Memo by [admin_key] on [timestamp]" + if(editor_key) + output += "
    Last edit by [editor_key] (Click here to see edit log)" output += "
    [text]

    " qdel(query_get_message_output) return output diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index b0dd821afa..378cf7a701 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -206,15 +206,14 @@ if(!check_rights(R_BAN)) return var/bantype = text2num(href_list["dbbanaddtype"]) - var/banckey = href_list["dbbanaddckey"] + var/bankey = href_list["dbbanaddkey"] + var/banckey = ckey(bankey) var/banip = href_list["dbbanaddip"] var/bancid = href_list["dbbanaddcid"] var/banduration = text2num(href_list["dbbaddduration"]) var/banjob = href_list["dbbanaddjob"] var/banreason = href_list["dbbanreason"] - banckey = ckey(banckey) - switch(bantype) if(BANTYPE_PERMA) if(!banckey || !banreason) @@ -264,12 +263,12 @@ if(bancid) banreason = "[banreason] (CUSTOM CID)" else - message_admins("Ban process: A mob matching [playermob.ckey] was found at location [playermob.x], [playermob.y], [playermob.z]. Custom ip and computer id fields replaced with the ip and computer id from the located mob.") + message_admins("Ban process: A mob matching [playermob.key] was found at location [playermob.x], [playermob.y], [playermob.z]. Custom ip and computer id fields replaced with the ip and computer id from the located mob.") - if(!DB_ban_record(bantype, playermob, banduration, banreason, banjob, banckey, banip, bancid )) + if(!DB_ban_record(bantype, playermob, banduration, banreason, banjob, bankey, banip, bancid )) to_chat(usr, "Failed to apply ban.") return - create_message("note", banckey, null, banreason, null, null, 0, 0) + create_message("note", bankey, null, banreason, null, null, 0, 0) else if(href_list["editrightsbrowser"]) edit_admin_permissions(0) @@ -279,9 +278,9 @@ if(href_list["editrightsbrowsermanage"]) if(href_list["editrightschange"]) - change_admin_rank(href_list["editrightschange"], TRUE) + change_admin_rank(ckey(href_list["editrightschange"]), href_list["editrightschange"], TRUE) else if(href_list["editrightsremove"]) - remove_admin(href_list["editrightsremove"], TRUE) + remove_admin(ckey(href_list["editrightsremove"]), href_list["editrightsremove"], TRUE) else if(href_list["editrightsremoverank"]) remove_rank(href_list["editrightsremoverank"]) edit_admin_permissions(2) @@ -591,9 +590,9 @@ if(M.client) jobban_buildcache(M.client) message_admins("[key_name_admin(usr)] removed [key_name_admin(M)]'s appearance ban.") - to_chat(M, "[usr.client.ckey] has removed your appearance ban.") + to_chat(M, "[usr.client.key] has removed your appearance ban.") - else switch(alert("Appearance ban [M.ckey]?",,"Yes","No", "Cancel")) + else switch(alert("Appearance ban [M.key]?",,"Yes","No", "Cancel")) if("Yes") var/reason = input(usr,"Please State Reason.","Reason") as message|null if(!reason) @@ -605,9 +604,9 @@ jobban_buildcache(M.client) ban_unban_log_save("[key_name(usr)] appearance banned [key_name(M)]. reason: [reason]") log_admin_private("[key_name(usr)] appearance banned [key_name(M)]. \nReason: [reason]") - create_message("note", M.ckey, null, "Appearance banned - [reason]", null, null, 0, 0) + create_message("note", M.key, null, "Appearance banned - [reason]", null, null, 0, 0) message_admins("[key_name_admin(usr)] appearance banned [key_name_admin(M)].") - to_chat(M, "You have been appearance banned by [usr.client.ckey].") + to_chat(M, "You have been appearance banned by [usr.client.key].") to_chat(M, "The reason is: [reason]") to_chat(M, "Appearance ban can be lifted only upon request.") var/bran = CONFIG_GET(string/banappeals) @@ -968,13 +967,13 @@ //Banning comes first if(notbannedlist.len) //at least 1 unbanned job exists in joblist so we have stuff to ban. - switch(alert("Temporary Ban for [M.ckey]?",,"Yes","No", "Cancel")) + switch(alert("Temporary Ban for [M.key]?",,"Yes","No", "Cancel")) if("Yes") var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null if(mins <= 0) to_chat(usr, "[mins] is not a valid duration.") return - var/reason = input(usr,"Please State Reason For Banning [M.ckey].","Reason") as message|null + var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null if(!reason) return @@ -991,15 +990,15 @@ msg = job else msg += ", [job]" - create_message("note", M.ckey, null, "Banned from [msg] - [reason]", null, null, 0, 0) + create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes.") - to_chat(M, "You have been [(msg == ("ooc" || "appearance")) ? "banned" : "jobbanned"] by [usr.client.ckey] from: [msg].") + to_chat(M, "You have been [(msg == ("ooc" || "appearance")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg].") to_chat(M, "The reason is: [reason]") to_chat(M, "This jobban will be lifted in [mins] minutes.") href_list["jobban2"] = 1 // lets it fall through and refresh return 1 if("No") - var/reason = input(usr,"Please State Reason For Banning [M.ckey].","Reason") as message|null + var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null if(reason) var/msg for(var/job in notbannedlist) @@ -1014,9 +1013,9 @@ msg = job else msg += ", [job]" - create_message("note", M.ckey, null, "Banned from [msg] - [reason]", null, null, 0, 0) + create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg].") - to_chat(M, "You have been [(msg == ("ooc" || "appearance")) ? "banned" : "jobbanned"] by [usr.client.ckey] from: [msg].") + to_chat(M, "You have been [(msg == ("ooc" || "appearance")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg].") to_chat(M, "The reason is: [reason]") to_chat(M, "Jobban can be lifted only upon request.") href_list["jobban2"] = 1 // lets it fall through and refresh @@ -1047,7 +1046,7 @@ continue if(msg) message_admins("[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg].") - to_chat(M, "You have been un-jobbanned by [usr.client.ckey] from [msg].") + to_chat(M, "You have been un-jobbanned by [usr.client.key] from [msg].") href_list["jobban2"] = 1 // lets it fall through and refresh return 1 return 0 //we didn't do anything! @@ -1068,7 +1067,7 @@ if(!M.client) to_chat(usr, "Error: [M] no longer has a client!") return - to_chat(M, "You have been kicked from the server by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.ckey]"].") + to_chat(M, "You have been kicked from the server by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"].") log_admin("[key_name(usr)] kicked [key_name(M)].") message_admins("[key_name_admin(usr)] kicked [key_name_admin(M)].") qdel(M.client) @@ -1076,20 +1075,20 @@ else if(href_list["addmessage"]) if(!check_rights(R_ADMIN)) return - var/target_ckey = href_list["addmessage"] - create_message("message", target_ckey, secret = 0) + var/target_key = href_list["addmessage"] + create_message("message", target_key, secret = 0) else if(href_list["addnote"]) if(!check_rights(R_ADMIN)) return - var/target_ckey = href_list["addnote"] - create_message("note", target_ckey) + var/target_key = href_list["addnote"] + create_message("note", target_key) else if(href_list["addwatch"]) if(!check_rights(R_ADMIN)) return - var/target_ckey = href_list["addwatch"] - create_message("watchlist entry", target_ckey, secret = 1) + var/target_key = href_list["addwatch"] + create_message("watchlist entry", target_key, secret = 1) else if(href_list["addmemo"]) if(!check_rights(R_ADMIN)) @@ -1217,13 +1216,13 @@ if(M.client && M.client.holder) return //admins cannot be banned. Even if they could, the ban doesn't affect them anyway - switch(alert("Temporary Ban for [M.ckey]?",,"Yes","No", "Cancel")) + switch(alert("Temporary Ban for [M.key]?",,"Yes","No", "Cancel")) if("Yes") var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null if(mins <= 0) to_chat(usr, "[mins] is not a valid duration.") return - var/reason = input(usr,"Please State Reason For Banning [M.ckey].","Reason") as message|null + var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null if(!reason) return if(!DB_ban_record(BANTYPE_TEMP, M, mins, reason)) @@ -1231,14 +1230,14 @@ return AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins) ban_unban_log_save("[key_name(usr)] has banned [key_name(M)]. - Reason: [reason] - This will be removed in [mins] minutes.") - to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason]") + to_chat(M, "You have been banned by [usr.client.key].\nReason: [reason]") to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes. The round ID is [GLOB.round_id].") var/bran = CONFIG_GET(string/banappeals) if(bran) to_chat(M, "To try to resolve this matter head to [bran]") else to_chat(M, "No ban appeals URL has been set.") - log_admin_private("[key_name(usr)] has banned [M.ckey].\nReason: [key_name(M)]\nThis will be removed in [mins] minutes.") + log_admin_private("[key_name(usr)] has banned [key_name(M)].\nReason: [key_name(M)]\nThis will be removed in [mins] minutes.") var/msg = "[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis will be removed in [mins] minutes." message_admins(msg) var/datum/admin_help/AH = M.client ? M.client.current_ticket : null @@ -1246,7 +1245,7 @@ AH.Resolve() qdel(M.client) if("No") - var/reason = input(usr,"Please State Reason For Banning [M.ckey].","Reason") as message|null + var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null if(!reason) return switch(alert(usr,"IP ban?",,"Yes","No","Cancel")) @@ -1256,7 +1255,7 @@ AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP) if("No") AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0) - to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason]") + to_chat(M, "You have been banned by [usr.client.key].\nReason: [reason]") to_chat(M, "This is a permanent ban. The round ID is [GLOB.round_id].") var/bran = CONFIG_GET(string/banappeals) if(bran) @@ -2349,7 +2348,7 @@ if(alert("Are you sure you want to kick all [afkonly ? "AFK" : ""] clients from the lobby??","Message","Yes","Cancel") != "Yes") to_chat(usr, "Kick clients from lobby aborted") return - var/list/listkicked = kick_clients_in_lobby("You were kicked from the lobby by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.ckey]"].", afkonly) + var/list/listkicked = kick_clients_in_lobby("You were kicked from the lobby by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"].", afkonly) var/strkicked = "" for(var/name in listkicked) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index b76fae94f8..603e4daf2d 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -21,10 +21,10 @@ /client/proc/SDQL2_query(query_text as message) set category = "Debug" if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe. - message_admins("ERROR: Non-admin [key_name(usr, usr.client)] attempted to execute a SDQL query!") - log_admin("Non-admin [usr.ckey]([usr]) attempted to execute a SDQL query!") + message_admins("ERROR: Non-admin [key_name(usr)] attempted to execute a SDQL query!") + log_admin("Non-admin [key_name(usr)] attempted to execute a SDQL query!") return FALSE - var/list/results = world.SDQL2_query(query_text, key_name_admin(usr), "[usr.ckey]([usr])") + var/list/results = world.SDQL2_query(query_text, key_name_admin(usr), "[key_name(usr)]") for(var/I in 1 to 3) to_chat(usr, results[I]) SSblackbox.record_feedback("nested tally", "SDQL query", 1, list(ckey, query_text)) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index a71e0edc98..572e685e1c 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -667,7 +667,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/is_antag = 0 if(found.mind && found.mind.special_role) is_antag = 1 - founds += "Name: [found.name]([found.real_name]) Ckey: [found.ckey] [is_antag ? "(Antag)" : null] " + founds += "Name: [found.name]([found.real_name]) Key: [found.key] Ckey: [found.ckey] [is_antag ? "(Antag)" : null] " msg += "[original_word](?|F) " continue msg += "[original_word] " diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index aedda8c5da..8700870470 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -494,7 +494,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) set desc = "Direct intervention" if(M.ckey) - if(alert("This mob is being controlled by [M.ckey]. Are you sure you wish to assume control of it? [M.ckey] will be made a ghost.",,"Yes","No") != "Yes") + if(alert("This mob is being controlled by [M.key]. Are you sure you wish to assume control of it? [M.key] will be made a ghost.",,"Yes","No") != "Yes") return else var/mob/dead/observer/ghost = new/mob/dead/observer(M,1) diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 899c0a3933..8559a3235e 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -265,9 +265,9 @@ GLOBAL_VAR_INIT(say_disabled, FALSE) GLOB.say_disabled = !GLOB.say_disabled if(GLOB.say_disabled) - message_admins("[src.ckey] used 'Disable all communication verbs', killing all communication methods.") + message_admins("[key] used 'Disable all communication verbs', killing all communication methods.") else - message_admins("[src.ckey] used 'Disable all communication verbs', restoring all communication methods.") + message_admins("[key] used 'Disable all communication verbs', restoring all communication methods.") //This generates the icon states for job starting location landmarks. /client/proc/create_mapping_job_icons() diff --git a/code/modules/assembly/doorcontrol.dm b/code/modules/assembly/doorcontrol.dm index 6780f23677..51b0be95b6 100644 --- a/code/modules/assembly/doorcontrol.dm +++ b/code/modules/assembly/doorcontrol.dm @@ -55,7 +55,7 @@ if(specialfunctions & SHOCK) if(D.secondsElectrified) D.secondsElectrified = -1 - LAZYADD(D.shockedby, "\[[time_stamp()]\][usr](ckey:[usr.ckey])") + LAZYADD(D.shockedby, "\[[time_stamp()]\] [key_name(usr)]") add_logs(usr, D, "electrified") else D.secondsElectrified = 0 diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 626b5eb699..50595e7468 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -339,6 +339,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) send2irc_adminless_only("new_byond_user", "[key_name(src)] (IP: [address], ID: [computer_id]) is a new BYOND account [account_age] day[(account_age==1?"":"s")] old, created on [account_join_date].") get_message_output("watchlist entry", ckey) check_ip_intel() + validate_key_in_db() send_resources() @@ -484,7 +485,8 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) new_player = 1 account_join_date = sanitizeSQL(findJoinDate()) - var/datum/DBQuery/query_add_player = SSdbcore.NewQuery("INSERT INTO [format_table_name("player")] (`ckey`, `firstseen`, `firstseen_round_id`, `lastseen`, `lastseen_round_id`, `ip`, `computerid`, `lastadminrank`, `accountjoindate`) VALUES ('[sql_ckey]', Now(), '[GLOB.round_id]', Now(), '[GLOB.round_id]', INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]', [account_join_date ? "'[account_join_date]'" : "NULL"])") + var/sql_key = sanitizeSQL(key) + var/datum/DBQuery/query_add_player = SSdbcore.NewQuery("INSERT INTO [format_table_name("player")] (`ckey`, `byond_key`, `firstseen`, `firstseen_round_id`, `lastseen`, `lastseen_round_id`, `ip`, `computerid`, `lastadminrank`, `accountjoindate`) VALUES ('[sql_ckey]', '[sql_key]', Now(), '[GLOB.round_id]', Now(), '[GLOB.round_id]', INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]', [account_join_date ? "'[account_join_date]'" : "NULL"])") if(!query_add_player.Execute()) qdel(query_client_in_db) qdel(query_add_player) @@ -535,7 +537,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) /client/proc/findJoinDate() var/list/http = world.Export("http://byond.com/members/[ckey]?format=text") if(!http) - log_world("Failed to connect to byond age check for [ckey]") + log_world("Failed to connect to byond member page to age check [ckey]") return var/F = file2text(http["CONTENT"]) if(F) @@ -545,6 +547,32 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) else CRASH("Age check regex failed for [src.ckey]") +/client/proc/validate_key_in_db() + var/sql_ckey = sanitizeSQL(ckey) + var/sql_key + var/datum/DBQuery/query_check_byond_key = SSdbcore.NewQuery("SELECT byond_key FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'") + if(!query_check_byond_key.Execute()) + qdel(query_check_byond_key) + return + if(query_check_byond_key.NextRow()) + sql_key = query_check_byond_key.item[1] + qdel(query_check_byond_key) + if(key != sql_key) + var/list/http = world.Export("http://byond.com/members/[ckey]?format=text") + if(!http) + log_world("Failed to connect to byond member page to get changed key for [ckey]") + return + var/F = file2text(http["CONTENT"]) + if(F) + var/regex/R = regex("\\tkey = \"(.+)\"") + if(R.Find(F)) + var/web_key = sanitizeSQL(R.group[1]) + var/datum/DBQuery/query_update_byond_key = SSdbcore.NewQuery("UPDATE [format_table_name("player")] SET byond_key = '[web_key]' WHERE ckey = '[sql_ckey]'") + query_update_byond_key.Execute() + qdel(query_update_byond_key) + else + CRASH("Key check regex failed for [ckey]") + /client/proc/check_randomizer(topic) . = FALSE if (connection != "seeker") @@ -653,7 +681,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) qdel(query_get_notes) return qdel(query_get_notes) - create_message("note", ckey, system_ckey, message, null, null, 0, 0) + create_message("note", key, system_ckey, message, null, null, 0, 0) /client/proc/check_ip_intel() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 56dfe5e6a1..2291d59646 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -937,7 +937,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(href_list["jobbancheck"]) var/job = sanitizeSQL(href_list["jobbancheck"]) var/sql_ckey = sanitizeSQL(user.ckey) - var/datum/DBQuery/query_get_jobban = SSdbcore.NewQuery("SELECT reason, bantime, duration, expiration_time, a_ckey FROM [format_table_name("ban")] WHERE ckey = '[sql_ckey]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned) AND job = '[job]'") + var/datum/DBQuery/query_get_jobban = SSdbcore.NewQuery("SELECT reason, bantime, duration, expiration_time, (SELECT byond_key FROM [format_table_name("player")] WHERE [format_table_name("player")].ckey = [format_table_name("ban")].a_ckey) FROM [format_table_name("ban")] WHERE ckey = '[sql_ckey]' AND (bantype = 'JOB_PERMABAN' OR (bantype = 'JOB_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned) AND job = '[job]'") if(!query_get_jobban.warn_execute()) qdel(query_get_jobban) return @@ -946,9 +946,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/bantime = query_get_jobban.item[2] var/duration = query_get_jobban.item[3] var/expiration_time = query_get_jobban.item[4] - var/a_ckey = query_get_jobban.item[5] + var/admin_key = query_get_jobban.item[5] var/text - text = "You, or another user of this computer, ([user.ckey]) is banned from playing [job]. The ban reason is:
    [reason]
    This ban was applied by [a_ckey] on [bantime]" + text = "You, or another user of this computer, ([user.key]) is banned from playing [job]. The ban reason is:
    [reason]
    This ban was applied by [admin_key] on [bantime]" if(text2num(duration) > 0) text += ". The ban is for [duration] minutes and expires on [expiration_time] (server time)" text += ".
    " diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index dfc917984a..8ae63a8a76 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -423,8 +423,9 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums var/sqlauthor = sanitizeSQL(scanner.cache.author) var/sqlcontent = sanitizeSQL(scanner.cache.dat) var/sqlcategory = sanitizeSQL(upload_category) + var/sqlckey = sanitizeSQL(usr.ckey) var/msg = "[key_name(usr)] has uploaded the book titled [scanner.cache.name], [length(scanner.cache.dat)] signs" - var/datum/DBQuery/query_library_upload = SSdbcore.NewQuery("INSERT INTO [format_table_name("library")] (author, title, content, category, ckey, datetime, round_id_created) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]', '[usr.ckey]', Now(), '[GLOB.round_id]')") + var/datum/DBQuery/query_library_upload = SSdbcore.NewQuery("INSERT INTO [format_table_name("library")] (author, title, content, category, ckey, datetime, round_id_created) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]', '[sqlckey]', Now(), '[GLOB.round_id]')") if(!query_library_upload.Execute()) qdel(query_library_upload) alert("Database error encountered uploading to Archive") diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm index 388f63961b..5ac1b4adb5 100644 --- a/code/modules/mob/dead/new_player/poll.dm +++ b/code/modules/mob/dead/new_player/poll.dm @@ -375,9 +375,9 @@ if (!usr || !src) return 0 //we gots ourselfs a dirty cheater on our hands! - log_game("[key_name(usr)] attempted to rig the vote by voting as [ckey]") - message_admins("[key_name_admin(usr)] attempted to rig the vote by voting as [ckey]") - to_chat(usr, "You don't seem to be [ckey].") + log_game("[key_name(usr)] attempted to rig the vote by voting as [key]") + message_admins("[key_name_admin(usr)] attempted to rig the vote by voting as [key]") + to_chat(usr, "You don't seem to be [key].") to_chat(src, "Something went horribly wrong processing your vote. Please contact an administrator, they should have gotten a message about this") return 0 return 1 @@ -579,7 +579,7 @@ return 1 var/i if(query_multi_choicelen.NextRow()) - i = text2num(query_multi_choicelen.item[1]) + i = text2num(query_multi_choicelen.item[1]) qdel(query_multi_choicelen) var/datum/DBQuery/query_multi_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") if(!query_multi_hasvoted.warn_execute()) diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index df1f9fdfbd..6c685ebe89 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -102,9 +102,8 @@ playsound(user, "explosion", 100, 1) var/turf/starting = get_turf(user) var/turf/targturf = get_turf(target) - var/log_str = "Blast wave fired from [ADMIN_VERBOSEJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]." - message_admins(log_str) - log_game(log_str) + message_admins("Blast wave fired from [ADMIN_VERBOSEJMP(starting)] at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [key_name_admin(user)] with power [heavy]/[medium]/[light].") + log_game("Blast wave fired from [AREACOORD(starting)] at [AREACOORD(targturf)] ([target.name]) by [key_name(user)] with power [heavy]/[medium]/[light].") var/obj/item/projectile/blastwave/BW = new(loc, heavy, medium, light) BW.hugbox = hugbox BW.preparePixelProjectile(target, get_turf(src), params, 0) @@ -158,4 +157,4 @@ lightr = max(lightr - 1, 0) /obj/item/projectile/blastwave/ex_act() - return \ No newline at end of file + return diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 0ba781d962..1092e63376 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -143,7 +143,7 @@ if(L != user) add_logs(user, L, "injected", src, addition="which had [contained]") else - log_attack("[user.name] ([user.ckey]) injected [L.name] ([L.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])") + log_attack("[key_name(user)] injected [key_name(L)] with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])") L.log_message("Injected themselves ([contained]) with [src.name].", INDIVIDUAL_ATTACK_LOG) var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1) From 230e47c0eaae5eabf2db7bf1b5d0c4e541cd97be Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 10 Aug 2018 12:44:14 -0700 Subject: [PATCH 400/403] Configuration entry refactor! (#39608) * Config entry refactor * Fixes * Update configuration.dm --- .../controllers/configuration/config_entry.dm | 18 +++++++---- .../configuration/configuration.dm | 30 ++++++++++++++----- code/modules/admin/admin_verbs.dm | 3 +- code/modules/admin/verbs/debug.dm | 9 ++++++ 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 5314cf19b9..49ff1c8d49 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -18,6 +18,8 @@ var/protection = NONE var/abstract_type = /datum/config_entry //do not instantiate if type matches this + var/vv_VAS = TRUE //Force validate and set on VV. VAS proccall guard will run regardless. + var/dupes_allowed = FALSE /datum/config_entry/New() @@ -40,20 +42,23 @@ . &= !(protection & CONFIG_ENTRY_HIDDEN) /datum/config_entry/vv_edit_var(var_name, var_value) - var/static/list/banned_edits = list(NAMEOF(src, name), NAMEOF(src, default), NAMEOF(src, resident_file), NAMEOF(src, protection), NAMEOF(src, abstract_type), NAMEOF(src, modified), NAMEOF(src, dupes_allowed)) + var/static/list/banned_edits = list(NAMEOF(src, name), NAMEOF(src, vv_VAS), NAMEOF(src, default), NAMEOF(src, resident_file), NAMEOF(src, protection), NAMEOF(src, abstract_type), NAMEOF(src, modified), NAMEOF(src, dupes_allowed)) if(var_name == NAMEOF(src, config_entry_value)) if(protection & CONFIG_ENTRY_LOCKED) return FALSE - . = ValidateAndSet("[var_value]") - if(.) - datum_flags |= DF_VAR_EDITED - return + if(vv_VAS) + . = ValidateAndSet("[var_value]") + if(.) + datum_flags |= DF_VAR_EDITED + return + else + return ..() if(var_name in banned_edits) return FALSE return ..() /datum/config_entry/proc/VASProcCallGuard(str_val) - . = !(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "ValidateAndSet" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") + . = !((protection & CONFIG_ENTRY_LOCKED) && IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "ValidateAndSet" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") if(!.) log_admin_private("Config set of [type] to [str_val] attempted by [key_name(usr)]") @@ -137,6 +142,7 @@ abstract_type = /datum/config_entry/keyed_list config_entry_value = list() dupes_allowed = TRUE + vv_VAS = FALSE //VAS will not allow things like deleting from lists, it'll just bug horribly. var/key_mode var/value_mode var/splitter = " " diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 2b1790c7f8..0232081c1a 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -20,7 +20,17 @@ var/motd +/datum/controller/configuration/proc/admin_reload() + if(IsAdminAdvancedProcCall()) + return + log_admin("[key_name_admin(usr)] has forcefully reloaded the configuration from disk.") + message_admins("[key_name_admin(usr)] has forcefully reloaded the configuration from disk.") + full_wipe() + Load(world.params[OVERRIDE_CONFIG_DIRECTORY_PARAMETER]) + /datum/controller/configuration/proc/Load(_directory) + if(IsAdminAdvancedProcCall()) //If admin proccall is detected down the line it will horribly break everything. + return if(_directory) directory = _directory if(entries) @@ -38,12 +48,18 @@ loadmaplist(CONFIG_MAPS_FILE) LoadMOTD() -/datum/controller/configuration/Destroy() +/datum/controller/configuration/proc/full_wipe() + if(IsAdminAdvancedProcCall()) + return entries_by_type.Cut() QDEL_LIST_ASSOC_VAL(entries) + entries = null QDEL_LIST_ASSOC_VAL(maplist) + maplist = null QDEL_NULL(defaultmap) +/datum/controller/configuration/Destroy() + full_wipe() config = null return ..() @@ -168,9 +184,6 @@ stat("[name]:", statclick) /datum/controller/configuration/proc/Get(entry_type) - if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") - log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") - return var/datum/config_entry/E = entry_type var/entry_is_abstract = initial(E.abstract_type) == entry_type if(entry_is_abstract) @@ -178,12 +191,12 @@ E = entries_by_type[entry_type] if(!E) CRASH("Missing config entry for [entry_type]!") + if((E.protection & CONFIG_ENTRY_HIDDEN) && IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") + log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") + return return E.config_entry_value /datum/controller/configuration/proc/Set(entry_type, new_val) - if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") - log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]") - return var/datum/config_entry/E = entry_type var/entry_is_abstract = initial(E.abstract_type) == entry_type if(entry_is_abstract) @@ -191,6 +204,9 @@ E = entries_by_type[entry_type] if(!E) CRASH("Missing config entry for [entry_type]!") + if((E.protection & CONFIG_ENTRY_LOCKED) && IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") + log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]") + return return E.ValidateAndSet("[new_val]") /datum/controller/configuration/proc/LoadModes() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 7ba3e699d4..3ccf7e6e79 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -158,6 +158,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug, world.AVerbsDebug()) /client/proc/pump_random_event, /client/proc/cmd_display_init_log, /client/proc/cmd_display_overlay_log, + /client/proc/reload_configuration, /datum/admins/proc/create_or_modify_area, ) GLOBAL_PROTECT(admin_verbs_possess) @@ -181,7 +182,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( /client/proc/admin_ghost, /client/proc/toggle_view_range, /client/proc/cmd_admin_subtle_message, - /client/proc/cmd_admin_headset_message, + /client/proc/cmd_admin_headset_message, /client/proc/cmd_admin_check_contents, /datum/admins/proc/access_news_network, /client/proc/admin_call_shuttle, diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 8700870470..67b33afcc6 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -1091,3 +1091,12 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) return sort = sortlist[sort] profile_show(src, sort) + +/client/proc/reload_configuration() + set category = "Debug" + set name = "Reload Configuration" + set desc = "Force config reload to world default" + if(!check_rights(R_DEBUG)) + return + if(alert(usr, "Are you absolutely sure you want to reload the configuration from the default path on the disk, wiping any in-round modificatoins?", "Really reset?", "No", "Yes") == "Yes") + config.admin_reload() From 2258b72cad640cf1a2672aacc4a21e0bf18b20f5 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 11 Aug 2018 10:07:55 -0400 Subject: [PATCH 401/403] fixes dirty var FUCK --- _maps/Summer_Ball_Progress_V2.4.dmm | 2 +- harborstation.dme | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/_maps/Summer_Ball_Progress_V2.4.dmm b/_maps/Summer_Ball_Progress_V2.4.dmm index 24a238e4a8..553b856fd0 100644 --- a/_maps/Summer_Ball_Progress_V2.4.dmm +++ b/_maps/Summer_Ball_Progress_V2.4.dmm @@ -363,7 +363,7 @@ "gY" = (/obj/structure/closet/crate/wooden{name = "experimental costume crate"},/obj/item/clothing/mask/chameleon,/obj/item/clothing/head/chameleon,/obj/item/clothing/suit/chameleon,/obj/item/clothing/shoes/chameleon,/obj/item/clothing/under/chameleon,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel/darkbrown,/area/awaymission/beach) "gZ" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/newscaster{pixel_y = -32},/obj/machinery/button/door{id = "Toilet3"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; specialfunctions = 4},/turf/open/floor/plasteel/white,/area/awaymission/beach) "ha" = (/obj/machinery/door/airlock{id_tag = "Toilet3"; name = "Unit 3"},/turf/open/floor/plasteel/freezer,/area/awaymission/beach) -"hb" = (/obj/structure/sink{dir = 4; pixel_x = 11},/obj/structure/mirror{pixel_x = 32; step_x = 0},/turf/open/floor/plasteel/white,/area/awaymission/beach) +"hb" = (/obj/structure/sink{dir = 4; pixel_x = 11},/obj/structure/mirror{pixel_x = 32},/turf/open/floor/plasteel/white,/area/awaymission/beach) "hc" = (/obj/machinery/vending/cigarette,/turf/open/floor/plasteel/vault/side{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/beach) "hd" = (/obj/structure/table/wood,/turf/open/floor/plasteel/vault/side{tag = "icon-vault (NORTHWEST)"; icon_state = "vault"; dir = 9},/area/awaymission/beach) "he" = (/obj/structure/table/wood,/obj/item/clipboard,/obj/item/folder,/obj/item/storage/fancy/candle_box{pixel_x = 5; pixel_y = 5},/obj/item/storage/fancy/candle_box{pixel_x = 3},/turf/open/floor/plasteel/vault/side{tag = "icon-vault (NORTHWEST)"; icon_state = "vault"; dir = 9},/area/awaymission/beach) diff --git a/harborstation.dme b/harborstation.dme index 095c2a9c32..14e9f96f6f 100644 --- a/harborstation.dme +++ b/harborstation.dme @@ -14,7 +14,6 @@ // BEGIN_INCLUDE #include "_maps\_basemap.dm" -#include "_maps\boxstation.dm" #include "_maps\Summer_Ball_Progress_V2.4.dmm" #include "_maps\underwater.dmm" #include "code\_compile_options.dm" From 7035d8484dd995a6e1b3cae928339d4cc4504b38 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 11 Aug 2018 10:15:48 -0400 Subject: [PATCH 402/403] AAAAAAAAAAAAAAA --- _maps/Summer_Ball_Progress_V2.4.dmm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/_maps/Summer_Ball_Progress_V2.4.dmm b/_maps/Summer_Ball_Progress_V2.4.dmm index 553b856fd0..fe343fba9d 100644 --- a/_maps/Summer_Ball_Progress_V2.4.dmm +++ b/_maps/Summer_Ball_Progress_V2.4.dmm @@ -134,7 +134,7 @@ "cD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Station Security"; req_access_txt = "63"; security_level = 6},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel/vault{dir = 5},/area/awaymission/beach) "cE" = (/obj/structure/closet/crate/bin,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel/red/side{dir = 9},/area/awaymission/beach) "cF" = (/obj/structure/closet/secure_closet/security/sec,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel/red/side{dir = 8},/area/awaymission/beach) -"cG" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-21"; pixel_x = 0; pixel_y = 3},/turf/open/floor/plasteel/red/side{dir = 5},/area/awaymission/beach) +"cG" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-21"; pixel_y = 3},/turf/open/floor/plasteel/red/side{dir = 5},/area/awaymission/beach) "cH" = (/turf/open/floor/plasteel/red/side{dir = 9},/area/awaymission/beach) "cI" = (/obj/structure/closet/secure_closet/security/sec,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel/red/side{dir = 1},/area/awaymission/beach) "cJ" = (/obj/structure/closet/secure_closet/security/sec,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel/red/side{dir = 5},/area/awaymission/beach) @@ -156,7 +156,7 @@ "cZ" = (/obj/structure/rack,/obj/item/gun/energy/e_gun/advtaser{pixel_x = -3; pixel_y = 3},/obj/item/gun/energy/e_gun/advtaser,/obj/item/gun/energy/e_gun/advtaser{pixel_x = 3; pixel_y = -3},/turf/open/floor/plasteel/vault{dir = 1},/area/awaymission/beach) "da" = (/obj/structure/rack,/obj/item/storage/box/flashes{pixel_x = 3},/obj/item/storage/box/teargas{pixel_x = 1; pixel_y = -2},/turf/open/floor/plasteel/vault/side,/area/awaymission/beach) "db" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_y = 5},/turf/open/floor/plasteel/vault/side,/area/awaymission/beach) -"dc" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = 0; pixel_y = 5},/turf/open/floor/plasteel/vault/side,/area/awaymission/beach) +"dc" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 5},/turf/open/floor/plasteel/vault/side,/area/awaymission/beach) "dd" = (/obj/structure/table/reinforced,/obj/item/restraints/handcuffs,/obj/item/assembly/flash/handheld,/turf/open/floor/plasteel/red,/area/awaymission/beach) "de" = (/obj/structure/table/reinforced,/obj/item/book/manual/wiki/security_space_law,/obj/item/radio,/obj/structure/reagent_dispensers/peppertank{pixel_x = -32},/turf/open/floor/plasteel/red/side{dir = 5},/area/awaymission/beach) "df" = (/turf/open/floor/plasteel/red/side{dir = 5},/area/awaymission/beach) @@ -181,8 +181,8 @@ "dy" = (/obj/effect/turf_decal/bot,/turf/open/floor/plasteel/red/side{dir = 8},/area/awaymission/beach) "dz" = (/obj/effect/turf_decal/bot,/turf/open/floor/plasteel/red/side{dir = 4},/area/awaymission/beach) "dA" = (/turf/open/floor/plasteel/red/corner,/area/awaymission/beach) -"dB" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-21"; pixel_x = 0; pixel_y = 3},/turf/open/floor/plasteel/red/side{dir = 6},/area/awaymission/beach) -"dC" = (/obj/effect/turf_decal/stripes/line{dir = 10},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-17"; pixel_x = 5; pixel_y = 0},/turf/open/floor/plasteel/red/side{dir = 10},/area/awaymission/beach) +"dB" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-21"; pixel_y = 3},/turf/open/floor/plasteel/red/side{dir = 6},/area/awaymission/beach) +"dC" = (/obj/effect/turf_decal/stripes/line{dir = 10},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-17"; pixel_x = 5},/turf/open/floor/plasteel/red/side{dir = 10},/area/awaymission/beach) "dD" = (/obj/effect/turf_decal/stripes/corner{dir = 1},/turf/open/floor/plasteel/red/side,/area/awaymission/beach) "dE" = (/obj/effect/turf_decal/stripes/corner,/turf/open/floor/plasteel/red/side,/area/awaymission/beach) "dF" = (/obj/effect/turf_decal/stripes/line,/obj/structure/window/spawner/west,/obj/structure/chair/office{icon_state = "chair"; dir = 1},/turf/open/floor/plasteel/red/side,/area/awaymission/beach) @@ -235,7 +235,7 @@ "eA" = (/obj/machinery/vending/security{contraband = list(/obj/item/firing_pin/implant/pindicate = 1, /obj/item/storage/fancy/donut_box = 4); name = "\improper SecMechanicus"; products = list(/obj/item/restraints/handcuffs = 15, /obj/item/restraints/handcuffs/cable/zipties = 20, /obj/item/grenade/flashbang = 5, /obj/item/assembly/flash/handheld = 7, /obj/item/reagent_containers/food/snacks/donut/jelly = 8, /obj/item/storage/box/evidence = 12, /obj/item/flashlight/seclite = 1, /obj/item/restraints/legcuffs/bola/energy = 7)},/obj/effect/turf_decal/bot,/obj/machinery/light{dir = 4},/turf/open/floor/plasteel/red/side{dir = 4},/area/awaymission/beach) "eB" = (/obj/structure/bed,/obj/item/bedsheet,/turf/open/floor/plasteel/vault{dir = 8},/area/awaymission/beach) "eC" = (/obj/machinery/door/airlock/vault{locked = 1; name = "Armoury Vault"; req_access_txt = "58"},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel/vault,/area/awaymission/beach) -"eD" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-21"; pixel_x = 0; pixel_y = 3},/turf/open/floor/plasteel/red/side{dir = 10},/area/awaymission/beach) +"eD" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-21"; pixel_y = 3},/turf/open/floor/plasteel/red/side{dir = 10},/area/awaymission/beach) "eE" = (/turf/open/floor/plasteel/red/side,/area/awaymission/beach) "eF" = (/obj/structure/closet/wardrobe/red,/obj/item/clothing/under/rank/security/grey,/obj/item/clothing/under/rank/security/grey,/obj/item/clothing/under/rank/security/grey,/obj/item/storage/backpack/satchel/sec,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel/red/side{dir = 4},/area/awaymission/beach) "eG" = (/obj/effect/landmark/start/shaft_miner,/turf/open/floor/plasteel/whiteyellow,/area/awaymission/beach) @@ -434,8 +434,8 @@ "ir" = (/obj/machinery/icecream_vat,/turf/open/floor/plasteel/freezer,/area/awaymission/beach) "is" = (/obj/structure/closet/secure_closet/freezer/kitchen{anchored = 1; name = "fridge"},/obj/item/reagent_containers/food/snacks/mint,/turf/open/floor/plasteel/cafeteria,/area/awaymission/beach) "it" = (/turf/open/floor/plasteel/cafeteria,/area/awaymission/beach) -"iu" = (/obj/machinery/button/door{id = "SB2018kitchen"; name = "Ball Food Court Shutters"; pixel_x = 24; pixel_y = 0; req_access_txt = "28"; req_one_access_txt = "0"},/obj/structure/sink{dir = 4; pixel_x = 11},/turf/open/floor/plasteel/cafeteria,/area/awaymission/beach) -"iv" = (/obj/machinery/button/door{id = "SB2018bar"; name = "Ball Bar Shutters"; pixel_x = -24; pixel_y = 0; req_access_txt = "25"; req_one_access_txt = "0"},/obj/structure/sink{dir = 8; pixel_x = -12; pixel_y = 2},/turf/open/floor/plasteel/vault,/area/awaymission/beach) +"iu" = (/obj/machinery/button/door{id = "SB2018kitchen"; name = "Ball Food Court Shutters"; pixel_x = 24; req_access_txt = "28"; req_one_access_txt = "0"},/obj/structure/sink{dir = 4; pixel_x = 11},/turf/open/floor/plasteel/cafeteria,/area/awaymission/beach) +"iv" = (/obj/machinery/button/door{id = "SB2018bar"; name = "Ball Bar Shutters"; pixel_x = -24; req_access_txt = "25"; req_one_access_txt = "0"},/obj/structure/sink{dir = 8; pixel_x = -12; pixel_y = 2},/turf/open/floor/plasteel/vault,/area/awaymission/beach) "iw" = (/turf/open/floor/plasteel/vault,/area/awaymission/beach) "ix" = (/obj/structure/rack,/obj/item/reagent_containers/food/drinks/trophy/bronze_cup,/obj/item/reagent_containers/food/drinks/trophy,/obj/item/reagent_containers/food/drinks/trophy,/obj/item/reagent_containers/food/drinks/trophy,/turf/open/floor/plasteel/bar,/area/awaymission/beach) "iy" = (/obj/structure/rack,/obj/item/storage/box/cups,/obj/item/storage/box/cups,/turf/open/floor/plasteel/bar,/area/awaymission/beach) @@ -459,7 +459,7 @@ "iQ" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id = "SB2018kitchen"; name = "Ball Food Court Shutters"},/turf/open/floor/plasteel/vault,/area/awaymission/beach) "iR" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id = "SB2018bar"; name = "Ball Bar Shutters"},/turf/open/floor/plasteel/vault,/area/awaymission/beach) "iS" = (/obj/machinery/chem_dispenser/drinks{dir = 8},/obj/structure/table/wood,/turf/open/floor/plasteel/vault,/area/awaymission/beach) -"iT" = (/obj/structure/table,/obj/item/gun/ballistic/revolver/doublebarrel{pixel_y = -6},/obj/item/ammo_casing/shotgun/stunslug{name = "emergency taser slug"; pixel_x = -5; pixel_y = 8},/obj/item/ammo_casing/shotgun/stunslug{name = "emergency taser slug"; pixel_x = 0; pixel_y = 8},/obj/item/ammo_casing/shotgun/stunslug{name = "emergency taser slug"; pixel_x = 5; pixel_y = 8},/obj/item/ammo_casing/shotgun/stunslug{name = "emergency taser slug"; pixel_x = 10; pixel_y = 8},/turf/open/floor/plasteel/bar,/area/awaymission/beach) +"iT" = (/obj/structure/table,/obj/item/gun/ballistic/revolver/doublebarrel{pixel_y = -6},/obj/item/ammo_casing/shotgun/stunslug{name = "emergency taser slug"; pixel_x = -5; pixel_y = 8},/obj/item/ammo_casing/shotgun/stunslug{name = "emergency taser slug"; pixel_y = 8},/obj/item/ammo_casing/shotgun/stunslug{name = "emergency taser slug"; pixel_x = 5; pixel_y = 8},/obj/item/ammo_casing/shotgun/stunslug{name = "emergency taser slug"; pixel_x = 10; pixel_y = 8},/turf/open/floor/plasteel/bar,/area/awaymission/beach) "iU" = (/obj/machinery/gibber,/turf/open/floor/plasteel/freezer,/area/awaymission/beach) "iV" = (/obj/machinery/deepfryer,/turf/open/floor/plasteel/cafeteria,/area/awaymission/beach) "iW" = (/obj/machinery/chem_dispenser/drinks/beer{dir = 8},/obj/structure/table/wood,/turf/open/floor/plasteel/vault,/area/awaymission/beach) @@ -491,7 +491,7 @@ "jw" = (/obj/structure/toilet{dir = 8},/turf/open/floor/plasteel/white,/area/awaymission/beach) "jx" = (/obj/structure/bookcase/random,/turf/open/floor/plasteel/vault/side{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/awaymission/beach) "jy" = (/obj/structure/flora/rock,/turf/open/floor/plating/beach/sand,/area/awaymission/beach) -"jz" = (/obj/effect/turf_decal/stripes/line{dir = 5},/obj/machinery/button/door{id = "Race"; name = "Starting Line"; pixel_x = 24; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/open/floor/wood,/area/awaymission/beach) +"jz" = (/obj/effect/turf_decal/stripes/line{dir = 5},/obj/machinery/button/door{id = "Race"; name = "Starting Line"; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/open/floor/wood,/area/awaymission/beach) "jA" = (/obj/structure/toilet{dir = 4},/turf/open/floor/plasteel/white,/area/awaymission/beach) "jB" = (/obj/machinery/shower{icon_state = "shower"; dir = 1},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/white,/area/awaymission/beach) "jC" = (/obj/effect/turf_decal/sand,/turf/open/floor/plasteel/white,/area/awaymission/beach) From f249d71657abea0edeeb6723a22320cbe8c3b17f Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 11 Aug 2018 10:18:49 -0400 Subject: [PATCH 403/403] Fear and loathing in Las Vegas --- _maps/map_files/Mining/Lavaland.dmm | 1 - 1 file changed, 1 deletion(-) diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 23d87f998f..63bb052228 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -3423,7 +3423,6 @@ id = "miningbathroom"; name = "Door Bolt Control"; normaldoorcontrol = 1; - pixel_x = 0; pixel_y = -25; specialfunctions = 4 },

    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 diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 23541a8e4016dbcf7b6d8c29e22839ab1a56fe14..eab768be4310bf833ac7637b2112e6d555588732 100644 GIT binary patch literal 240600 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